|
|
|
|
@ -1,47 +1,52 @@ |
|
|
|
|
package net.pokeranalytics.android.ui.view.rowrepresentable |
|
|
|
|
|
|
|
|
|
import net.pokeranalytics.android.R |
|
|
|
|
import net.pokeranalytics.android.exceptions.PokerAnalyticsException |
|
|
|
|
import net.pokeranalytics.android.model.Criteria |
|
|
|
|
import net.pokeranalytics.android.model.filter.QueryCondition |
|
|
|
|
import net.pokeranalytics.android.model.filter.mapFirstCondition |
|
|
|
|
import net.pokeranalytics.android.model.realm.CustomField |
|
|
|
|
import net.pokeranalytics.android.ui.view.RowRepresentable |
|
|
|
|
import net.pokeranalytics.android.ui.view.RowViewType |
|
|
|
|
|
|
|
|
|
enum class FilterSectionRow(override val resId: Int?) : RowRepresentable { |
|
|
|
|
CASH_TOURNAMENT(R.string.cash_or_tournament), |
|
|
|
|
LIVE_ONLINE(R.string.live_or_online), |
|
|
|
|
GAME(R.string.games), |
|
|
|
|
LIMIT_TYPE(R.string.limits), |
|
|
|
|
TABLE_SIZE(R.string.table_sizes), |
|
|
|
|
DYNAMIC_DATE(R.string.dynamic_date), |
|
|
|
|
FIXED_DATE(R.string.fixed_date), |
|
|
|
|
DURATION(R.string.duration), |
|
|
|
|
YEAR(R.string.year), |
|
|
|
|
WEEKDAYS_OR_WEEKEND(R.string.weekdays_or_weekend), |
|
|
|
|
DAY_OF_WEEK(R.string.day_of_the_week), |
|
|
|
|
MONTH_OF_YEAR(R.string.month_of_the_year), |
|
|
|
|
SESSION_DURATION(R.string.session_duration), |
|
|
|
|
TIME_FRAME_RANGE(R.string.hour_slot), |
|
|
|
|
SESSIONS(R.string.sessions), |
|
|
|
|
BLIND(R.string.blinds), |
|
|
|
|
CASH_RE_BUY_COUNT(R.string.rebuy_count), |
|
|
|
|
TOURNAMENT_TYPE(R.string.tournament_types), |
|
|
|
|
TOURNAMENT_NAME(R.string.tournament_name), |
|
|
|
|
TOURNAMENT_FEATURE(R.string.tournament_feature), |
|
|
|
|
COMPLETION_PERCENTAGE(R.string.tournament_completion_percentage_interval), |
|
|
|
|
TOURNAMENT_FINAL_POSITION(R.string.final_position), |
|
|
|
|
TOURNAMENT_NUMBER_OF_PLAYER(R.string.players_count), |
|
|
|
|
TOURNAMENT_RE_BUY_COUNT(R.string.rebuy_count), |
|
|
|
|
TOURNAMENT_ENTRY_FEE(R.string.buyin), |
|
|
|
|
MULTI_TABLING(R.string.number_of_tables), |
|
|
|
|
VALUE(R.string.value), |
|
|
|
|
LOCATION(R.string.locations), |
|
|
|
|
BANKROLL(R.string.bankrolls), |
|
|
|
|
NUMBER_OF_PLAYERS(R.string.number_of_players), |
|
|
|
|
MULTI_PLAYER(R.string.multiplayer), |
|
|
|
|
NUMBER_OF_REBUY(R.string.number_of_buyins), |
|
|
|
|
TRANSACTION_TYPES(R.string.operation_types), |
|
|
|
|
; |
|
|
|
|
sealed class FilterSectionRow(override val resId: Int?) : RowRepresentable { |
|
|
|
|
object CashOrTournament: FilterSectionRow(R.string.cash_or_tournament) |
|
|
|
|
object LiveOrOnline: FilterSectionRow(R.string.live_or_online) |
|
|
|
|
object Game: FilterSectionRow(R.string.games) |
|
|
|
|
object LimitType: FilterSectionRow(R.string.limits) |
|
|
|
|
object TableSize: FilterSectionRow(R.string.table_sizes) |
|
|
|
|
object DynamicDate: FilterSectionRow(R.string.dynamic_date) |
|
|
|
|
object FixedDate: FilterSectionRow(R.string.fixed_date) |
|
|
|
|
object Duration: FilterSectionRow(R.string.duration) |
|
|
|
|
object Year: FilterSectionRow(R.string.year) |
|
|
|
|
object WeekdayOrWeekend: FilterSectionRow(R.string.weekdays_or_weekend) |
|
|
|
|
object DayOfWeek: FilterSectionRow(R.string.day_of_the_week) |
|
|
|
|
object MonthOfYear: FilterSectionRow(R.string.month_of_the_year) |
|
|
|
|
object SessionDuration: FilterSectionRow(R.string.session_duration) |
|
|
|
|
object TimeFrameRange: FilterSectionRow(R.string.hour_slot) |
|
|
|
|
object Sessions: FilterSectionRow(R.string.sessions) |
|
|
|
|
object Blind: FilterSectionRow(R.string.blinds) |
|
|
|
|
object CashRebuyCount: FilterSectionRow(R.string.rebuy_count) |
|
|
|
|
object TournamentType: FilterSectionRow(R.string.tournament_types) |
|
|
|
|
object TournamentName: FilterSectionRow(R.string.tournament_name) |
|
|
|
|
object TournamentFeature: FilterSectionRow(R.string.tournament_feature) |
|
|
|
|
object CompletionPercentage: FilterSectionRow(R.string.tournament_completion_percentage_interval) |
|
|
|
|
object TournamentFinalPosition: FilterSectionRow(R.string.final_position) |
|
|
|
|
object TournamentNumberOfPlayer: FilterSectionRow(R.string.players_count) |
|
|
|
|
object TournamentRebuyCount: FilterSectionRow(R.string.rebuy_count) |
|
|
|
|
object TournamentEntryFee: FilterSectionRow(R.string.buyin) |
|
|
|
|
object MultiTabling: FilterSectionRow(R.string.number_of_tables) |
|
|
|
|
object Value: FilterSectionRow(R.string.value) |
|
|
|
|
object Location: FilterSectionRow(R.string.locations) |
|
|
|
|
object Bankroll: FilterSectionRow(R.string.bankrolls) |
|
|
|
|
object NumberOfPlayers: FilterSectionRow(R.string.number_of_players) |
|
|
|
|
object MultiPlayer: FilterSectionRow(R.string.multiplayer) |
|
|
|
|
object NumberOfRebuy: FilterSectionRow(R.string.number_of_buyins) |
|
|
|
|
object TransactionType: FilterSectionRow(R.string.operation_types) |
|
|
|
|
|
|
|
|
|
data class CustomField(var customField:net.pokeranalytics.android.model.realm.CustomField): FilterSectionRow(customField.resId) { |
|
|
|
|
override val name = this.customField::class.simpleName ?: throw PokerAnalyticsException.FilterElementUnknownName |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private enum class SelectionType { |
|
|
|
|
SINGLE, |
|
|
|
|
@ -50,6 +55,8 @@ enum class FilterSectionRow(override val resId: Int?) : RowRepresentable { |
|
|
|
|
|
|
|
|
|
override val viewType: Int = RowViewType.HEADER_TITLE.ordinal |
|
|
|
|
|
|
|
|
|
open val name = this::class.simpleName ?: throw PokerAnalyticsException.FilterElementUnknownName |
|
|
|
|
|
|
|
|
|
val allowMultiSelection: Boolean |
|
|
|
|
get() = (this.selectionType == SelectionType.MULTIPLE) |
|
|
|
|
|
|
|
|
|
@ -61,13 +68,13 @@ enum class FilterSectionRow(override val resId: Int?) : RowRepresentable { |
|
|
|
|
when (this@FilterSectionRow) { |
|
|
|
|
|
|
|
|
|
// General |
|
|
|
|
CASH_TOURNAMENT -> Criteria.SessionTypes.queryConditions.mapFirstCondition() |
|
|
|
|
LIVE_ONLINE -> Criteria.BankrollTypes.queryConditions.mapFirstCondition() |
|
|
|
|
GAME -> Criteria.Games.queryConditions.mapFirstCondition() |
|
|
|
|
LIMIT_TYPE -> Criteria.Limits.queryConditions.mapFirstCondition() |
|
|
|
|
TABLE_SIZE -> Criteria.TableSizes.queryConditions.mapFirstCondition() |
|
|
|
|
CashOrTournament -> Criteria.SessionTypes.queryConditions.mapFirstCondition() |
|
|
|
|
LiveOrOnline -> Criteria.BankrollTypes.queryConditions.mapFirstCondition() |
|
|
|
|
Game -> Criteria.Games.queryConditions.mapFirstCondition() |
|
|
|
|
LimitType -> Criteria.Limits.queryConditions.mapFirstCondition() |
|
|
|
|
TableSize -> Criteria.TableSizes.queryConditions.mapFirstCondition() |
|
|
|
|
// Date |
|
|
|
|
DYNAMIC_DATE -> arrayListOf( |
|
|
|
|
DynamicDate -> arrayListOf( |
|
|
|
|
QueryCondition.IsToday, |
|
|
|
|
QueryCondition.WasYesterday, |
|
|
|
|
QueryCondition.WasTodayAndYesterday, |
|
|
|
|
@ -75,45 +82,56 @@ enum class FilterSectionRow(override val resId: Int?) : RowRepresentable { |
|
|
|
|
QueryCondition.DuringThisMonth, |
|
|
|
|
QueryCondition.DuringThisYear |
|
|
|
|
) |
|
|
|
|
FIXED_DATE -> arrayListOf(QueryCondition.StartedFromDate(), QueryCondition.EndedToDate()) |
|
|
|
|
DURATION -> arrayListOf(QueryCondition.PastDay()) |
|
|
|
|
WEEKDAYS_OR_WEEKEND -> arrayListOf(QueryCondition.IsWeekDay, QueryCondition.IsWeekEnd) |
|
|
|
|
YEAR -> Criteria.Years.queryConditions.mapFirstCondition() |
|
|
|
|
DAY_OF_WEEK -> Criteria.DaysOfWeek.queryConditions.mapFirstCondition() |
|
|
|
|
MONTH_OF_YEAR -> Criteria.MonthsOfYear.queryConditions.mapFirstCondition() |
|
|
|
|
FixedDate -> arrayListOf(QueryCondition.StartedFromDate(), QueryCondition.EndedToDate()) |
|
|
|
|
Duration -> arrayListOf(QueryCondition.PastDay()) |
|
|
|
|
WeekdayOrWeekend -> arrayListOf(QueryCondition.IsWeekDay, QueryCondition.IsWeekEnd) |
|
|
|
|
Year -> Criteria.Years.queryConditions.mapFirstCondition() |
|
|
|
|
DayOfWeek -> Criteria.DaysOfWeek.queryConditions.mapFirstCondition() |
|
|
|
|
MonthOfYear -> Criteria.MonthsOfYear.queryConditions.mapFirstCondition() |
|
|
|
|
|
|
|
|
|
// Duration |
|
|
|
|
SESSION_DURATION -> QueryCondition.moreOrLess<QueryCondition.Duration>() |
|
|
|
|
TIME_FRAME_RANGE -> arrayListOf(QueryCondition.StartedFromTime(), QueryCondition.EndedToTime()) |
|
|
|
|
SessionDuration -> QueryCondition.moreOrLess<QueryCondition.Duration>() |
|
|
|
|
TimeFrameRange -> arrayListOf(QueryCondition.StartedFromTime(), QueryCondition.EndedToTime()) |
|
|
|
|
|
|
|
|
|
// Sessions |
|
|
|
|
//SESSIONS -> arrayListOf(QueryCondition.LastGame(), QueryCondition.LastSession()) |
|
|
|
|
//Sessions -> arrayListOf(QueryCondition.LastGame(), QueryCondition.LastSession()) |
|
|
|
|
|
|
|
|
|
// Cash |
|
|
|
|
BLIND -> Criteria.Blinds.queryConditions.mapFirstCondition() |
|
|
|
|
// CASH_RE_BUY_COUNT -> QueryCondition.moreOrLess<QueryCondition.Rebuy>() |
|
|
|
|
Blind -> Criteria.Blinds.queryConditions.mapFirstCondition() |
|
|
|
|
// CashRebuyCount -> QueryCondition.moreOrLess<QueryCondition.Rebuy>() |
|
|
|
|
|
|
|
|
|
// Tournament |
|
|
|
|
TOURNAMENT_TYPE -> Criteria.TournamentTypes.queryConditions.mapFirstCondition() |
|
|
|
|
// COMPLETION_PERCENTAGE -> arrayListOf() |
|
|
|
|
|
|
|
|
|
TOURNAMENT_FINAL_POSITION -> QueryCondition.moreOrLess<QueryCondition.TournamentFinalPosition>() |
|
|
|
|
TOURNAMENT_NUMBER_OF_PLAYER -> QueryCondition.moreOrLess<QueryCondition.TournamentNumberOfPlayer>() |
|
|
|
|
TOURNAMENT_ENTRY_FEE -> Criteria.TournamentFees.queryConditions.mapFirstCondition() |
|
|
|
|
TOURNAMENT_NAME -> Criteria.TournamentNames.queryConditions.mapFirstCondition() |
|
|
|
|
TOURNAMENT_FEATURE -> Criteria.TournamentFeatures.queryConditions.mapFirstCondition() |
|
|
|
|
LOCATION -> Criteria.Locations.queryConditions.mapFirstCondition() |
|
|
|
|
BANKROLL -> Criteria.Bankrolls.queryConditions.mapFirstCondition() |
|
|
|
|
MULTI_TABLING -> QueryCondition.moreOrLess<QueryCondition.NumberOfTable>() |
|
|
|
|
//NUMBER_OF_PLAYERS -> QueryCondition.moreOrLess<QueryCondition.TournamentNumberOfPlayer>() |
|
|
|
|
NUMBER_OF_REBUY -> QueryCondition.moreOrLess<QueryCondition.NumberOfRebuy>() |
|
|
|
|
// MULTI_PLAYER -> arrayListOf() |
|
|
|
|
|
|
|
|
|
VALUE -> arrayListOf<QueryCondition>().apply { |
|
|
|
|
TournamentType -> Criteria.TournamentTypes.queryConditions.mapFirstCondition() |
|
|
|
|
// CompletionPercentage -> arrayListOf() |
|
|
|
|
|
|
|
|
|
TournamentFinalPosition -> QueryCondition.moreOrLess<QueryCondition.TournamentFinalPosition>() |
|
|
|
|
TournamentNumberOfPlayer -> QueryCondition.moreOrLess<QueryCondition.TournamentNumberOfPlayer>() |
|
|
|
|
TournamentEntryFee -> Criteria.TournamentFees.queryConditions.mapFirstCondition() |
|
|
|
|
TournamentName -> Criteria.TournamentNames.queryConditions.mapFirstCondition() |
|
|
|
|
TournamentFeature -> Criteria.TournamentFeatures.queryConditions.mapFirstCondition() |
|
|
|
|
Location -> Criteria.Locations.queryConditions.mapFirstCondition() |
|
|
|
|
Bankroll -> Criteria.Bankrolls.queryConditions.mapFirstCondition() |
|
|
|
|
MultiTabling -> QueryCondition.moreOrLess<QueryCondition.NumberOfTable>() |
|
|
|
|
//NumberOfPlayers -> QueryCondition.moreOrLess<QueryCondition.TournamentNumberOfPlayer>() |
|
|
|
|
NumberOfRebuy -> QueryCondition.moreOrLess<QueryCondition.NumberOfRebuy>() |
|
|
|
|
// MultiPlayer -> arrayListOf() |
|
|
|
|
|
|
|
|
|
Value -> arrayListOf<QueryCondition>().apply { |
|
|
|
|
addAll(QueryCondition.moreOrLess<QueryCondition.NetAmountWon>()) |
|
|
|
|
addAll(QueryCondition.moreOrLess<QueryCondition.NetAmountLost>()) |
|
|
|
|
} |
|
|
|
|
TRANSACTION_TYPES -> Criteria.TransactionTypes.queryConditions.mapFirstCondition() |
|
|
|
|
TransactionType -> Criteria.TransactionTypes.queryConditions.mapFirstCondition() |
|
|
|
|
is CustomField -> { |
|
|
|
|
if (this@FilterSectionRow.customField.isListType) { |
|
|
|
|
Criteria.ListCustomFields(this@FilterSectionRow.customField).queryConditions.mapFirstCondition() |
|
|
|
|
} else { |
|
|
|
|
QueryCondition.moreOrLess<QueryCondition.CustomFieldNumberQuery>().apply { |
|
|
|
|
this.forEach { |
|
|
|
|
it.customFieldId = this@FilterSectionRow.customField.id |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else -> arrayListOf() |
|
|
|
|
}.apply { |
|
|
|
|
this.forEach { |
|
|
|
|
@ -134,7 +152,7 @@ enum class FilterSectionRow(override val resId: Int?) : RowRepresentable { |
|
|
|
|
private val selectionType: SelectionType |
|
|
|
|
get() { |
|
|
|
|
return when (this) { |
|
|
|
|
CASH_TOURNAMENT, DYNAMIC_DATE, LIVE_ONLINE, SESSIONS -> SelectionType.SINGLE |
|
|
|
|
CashOrTournament, DynamicDate, LiveOrOnline, Sessions -> SelectionType.SINGLE |
|
|
|
|
else -> SelectionType.MULTIPLE |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -142,8 +160,8 @@ enum class FilterSectionRow(override val resId: Int?) : RowRepresentable { |
|
|
|
|
val exclusiveWith: List<FilterSectionRow>? |
|
|
|
|
get() { |
|
|
|
|
return when (this) { |
|
|
|
|
DYNAMIC_DATE -> arrayListOf(FIXED_DATE) |
|
|
|
|
FIXED_DATE -> arrayListOf(DYNAMIC_DATE) |
|
|
|
|
DynamicDate -> arrayListOf(FixedDate) |
|
|
|
|
FixedDate -> arrayListOf(DynamicDate) |
|
|
|
|
else -> null |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|