parent
88f76685df
commit
ff646f6c31
@ -0,0 +1,81 @@ |
|||||||
|
package net.pokeranalytics.android.ui.view.rowrepresentable |
||||||
|
|
||||||
|
import net.pokeranalytics.android.R |
||||||
|
import net.pokeranalytics.android.ui.view.RowRepresentable |
||||||
|
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()); |
||||||
|
*/ |
||||||
|
; |
||||||
|
|
||||||
|
val filterElements : List < RowRepresentable > |
||||||
|
get() { |
||||||
|
return filterSections.flatMap { |
||||||
|
it.filterElements |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private val filterSections : List < FilterSectionDataSource > |
||||||
|
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; |
||||||
|
} |
||||||
|
*/ |
||||||
|
} |
||||||
@ -1,117 +0,0 @@ |
|||||||
package net.pokeranalytics.android.ui.view.rowrepresentable |
|
||||||
|
|
||||||
import net.pokeranalytics.android.R |
|
||||||
import net.pokeranalytics.android.ui.view.RowRepresentable |
|
||||||
import net.pokeranalytics.android.ui.view.RowViewType |
|
||||||
|
|
||||||
|
|
||||||
/* |
|
||||||
enum class FilterCategoryRow(override val resId: Int?, val subCategories:Array<out RowRepresentable>, override val viewType: Int = RowViewType.TITLE_VALUE_ARROW.ordinal) : RowRepresentable { |
|
||||||
GENERAL(R.string.general, GeneralSubCategory.values()), |
|
||||||
DATE, |
|
||||||
DURATION, |
|
||||||
SESSION, |
|
||||||
CASH, |
|
||||||
TOURNAMENT, |
|
||||||
ONLINE, |
|
||||||
RESULT, |
|
||||||
TRANSACTION_TYPES, |
|
||||||
|
|
||||||
// Title Custom fields |
|
||||||
LOCATION, |
|
||||||
BANKROLL, |
|
||||||
PLAYERS; |
|
||||||
|
|
||||||
private enum class GeneralSubCategory(val category : FilterCategoryRow = GENERAL): RowRepresentable { |
|
||||||
CASH_TOURNAMENT, |
|
||||||
LIVE_ONLINE, |
|
||||||
GAME, |
|
||||||
LIMIT_TYPE, |
|
||||||
TABLE_SIZE, |
|
||||||
} |
|
||||||
*/ |
|
||||||
enum class FilterCategoryRow : RowRepresentable { |
|
||||||
|
|
||||||
GENERAL, |
|
||||||
DATE, |
|
||||||
DURATION, |
|
||||||
SESSION, |
|
||||||
CASH, |
|
||||||
TOURNAMENT, |
|
||||||
ONLINE, |
|
||||||
RESULT, |
|
||||||
TRANSACTION_TYPES, |
|
||||||
|
|
||||||
// Title Custom fields |
|
||||||
LOCATION, |
|
||||||
BANKROLL, |
|
||||||
PLAYERS; |
|
||||||
|
|
||||||
override val resId: Int? |
|
||||||
get() { |
|
||||||
return when (this) { |
|
||||||
GENERAL -> R.string.general |
|
||||||
DATE -> R.string.date |
|
||||||
DURATION -> 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 |
|
||||||
LOCATION -> R.string.location |
|
||||||
BANKROLL -> R.string.bankroll |
|
||||||
PLAYERS -> R.string.players |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
override val viewType: Int |
|
||||||
get() { |
|
||||||
return when (this) { |
|
||||||
GENERAL, DATE, DURATION, SESSION, CASH, TOURNAMENT, ONLINE, RESULT, TRANSACTION_TYPES, |
|
||||||
LOCATION, BANKROLL, PLAYERS -> RowViewType.TITLE_VALUE_ARROW.ordinal |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Get subcategories of filters |
|
||||||
*/ |
|
||||||
fun getSubcategories(): ArrayList<FilterSubcategoryRow> { |
|
||||||
val subcategories = ArrayList<FilterSubcategoryRow>() |
|
||||||
|
|
||||||
when (this) { |
|
||||||
GENERAL -> subcategories.addAll( |
|
||||||
arrayListOf( |
|
||||||
FilterSubcategoryRow.CASH_TOURNAMENT, FilterSubcategoryRow.LIVE_ONLINE, FilterSubcategoryRow.GAME, |
|
||||||
FilterSubcategoryRow.LIMIT_TYPE, FilterSubcategoryRow.TABLE_SIZE |
|
||||||
) |
|
||||||
) |
|
||||||
DATE -> subcategories.addAll( |
|
||||||
arrayListOf( |
|
||||||
FilterSubcategoryRow.DYNAMIC_DATE, FilterSubcategoryRow.FIXED_DATE, FilterSubcategoryRow.DURATION, FilterSubcategoryRow.YEAR, |
|
||||||
FilterSubcategoryRow.WEEKDAYS_OR_WEEKEND, FilterSubcategoryRow.DAY_OF_WEEK, FilterSubcategoryRow.MONTH_OF_YEAR |
|
||||||
) |
|
||||||
) |
|
||||||
DURATION -> subcategories.addAll(arrayListOf(FilterSubcategoryRow.SESSION_DURATION, FilterSubcategoryRow.RANGE)) |
|
||||||
SESSION -> subcategories.addAll(arrayListOf()) |
|
||||||
CASH -> subcategories.addAll(arrayListOf(FilterSubcategoryRow.BLINDS, FilterSubcategoryRow.CASH_RE_BUY_COUNT)) |
|
||||||
TOURNAMENT -> subcategories.addAll( |
|
||||||
arrayListOf( |
|
||||||
FilterSubcategoryRow.TOURNAMENT_TYPE, FilterSubcategoryRow.COMPLETION_PERCENTAGE, FilterSubcategoryRow.PLACE, |
|
||||||
FilterSubcategoryRow.PLAYERS_COUNT, FilterSubcategoryRow.TOURNAMENT_RE_BUY_COUNT, FilterSubcategoryRow.BUY_IN |
|
||||||
) |
|
||||||
) |
|
||||||
ONLINE -> subcategories.addAll(arrayListOf(FilterSubcategoryRow.MULTI_TABLING)) |
|
||||||
RESULT -> subcategories.addAll(arrayListOf(FilterSubcategoryRow.VALUE)) |
|
||||||
TRANSACTION_TYPES -> subcategories.addAll(arrayListOf()) |
|
||||||
LOCATION -> subcategories.addAll(arrayListOf(FilterSubcategoryRow.LOCATION)) |
|
||||||
BANKROLL -> subcategories.addAll(arrayListOf(FilterSubcategoryRow.BANKROLL)) |
|
||||||
PLAYERS -> subcategories.addAll(arrayListOf(FilterSubcategoryRow.NUMBER_OF_PLAYERS, FilterSubcategoryRow.MULTI_PLAYER)) |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
return subcategories |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
} |
|
||||||
@ -1,117 +1,96 @@ |
|||||||
package net.pokeranalytics.android.ui.view.rowrepresentable |
package net.pokeranalytics.android.ui.view.rowrepresentable |
||||||
|
|
||||||
|
import io.realm.Realm |
||||||
import net.pokeranalytics.android.R |
import net.pokeranalytics.android.R |
||||||
|
import net.pokeranalytics.android.model.LiveData |
||||||
import 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.RowViewType |
||||||
|
import java.lang.Exception |
||||||
/* |
import java.util.* |
||||||
|
|
||||||
sealed class FilterElement : RowRepresentable { |
sealed class FilterElement : RowRepresentable { |
||||||
class Cash : FilterElement() |
|
||||||
class Tournament : FilterElement() |
|
||||||
data class Game(val game: net.pokeranalytics.android.model.realm.Game) : FilterElement() |
|
||||||
|
|
||||||
|
|
||||||
var value : Any? = null |
companion object { |
||||||
|
fun filterElementsFor(filterSection: FilterSectionDataSource) : List<FilterElement> { |
||||||
override val resId: Int? |
return when (filterSection) { |
||||||
get() { |
FilterSection.CASH_TOURNAMENT -> arrayListOf(Cash, Tournament) |
||||||
return when (this) { |
FilterSection.DYNAMIC_DATE -> arrayListOf(Today, Yesterday, TodayAndYesterday, CurrentWeek, CurrentMonth, CurrentYear) |
||||||
is Cash -> R.string.cash_game |
FilterSection.FIXED_DATE -> arrayListOf(From(), To()) |
||||||
is Tournament -> R.string.tournament |
FilterSection.GAMES -> { |
||||||
else -> null |
val games = arrayListOf<Game>() |
||||||
} |
val realm = Realm.getDefaultInstance() |
||||||
} |
LiveData.GAME.items(realm).forEach { |
||||||
|
val game = Game(it as net.pokeranalytics.android.model.realm.Game) |
||||||
override val viewType: Int |
games.add(game) |
||||||
get() { |
} |
||||||
return when (this) { |
realm.close() |
||||||
else -> RowViewType.TITLE_CHECK.ordinal |
games |
||||||
|
} |
||||||
|
|
||||||
|
else -> throw Exception() //TODO create exception |
||||||
} |
} |
||||||
} |
} |
||||||
|
} |
||||||
|
|
||||||
} |
object Cash : FilterElement() |
||||||
*/ |
object Tournament : FilterElement() |
||||||
enum class FilterRow : RowRepresentable { |
object Today : FilterElement() |
||||||
|
object Yesterday : FilterElement() |
||||||
// General |
object TodayAndYesterday : FilterElement() |
||||||
CASH_GAME, |
object CurrentWeek : FilterElement() |
||||||
TOURNAMENT, |
object CurrentMonth : FilterElement() |
||||||
LIVE, |
object CurrentYear: FilterElement() |
||||||
ONLINE, |
data class From(var date: Date = Date()) : FilterElement() |
||||||
|
data class To(var date: Date = Date()) : FilterElement() |
||||||
|
|
||||||
// Date |
data class Game(val game: net.pokeranalytics.android.model.realm.Game) : FilterElement() |
||||||
TODAY, |
|
||||||
YESTERDAY, |
|
||||||
TODAY_AND_YESTERDAY, |
|
||||||
CURRENT_WEEK, |
|
||||||
CURRENT_MONTH, |
|
||||||
CURRENT_YEAR, |
|
||||||
FROM, |
|
||||||
TO, |
|
||||||
PAST_DAYS, |
|
||||||
WEEKDAYS, |
|
||||||
WEEKEND, |
|
||||||
|
|
||||||
; |
var filterSection: FilterSectionDataSource? = null |
||||||
|
|
||||||
override val resId: Int? |
override val resId: Int? |
||||||
get() { |
get() { |
||||||
return when (this) { |
return when (this) { |
||||||
CASH_GAME -> R.string.cash_game |
is Cash -> R.string.cash_game |
||||||
TOURNAMENT -> R.string.tournament |
is Tournament -> R.string.tournament |
||||||
LIVE -> R.string.live |
is Today -> R.string.today |
||||||
ONLINE -> R.string.online |
is Yesterday -> R.string.yesterday |
||||||
TODAY -> R.string.today |
is TodayAndYesterday -> R.string.yesterday_and_today |
||||||
YESTERDAY -> R.string.yesterday |
is CurrentWeek -> R.string.current_week |
||||||
TODAY_AND_YESTERDAY -> R.string.yesterday_and_today |
is CurrentMonth -> R.string.current_month |
||||||
CURRENT_WEEK -> R.string.current_week |
is CurrentYear -> R.string.current_year |
||||||
CURRENT_MONTH -> R.string.current_month |
is From -> R.string.from |
||||||
CURRENT_YEAR -> R.string.current_year |
is To -> R.string.to |
||||||
FROM -> R.string.from |
|
||||||
TO -> R.string.to |
|
||||||
PAST_DAYS -> R.string.period_in_days |
|
||||||
WEEKDAYS -> R.string.week_days |
|
||||||
WEEKEND -> R.string.weekend |
|
||||||
else -> null |
else -> null |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
override val viewType: Int |
override fun getDisplayName(): String { |
||||||
get() { |
|
||||||
return when (this) { |
|
||||||
FROM, TO -> RowViewType.TITLE_VALUE_CHECK.ordinal |
|
||||||
else -> RowViewType.TITLE_CHECK.ordinal |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
override fun excludedFilterRows(): ArrayList<FilterRow>? { |
|
||||||
return when (this) { |
return when (this) { |
||||||
CASH_GAME, TOURNAMENT -> arrayListOf(CASH_GAME, TOURNAMENT) |
is Game -> game.getDisplayName() |
||||||
LIVE, ONLINE -> arrayListOf(LIVE, ONLINE) |
else -> return super.getDisplayName() |
||||||
else -> ArrayList() |
|
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
override fun excludedFilterSubcategoryRows(): ArrayList<FilterSubcategoryRow>? { |
override val viewType: Int = RowViewType.TITLE_CHECK.ordinal |
||||||
return when (this) { |
|
||||||
TODAY, YESTERDAY, TODAY_AND_YESTERDAY, CURRENT_WEEK, CURRENT_MONTH, CURRENT_YEAR -> arrayListOf(FilterSubcategoryRow.FIXED_DATE) |
|
||||||
FROM, TO -> arrayListOf(FilterSubcategoryRow.DYNAMIC_DATE) |
|
||||||
else -> null |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
val sectionToExclude : List < FilterSectionDataSource > ? |
||||||
|
get() { |
||||||
|
val excluded = arrayListOf<FilterSectionDataSource>() |
||||||
|
this.filterSection?.let { |
||||||
|
if (!it.allowMultiSelection) { |
||||||
|
excluded.add(it) |
||||||
|
} |
||||||
|
it.exclusiveWith?.let { exclusives -> |
||||||
|
excluded.addAll(exclusives) |
||||||
|
} |
||||||
|
|
||||||
|
if (excluded.size > 0) { |
||||||
|
return excluded |
||||||
|
} |
||||||
|
} ?: run { |
||||||
|
return null |
||||||
|
} |
||||||
|
|
||||||
override fun subcategoryRow(): FilterSubcategoryRow? { |
return null |
||||||
return when (this) { |
|
||||||
CASH_GAME, TOURNAMENT -> FilterSubcategoryRow.TOURNAMENT_TYPE |
|
||||||
LIVE, ONLINE -> FilterSubcategoryRow.LIVE_ONLINE |
|
||||||
TODAY, YESTERDAY, TODAY_AND_YESTERDAY, CURRENT_WEEK, CURRENT_MONTH, CURRENT_YEAR -> FilterSubcategoryRow.DYNAMIC_DATE |
|
||||||
FROM, TO -> FilterSubcategoryRow.FIXED_DATE |
|
||||||
PAST_DAYS -> FilterSubcategoryRow.DURATION |
|
||||||
WEEKDAYS, WEEKEND -> FilterSubcategoryRow.WEEKDAYS_OR_WEEKEND |
|
||||||
else -> null |
|
||||||
} |
} |
||||||
} |
|
||||||
|
|
||||||
} |
} |
||||||
Loading…
Reference in new issue