From f5ba73f3a52b7bb80531baf1dbda9b09f3181a94 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Thu, 21 Mar 2019 14:39:05 +0100 Subject: [PATCH] update filters --- .../view/rowrepresentable/FilterCategory.kt | 68 +---- .../ui/view/rowrepresentable/FilterRow.kt | 92 ++++++- .../ui/view/rowrepresentable/FilterSection.kt | 244 ++++++------------ 3 files changed, 166 insertions(+), 238 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategory.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategory.kt index 9ee0c48e..e7be8433 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategory.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategory.kt @@ -7,18 +7,16 @@ import net.pokeranalytics.android.ui.view.RowViewType enum class FilterCategory(override val resId: Int?, override val viewType: Int = RowViewType.TITLE_VALUE_ARROW.ordinal) : RowRepresentable { GENERAL(R.string.general), DATE(R.string.date), - /* - DURATION(R.string.duration, DurationSubCategory.values()), - SESSION(R.string.session, SessionSubCategory.values()), - CASH(R.string.cash, CashSubCategory.values()), - TOURNAMENT(R.string.tournament, TournamentSubCategory.values()), - ONLINE(R.string.online, OnlineSubCategory.values()), - RESULT(R.string.result, ResultSubCategory.values()), - TRANSACTION_TYPES(R.string.operation_types, TransactionSubCategory.values()), - LOCATION(R.string.locations, LocationSubCategory.values()), - BANKROLL(R.string.bankrolls, BankrollSubCategory.values()), - PLAYERS(R.string.players, PlayerSubCategory.values()); - */ + TIME_FRAME(R.string.duration), + SESSION(R.string.session), + CASH(R.string.cash), + TOURNAMENT(R.string.tournament), + ONLINE(R.string.online), + RESULT(R.string.result), + TRANSACTION_TYPES(R.string.operation_types), + LOCATIONS(R.string.locations), + BANKROLLS(R.string.bankrolls), + PLAYERS(R.string.players), ; val filterElements : List < RowRepresentable > @@ -32,50 +30,4 @@ enum class FilterCategory(override val resId: Int?, override val viewType: Int = get() { return FilterSection.filterSectionsFor(this) } - - /* - private enum class DurationSubCategory(val category : FilterCategory = DURATION): RowRepresentable { - SESSION_DURATION, - RANGE, - } - - private enum class CashSubCategory(val category : FilterCategory = CASH): RowRepresentable { - BLINDS, - CASH_RE_BUY_COUNT, - } - - private enum class TournamentSubCategory(val category : FilterCategory = TOURNAMENT): RowRepresentable { - TOURNAMENT_TYPE, - COMPLETION_PERCENTAGE, - PLACE, - PLAYERS_COUNT, - TOURNAMENT_RE_BUY_COUNT, - BUY_IN, - } - - private enum class OnlineSubCategory(val category : FilterCategory = ONLINE): RowRepresentable { - MULTI_TABLING, - } - - private enum class SessionSubCategory(val category : FilterCategory = SESSION): RowRepresentable - - private enum class TransactionSubCategory(val category : FilterCategory = TRANSACTION_TYPES): RowRepresentable - - private enum class ResultSubCategory(val category : FilterCategory = RESULT): RowRepresentable { - VALUE, - } - - private enum class LocationSubCategory(val category : FilterCategory = FilterCategory.LOCATION): RowRepresentable { - LOCATION, - } - - private enum class BankrollSubCategory(val category : FilterCategory = FilterCategory.BANKROLL): RowRepresentable { - BANKROLL, - } - - private enum class PlayerSubCategory(val category : FilterCategory = PLAYERS): RowRepresentable { - NUMBER_OF_PLAYERS, - MULTI_PLAYER; - } - */ } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterRow.kt index ba9e4354..f57c2b64 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterRow.kt @@ -1,12 +1,11 @@ package net.pokeranalytics.android.ui.view.rowrepresentable import io.realm.Realm -import android.text.InputType import net.pokeranalytics.android.R import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.ui.view.RowRepresentable -import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowViewType +import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSection.* import java.lang.Exception import java.util.* @@ -15,27 +14,75 @@ sealed class FilterElement : RowRepresentable { companion object { fun filterElementsFor(filterSection: FilterSectionDataSource) : List { return when (filterSection) { - FilterSection.CASH_TOURNAMENT -> arrayListOf(Cash, Tournament) - FilterSection.DYNAMIC_DATE -> arrayListOf(Today, Yesterday, TodayAndYesterday, CurrentWeek, CurrentMonth, CurrentYear) - FilterSection.FIXED_DATE -> arrayListOf(From(), To()) - FilterSection.GAMES -> { + CASH_TOURNAMENT -> arrayListOf(Cash, Tournament) + LIVE_ONLINE -> arrayListOf(Live, Online) + LIMIT_TYPE -> { + val limits = arrayListOf() + net.pokeranalytics.android.model.Limit.values().forEach { + limits.add(FilterElement.Limit(it)) + } + limits + } + TABLE_SIZE -> { + val tableSizes = arrayListOf() + net.pokeranalytics.android.model.TableSize.all.forEach { + tableSizes.add(FilterElement.TableSize(it)) + } + tableSizes + } + + DYNAMIC_DATE -> arrayListOf(Today, Yesterday, TodayAndYesterday, CurrentWeek, CurrentMonth, CurrentYear) + FIXED_DATE -> arrayListOf(From(), To()) + DURATION -> arrayListOf() + WEEKDAYS_OR_WEEKEND -> arrayListOf(Weekday, Weekend) + DAY_OF_WEEK -> arrayListOf() + MONTH_OF_YEAR -> arrayListOf() + YEAR -> arrayListOf() + + GAME -> { val games = arrayListOf() val realm = Realm.getDefaultInstance() LiveData.GAME.items(realm).forEach { - val game = Game(it as net.pokeranalytics.android.model.realm.Game) + val game = FilterElement.Game(it as net.pokeranalytics.android.model.realm.Game) games.add(game) } realm.close() games } - else -> throw Exception() //TODO create exception + LOCATION -> arrayListOf() + BANKROLL -> arrayListOf() + + MULTI_TABLING -> arrayListOf() + + BLINDS -> arrayListOf() + CASH_RE_BUY_COUNT -> arrayListOf() + BUY_IN -> arrayListOf() + + COMPLETION_PERCENTAGE -> arrayListOf() + NUMBER_OF_PLAYERS -> arrayListOf() + TOURNAMENT_TYPE -> arrayListOf() + PLAYERS_COUNT -> arrayListOf() + PLACE -> arrayListOf() + TOURNAMENT_RE_BUY_COUNT -> arrayListOf() + + MULTI_PLAYER -> arrayListOf() + + RANGE -> arrayListOf() + + SESSION_DURATION -> arrayListOf() + + VALUE -> arrayListOf() + + else -> throw Exception("unknown filtersection") //TODO create exception } } } object Cash : FilterElement() object Tournament : FilterElement() + object Live : FilterElement() + object Online : FilterElement() object Today : FilterElement() object Yesterday : FilterElement() object TodayAndYesterday : FilterElement() @@ -44,8 +91,19 @@ sealed class FilterElement : RowRepresentable { object CurrentYear: FilterElement() data class From(var date: Date = Date()) : FilterElement() data class To(var date: Date = Date()) : FilterElement() - + object Weekday: FilterElement() + object Weekend : FilterElement() + data class Year(val day: Int) : FilterElement() + data class Month(val day: Int) : FilterElement() + data class Day(val day: Int) : FilterElement() + data class PastDays(var lastDays : Int = 0) : FilterElement() + data class Limit(val limit : net.pokeranalytics.android.model.Limit) : FilterElement() + data class TableSize(val tableSize : net.pokeranalytics.android.model.TableSize) : FilterElement() + data class Bankroll(val bankroll: net.pokeranalytics.android.model.realm.Bankroll) : FilterElement() data class Game(val game: net.pokeranalytics.android.model.realm.Game) : FilterElement() + data class Location(val location: net.pokeranalytics.android.model.realm.Location) : FilterElement() + data class TournamentName(val tournamentName: net.pokeranalytics.android.model.realm.TournamentName) : FilterElement() + data class TournamentFeature(val tournamentFeature: net.pokeranalytics.android.model.realm.TournamentFeature) : FilterElement() var filterSection: FilterSectionDataSource? = null @@ -62,7 +120,21 @@ sealed class FilterElement : RowRepresentable { is CurrentYear -> R.string.current_year is From -> R.string.from is To -> R.string.to - else -> null + is Live -> R.string.live + is Online -> R.string.online + is Weekday -> R.string.week_days + is Weekend-> R.string.weekend + is Year-> R.string.year + is Month-> R.string.month_of_the_year + is Day -> R.string.day_of_the_week + is PastDays -> R.string.period_in_days + is Limit -> R.string.limit + is TableSize -> R.string.table_size + is Bankroll -> R.string.bankroll + is Game -> R.string.game + is Location -> R.string.location + is TournamentName -> R.string.tournament_name + is TournamentFeature -> R.string.tournament_feature } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSection.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSection.kt index ac31420e..92ccbab1 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSection.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSection.kt @@ -2,6 +2,7 @@ package net.pokeranalytics.android.ui.view.rowrepresentable import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType +import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategory.* interface FilterSectionDataSource : RowRepresentable { enum class SelectionType { @@ -45,70 +46,86 @@ private interface DefaultFilterSectionDataSource : FilterSectionDataSource { enum class FilterSection(override val resId: Int?): DefaultFilterSectionDataSource, RowRepresentable { CASH_TOURNAMENT(net.pokeranalytics.android.R.string.cash_or_tournament), - GAMES(net.pokeranalytics.android.R.string.games), - /* - LIVE_ONLINE, - GAME, - LIMIT_TYPE, - TABLE_SIZE, - */ - + LIVE_ONLINE(net.pokeranalytics.android.R.string.live_or_online), + GAME(net.pokeranalytics.android.R.string.games), + LIMIT_TYPE(net.pokeranalytics.android.R.string.limits), + TABLE_SIZE(net.pokeranalytics.android.R.string.table_sizes), DYNAMIC_DATE(net.pokeranalytics.android.R.string.dynamic_date), FIXED_DATE(net.pokeranalytics.android.R.string.fixed_date), - /* - DURATION, - YEAR, - WEEKDAYS_OR_WEEKEND, - DAY_OF_WEEK, - MONTH_OF_YEAR, - - // Duration - SESSION_DURATION, - RANGE, - - // Sessions - // - - - // Cash - BLINDS, - CASH_RE_BUY_COUNT, - - // Tournament - TOURNAMENT_TYPE, - COMPLETION_PERCENTAGE, - PLACE, - PLAYERS_COUNT, - TOURNAMENT_RE_BUY_COUNT, - BUY_IN, - - // Online - MULTI_TABLING, - - // Result - VALUE, - - // Transaction types - // - - - // Location - LOCATION, - - // Bankroll - BANKROLL, - - // Players - NUMBER_OF_PLAYERS, - MULTI_PLAYER; - - */ + DURATION(net.pokeranalytics.android.R.string.duration), + YEAR(net.pokeranalytics.android.R.string.year), + WEEKDAYS_OR_WEEKEND(net.pokeranalytics.android.R.string.weekdays_or_weekend), + DAY_OF_WEEK(net.pokeranalytics.android.R.string.day_of_the_week), + MONTH_OF_YEAR(net.pokeranalytics.android.R.string.month_of_the_year), + SESSION_DURATION(net.pokeranalytics.android.R.string.session_duration), + RANGE(net.pokeranalytics.android.R.string.hour_slot), + BLINDS(net.pokeranalytics.android.R.string.blinds), + CASH_RE_BUY_COUNT(net.pokeranalytics.android.R.string.cash_game), + TOURNAMENT_TYPE(net.pokeranalytics.android.R.string.tournament_types), + COMPLETION_PERCENTAGE(net.pokeranalytics.android.R.string.tournament_completion_percentage_interval), + PLACE(net.pokeranalytics.android.R.string.final_position), + PLAYERS_COUNT(net.pokeranalytics.android.R.string.players_count), + TOURNAMENT_RE_BUY_COUNT(net.pokeranalytics.android.R.string.rebuy_count), + BUY_IN(net.pokeranalytics.android.R.string.buyin), + MULTI_TABLING(net.pokeranalytics.android.R.string.multi_tabling), + VALUE(net.pokeranalytics.android.R.string.value), + LOCATION(net.pokeranalytics.android.R.string.locations), + BANKROLL(net.pokeranalytics.android.R.string.bankrolls), + NUMBER_OF_PLAYERS(net.pokeranalytics.android.R.string.number_of_players), + MULTI_PLAYER(net.pokeranalytics.android.R.string.multiplayer), ; companion object { fun filterSectionsFor(category: FilterCategory) : List < FilterSection > { return when (category) { - FilterCategory.GENERAL -> arrayListOf(CASH_TOURNAMENT, GAMES) - FilterCategory.DATE -> arrayListOf(DYNAMIC_DATE, FIXED_DATE) + GENERAL -> arrayListOf( + CASH_TOURNAMENT, + LIVE_ONLINE, + GAME, LIMIT_TYPE, + TABLE_SIZE + ) + DATE -> arrayListOf( + DYNAMIC_DATE, + FIXED_DATE, + DURATION, + YEAR, + WEEKDAYS_OR_WEEKEND, + DAY_OF_WEEK, + MONTH_OF_YEAR + ) + BANKROLLS -> arrayListOf( + BANKROLL + ) + CASH -> arrayListOf( + BLINDS, + CASH_RE_BUY_COUNT + ) + TOURNAMENT -> arrayListOf( + TOURNAMENT_TYPE, + COMPLETION_PERCENTAGE, + PLACE, + PLAYERS_COUNT, + TOURNAMENT_RE_BUY_COUNT, + BUY_IN + ) + ONLINE -> arrayListOf( + MULTI_TABLING + ) + LOCATIONS -> arrayListOf( + LOCATION + ) + PLAYERS -> arrayListOf( + NUMBER_OF_PLAYERS, + MULTI_PLAYER + ) + RESULT -> arrayListOf( + VALUE + ) + + TIME_FRAME -> arrayListOf() + SESSION -> arrayListOf() + TRANSACTION_TYPES -> arrayListOf() } } } @@ -118,7 +135,7 @@ enum class FilterSection(override val resId: Int?): DefaultFilterSectionDataSour override val selectionType: FilterSectionDataSource.SelectionType get() { return when (this) { - CASH_TOURNAMENT, DYNAMIC_DATE -> FilterSectionDataSource.SelectionType.SINGLE + CASH_TOURNAMENT, DYNAMIC_DATE, LIVE_ONLINE -> FilterSectionDataSource.SelectionType.SINGLE else -> FilterSectionDataSource.SelectionType.MULTIPLE } } @@ -136,120 +153,7 @@ enum class FilterSection(override val resId: Int?): DefaultFilterSectionDataSour /* - GAME -> { - val games = realm.copyFromRealm(LiveData.GAME.items(realm) as RealmResults) - games.forEach { - rows.add(FilterElement.Game(game = it)) - } - } - */ - -/* -enum class FilterSection : RowRepresentable { - - // General - CASH_TOURNAMENT, - LIVE_ONLINE, - GAME, - LIMIT_TYPE, - TABLE_SIZE, - - // Date - DYNAMIC_DATE, - FIXED_DATE, - DURATION, - YEAR, - WEEKDAYS_OR_WEEKEND, - DAY_OF_WEEK, - MONTH_OF_YEAR, - - // Duration - SESSION_DURATION, - RANGE, - - // Sessions - // - - - // Cash - BLINDS, - CASH_RE_BUY_COUNT, - - // Tournament - TOURNAMENT_TYPE, - COMPLETION_PERCENTAGE, - PLACE, - PLAYERS_COUNT, - TOURNAMENT_RE_BUY_COUNT, - BUY_IN, - - // Online - MULTI_TABLING, - - // Result - VALUE, - - // Transaction types - // - - - // Location - LOCATION, - - // Bankroll - BANKROLL, - - // Players - NUMBER_OF_PLAYERS, - MULTI_PLAYER; - - enum class Type { - SINGLE, - MULTIPLE, - } - - override val resId: Int? - get() { - return when (this) { - CASH_TOURNAMENT -> net.pokeranalytics.android.R.string.cash_or_tournament - LIVE_ONLINE -> net.pokeranalytics.android.R.string.live_or_online - GAME -> net.pokeranalytics.android.R.string.game - LIMIT_TYPE -> net.pokeranalytics.android.R.string.type_de_limite - TABLE_SIZE -> net.pokeranalytics.android.R.string.table_size - - DYNAMIC_DATE -> net.pokeranalytics.android.R.string.dynamic_date - FIXED_DATE -> net.pokeranalytics.android.R.string.fixed_date - DURATION -> net.pokeranalytics.android.R.string.duration - YEAR -> net.pokeranalytics.android.R.string.year - WEEKDAYS_OR_WEEKEND -> net.pokeranalytics.android.R.string.weekdays_or_weekend - DAY_OF_WEEK -> net.pokeranalytics.android.R.string.day_of_the_week - MONTH_OF_YEAR -> net.pokeranalytics.android.R.string.month_of_the_year - SESSION_DURATION -> net.pokeranalytics.android.R.string.session_duration - RANGE -> net.pokeranalytics.android.R.string.hour_slot - - BLINDS -> net.pokeranalytics.android.R.string.blinds - CASH_RE_BUY_COUNT -> net.pokeranalytics.android.R.string.rebuy_count - - TOURNAMENT_TYPE -> net.pokeranalytics.android.R.string.tournament_type - COMPLETION_PERCENTAGE -> net.pokeranalytics.android.R.string.tournament_completion_percentage_interval - PLACE -> net.pokeranalytics.android.R.string.place - PLAYERS_COUNT -> net.pokeranalytics.android.R.string.players_count - TOURNAMENT_RE_BUY_COUNT -> net.pokeranalytics.android.R.string.rebuy_count - BUY_IN -> net.pokeranalytics.android.R.string.buyin - - MULTI_TABLING -> net.pokeranalytics.android.R.string.multi_tabling - - VALUE -> net.pokeranalytics.android.R.string.value - - LOCATION -> net.pokeranalytics.android.R.string.location - - BANKROLL -> net.pokeranalytics.android.R.string.bankroll - - NUMBER_OF_PLAYERS -> net.pokeranalytics.android.R.string.number_of_players - MULTI_PLAYER -> net.pokeranalytics.android.R.string.multiplayer - } - } - - override val viewType: Int = RowViewType.HEADER_TITLE.ordinal /** * Return the type of the selection