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 |
||||
|
||||
import io.realm.Realm |
||||
import net.pokeranalytics.android.R |
||||
import net.pokeranalytics.android.model.LiveData |
||||
import net.pokeranalytics.android.ui.view.RowRepresentable |
||||
import net.pokeranalytics.android.ui.view.RowViewType |
||||
|
||||
/* |
||||
import java.lang.Exception |
||||
import java.util.* |
||||
|
||||
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 |
||||
|
||||
override val resId: Int? |
||||
get() { |
||||
return when (this) { |
||||
is Cash -> R.string.cash_game |
||||
is Tournament -> R.string.tournament |
||||
else -> null |
||||
companion object { |
||||
fun filterElementsFor(filterSection: FilterSectionDataSource) : List<FilterElement> { |
||||
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 -> { |
||||
val games = arrayListOf<Game>() |
||||
val realm = Realm.getDefaultInstance() |
||||
LiveData.GAME.items(realm).forEach { |
||||
val game = Game(it as net.pokeranalytics.android.model.realm.Game) |
||||
games.add(game) |
||||
} |
||||
realm.close() |
||||
games |
||||
} |
||||
|
||||
override val viewType: Int |
||||
get() { |
||||
return when (this) { |
||||
else -> RowViewType.TITLE_CHECK.ordinal |
||||
else -> throw Exception() //TODO create exception |
||||
} |
||||
} |
||||
} |
||||
|
||||
} |
||||
*/ |
||||
enum class FilterRow : RowRepresentable { |
||||
|
||||
// General |
||||
CASH_GAME, |
||||
TOURNAMENT, |
||||
LIVE, |
||||
ONLINE, |
||||
object Cash : FilterElement() |
||||
object Tournament : FilterElement() |
||||
object Today : FilterElement() |
||||
object Yesterday : FilterElement() |
||||
object TodayAndYesterday : FilterElement() |
||||
object CurrentWeek : FilterElement() |
||||
object CurrentMonth : FilterElement() |
||||
object CurrentYear: FilterElement() |
||||
data class From(var date: Date = Date()) : FilterElement() |
||||
data class To(var date: Date = Date()) : FilterElement() |
||||
|
||||
// Date |
||||
TODAY, |
||||
YESTERDAY, |
||||
TODAY_AND_YESTERDAY, |
||||
CURRENT_WEEK, |
||||
CURRENT_MONTH, |
||||
CURRENT_YEAR, |
||||
FROM, |
||||
TO, |
||||
PAST_DAYS, |
||||
WEEKDAYS, |
||||
WEEKEND, |
||||
data class Game(val game: net.pokeranalytics.android.model.realm.Game) : FilterElement() |
||||
|
||||
; |
||||
var filterSection: FilterSectionDataSource? = null |
||||
|
||||
override val resId: Int? |
||||
get() { |
||||
return when (this) { |
||||
CASH_GAME -> R.string.cash_game |
||||
TOURNAMENT -> R.string.tournament |
||||
LIVE -> R.string.live |
||||
ONLINE -> R.string.online |
||||
TODAY -> R.string.today |
||||
YESTERDAY -> R.string.yesterday |
||||
TODAY_AND_YESTERDAY -> R.string.yesterday_and_today |
||||
CURRENT_WEEK -> R.string.current_week |
||||
CURRENT_MONTH -> R.string.current_month |
||||
CURRENT_YEAR -> R.string.current_year |
||||
FROM -> R.string.from |
||||
TO -> R.string.to |
||||
PAST_DAYS -> R.string.period_in_days |
||||
WEEKDAYS -> R.string.week_days |
||||
WEEKEND -> R.string.weekend |
||||
is Cash -> R.string.cash_game |
||||
is Tournament -> R.string.tournament |
||||
is Today -> R.string.today |
||||
is Yesterday -> R.string.yesterday |
||||
is TodayAndYesterday -> R.string.yesterday_and_today |
||||
is CurrentWeek -> R.string.current_week |
||||
is CurrentMonth -> R.string.current_month |
||||
is CurrentYear -> R.string.current_year |
||||
is From -> R.string.from |
||||
is To -> R.string.to |
||||
else -> null |
||||
} |
||||
} |
||||
|
||||
override val viewType: Int |
||||
get() { |
||||
override fun getDisplayName(): String { |
||||
return when (this) { |
||||
FROM, TO -> RowViewType.TITLE_VALUE_CHECK.ordinal |
||||
else -> RowViewType.TITLE_CHECK.ordinal |
||||
is Game -> game.getDisplayName() |
||||
else -> return super.getDisplayName() |
||||
} |
||||
} |
||||
|
||||
override fun excludedFilterRows(): ArrayList<FilterRow>? { |
||||
return when (this) { |
||||
CASH_GAME, TOURNAMENT -> arrayListOf(CASH_GAME, TOURNAMENT) |
||||
LIVE, ONLINE -> arrayListOf(LIVE, ONLINE) |
||||
else -> ArrayList() |
||||
} |
||||
} |
||||
override val viewType: Int = RowViewType.TITLE_CHECK.ordinal |
||||
|
||||
override fun excludedFilterSubcategoryRows(): ArrayList<FilterSubcategoryRow>? { |
||||
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) |
||||
} |
||||
|
||||
|
||||
override fun subcategoryRow(): FilterSubcategoryRow? { |
||||
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 |
||||
if (excluded.size > 0) { |
||||
return excluded |
||||
} |
||||
} ?: run { |
||||
return null |
||||
} |
||||
|
||||
return null |
||||
} |
||||
} |
||||
Loading…
Reference in new issue