Merge branch 'master' of gitlab.com:stax-river/poker-analytics

feature/top10
Aurelien Hubert 7 years ago
commit fe43a537a6
  1. 2
      app/src/main/java/net/pokeranalytics/android/model/filter/DateFilterable.kt
  2. 2
      app/src/main/java/net/pokeranalytics/android/model/filter/SessionFilterable.kt
  3. 4
      app/src/main/java/net/pokeranalytics/android/model/filter/interfaces/ValueFilterable.kt
  4. 68
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategory.kt
  5. 92
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterRow.kt
  6. 244
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSection.kt

@ -27,7 +27,7 @@ enum class DateFilterable : Filterable {
override var valueMap : Map<String, Any?>? = null override var valueMap : Map<String, Any?>? = null
override val filterValuesExceptedKeys : Array<String>? override val filterValuesExpectedKeys : Array<String>?
get() { get() {
return when (this) { return when (this) {
STARTED_FROM_DATE, STARTED_TO_DATE, ENDED_FROM_DATE, ENDED_TO_DATE -> arrayOf("date") STARTED_FROM_DATE, STARTED_TO_DATE, ENDED_FROM_DATE, ENDED_TO_DATE -> arrayOf("date")

@ -67,7 +67,7 @@ enum class SessionFilterable(private var fieldName:String? = null, private var s
override var valueMap : Map<String, Any?>? = null override var valueMap : Map<String, Any?>? = null
override val filterValuesExceptedKeys : Array<String>? override val filterValuesExpectedKeys : Array<String>?
get() { get() {
this.subType?.let { this.subType?.let {
return when (it) { return when (it) {

@ -8,7 +8,7 @@ interface ValueFilterable {
var filterValues : Map<String, Any?>? var filterValues : Map<String, Any?>?
get() { get() {
this.filterValuesExceptedKeys?.let { valueMapExceptedKeys -> this.filterValuesExpectedKeys?.let { valueMapExceptedKeys ->
valueMap?.let { map -> valueMap?.let { map ->
var missingKeys = map.keys.filter { !valueMapExceptedKeys.contains(it) } var missingKeys = map.keys.filter { !valueMapExceptedKeys.contains(it) }
if (map.keys.size == valueMapExceptedKeys.size && missingKeys.isNotEmpty()) { if (map.keys.size == valueMapExceptedKeys.size && missingKeys.isNotEmpty()) {
@ -24,5 +24,5 @@ interface ValueFilterable {
valueMap = value valueMap = value
} }
val filterValuesExceptedKeys : Array<String>? val filterValuesExpectedKeys : Array<String>?
} }

@ -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 { enum class FilterCategory(override val resId: Int?, override val viewType: Int = RowViewType.TITLE_VALUE_ARROW.ordinal) : RowRepresentable {
GENERAL(R.string.general), GENERAL(R.string.general),
DATE(R.string.date), DATE(R.string.date),
/* TIME_FRAME(R.string.duration),
DURATION(R.string.duration, DurationSubCategory.values()), SESSION(R.string.session),
SESSION(R.string.session, SessionSubCategory.values()), CASH(R.string.cash),
CASH(R.string.cash, CashSubCategory.values()), TOURNAMENT(R.string.tournament),
TOURNAMENT(R.string.tournament, TournamentSubCategory.values()), ONLINE(R.string.online),
ONLINE(R.string.online, OnlineSubCategory.values()), RESULT(R.string.result),
RESULT(R.string.result, ResultSubCategory.values()), TRANSACTION_TYPES(R.string.operation_types),
TRANSACTION_TYPES(R.string.operation_types, TransactionSubCategory.values()), LOCATIONS(R.string.locations),
LOCATION(R.string.locations, LocationSubCategory.values()), BANKROLLS(R.string.bankrolls),
BANKROLL(R.string.bankrolls, BankrollSubCategory.values()), PLAYERS(R.string.players),
PLAYERS(R.string.players, PlayerSubCategory.values());
*/
; ;
val filterElements : List < RowRepresentable > val filterElements : List < RowRepresentable >
@ -32,50 +30,4 @@ enum class FilterCategory(override val resId: Int?, override val viewType: Int =
get() { get() {
return FilterSection.filterSectionsFor(this) 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,12 +1,11 @@
package net.pokeranalytics.android.ui.view.rowrepresentable package net.pokeranalytics.android.ui.view.rowrepresentable
import io.realm.Realm import io.realm.Realm
import android.text.InputType
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData 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.RowRepresentableEditDescriptor
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSection.*
import java.lang.Exception import java.lang.Exception
import java.util.* import java.util.*
@ -15,27 +14,75 @@ sealed class FilterElement : RowRepresentable {
companion object { companion object {
fun filterElementsFor(filterSection: FilterSectionDataSource) : List<FilterElement> { fun filterElementsFor(filterSection: FilterSectionDataSource) : List<FilterElement> {
return when (filterSection) { return when (filterSection) {
FilterSection.CASH_TOURNAMENT -> arrayListOf(Cash, Tournament) CASH_TOURNAMENT -> arrayListOf(Cash, Tournament)
FilterSection.DYNAMIC_DATE -> arrayListOf(Today, Yesterday, TodayAndYesterday, CurrentWeek, CurrentMonth, CurrentYear) LIVE_ONLINE -> arrayListOf(Live, Online)
FilterSection.FIXED_DATE -> arrayListOf(From(), To()) LIMIT_TYPE -> {
FilterSection.GAMES -> { val limits = arrayListOf<Limit>()
net.pokeranalytics.android.model.Limit.values().forEach {
limits.add(FilterElement.Limit(it))
}
limits
}
TABLE_SIZE -> {
val tableSizes = arrayListOf<TableSize>()
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<Game>() val games = arrayListOf<Game>()
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
LiveData.GAME.items(realm).forEach { 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) games.add(game)
} }
realm.close() realm.close()
games 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 Cash : FilterElement()
object Tournament : FilterElement() object Tournament : FilterElement()
object Live : FilterElement()
object Online : FilterElement()
object Today : FilterElement() object Today : FilterElement()
object Yesterday : FilterElement() object Yesterday : FilterElement()
object TodayAndYesterday : FilterElement() object TodayAndYesterday : FilterElement()
@ -44,8 +91,19 @@ sealed class FilterElement : RowRepresentable {
object CurrentYear: FilterElement() object CurrentYear: FilterElement()
data class From(var date: Date = Date()) : FilterElement() data class From(var date: Date = Date()) : FilterElement()
data class To(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 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 var filterSection: FilterSectionDataSource? = null
@ -62,7 +120,21 @@ sealed class FilterElement : RowRepresentable {
is CurrentYear -> R.string.current_year is CurrentYear -> R.string.current_year
is From -> R.string.from is From -> R.string.from
is To -> R.string.to 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
} }
} }

@ -2,6 +2,7 @@ package net.pokeranalytics.android.ui.view.rowrepresentable
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 net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategory.*
interface FilterSectionDataSource : RowRepresentable { interface FilterSectionDataSource : RowRepresentable {
enum class SelectionType { enum class SelectionType {
@ -45,70 +46,86 @@ private interface DefaultFilterSectionDataSource : FilterSectionDataSource {
enum class FilterSection(override val resId: Int?): DefaultFilterSectionDataSource, RowRepresentable { enum class FilterSection(override val resId: Int?): DefaultFilterSectionDataSource, RowRepresentable {
CASH_TOURNAMENT(net.pokeranalytics.android.R.string.cash_or_tournament), CASH_TOURNAMENT(net.pokeranalytics.android.R.string.cash_or_tournament),
GAMES(net.pokeranalytics.android.R.string.games), LIVE_ONLINE(net.pokeranalytics.android.R.string.live_or_online),
/* GAME(net.pokeranalytics.android.R.string.games),
LIVE_ONLINE, LIMIT_TYPE(net.pokeranalytics.android.R.string.limits),
GAME, TABLE_SIZE(net.pokeranalytics.android.R.string.table_sizes),
LIMIT_TYPE,
TABLE_SIZE,
*/
DYNAMIC_DATE(net.pokeranalytics.android.R.string.dynamic_date), DYNAMIC_DATE(net.pokeranalytics.android.R.string.dynamic_date),
FIXED_DATE(net.pokeranalytics.android.R.string.fixed_date), FIXED_DATE(net.pokeranalytics.android.R.string.fixed_date),
/* DURATION(net.pokeranalytics.android.R.string.duration),
DURATION, YEAR(net.pokeranalytics.android.R.string.year),
YEAR, WEEKDAYS_OR_WEEKEND(net.pokeranalytics.android.R.string.weekdays_or_weekend),
WEEKDAYS_OR_WEEKEND, DAY_OF_WEEK(net.pokeranalytics.android.R.string.day_of_the_week),
DAY_OF_WEEK, MONTH_OF_YEAR(net.pokeranalytics.android.R.string.month_of_the_year),
MONTH_OF_YEAR, SESSION_DURATION(net.pokeranalytics.android.R.string.session_duration),
RANGE(net.pokeranalytics.android.R.string.hour_slot),
// Duration BLINDS(net.pokeranalytics.android.R.string.blinds),
SESSION_DURATION, CASH_RE_BUY_COUNT(net.pokeranalytics.android.R.string.cash_game),
RANGE, TOURNAMENT_TYPE(net.pokeranalytics.android.R.string.tournament_types),
COMPLETION_PERCENTAGE(net.pokeranalytics.android.R.string.tournament_completion_percentage_interval),
// Sessions 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),
// Cash BUY_IN(net.pokeranalytics.android.R.string.buyin),
BLINDS, MULTI_TABLING(net.pokeranalytics.android.R.string.multi_tabling),
CASH_RE_BUY_COUNT, VALUE(net.pokeranalytics.android.R.string.value),
LOCATION(net.pokeranalytics.android.R.string.locations),
// Tournament BANKROLL(net.pokeranalytics.android.R.string.bankrolls),
TOURNAMENT_TYPE, NUMBER_OF_PLAYERS(net.pokeranalytics.android.R.string.number_of_players),
COMPLETION_PERCENTAGE, MULTI_PLAYER(net.pokeranalytics.android.R.string.multiplayer),
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;
*/
; ;
companion object { companion object {
fun filterSectionsFor(category: FilterCategory) : List < FilterSection > { fun filterSectionsFor(category: FilterCategory) : List < FilterSection > {
return when (category) { return when (category) {
FilterCategory.GENERAL -> arrayListOf(CASH_TOURNAMENT, GAMES) GENERAL -> arrayListOf(
FilterCategory.DATE -> arrayListOf(DYNAMIC_DATE, FIXED_DATE) 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 override val selectionType: FilterSectionDataSource.SelectionType
get() { get() {
return when (this) { return when (this) {
CASH_TOURNAMENT, DYNAMIC_DATE -> FilterSectionDataSource.SelectionType.SINGLE CASH_TOURNAMENT, DYNAMIC_DATE, LIVE_ONLINE -> FilterSectionDataSource.SelectionType.SINGLE
else -> FilterSectionDataSource.SelectionType.MULTIPLE 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<Game>)
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 * Return the type of the selection

Loading…
Cancel
Save