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

feature/top10
Laurent 7 years ago
commit 564cafd5db
  1. 61
      app/src/androidTest/java/net/pokeranalytics/android/model/CriteriaTest.kt
  2. 2
      app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt
  3. 22
      app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt
  4. 111
      app/src/main/java/net/pokeranalytics/android/model/Criteria.kt
  5. 7
      app/src/main/java/net/pokeranalytics/android/model/TournamentType.kt
  6. 113
      app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt
  7. 60
      app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt
  8. 2
      app/src/main/java/net/pokeranalytics/android/model/realm/FilterCondition.kt
  9. 2
      app/src/main/java/net/pokeranalytics/android/model/realm/ReportSetup.kt
  10. 10
      app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt
  11. 18
      app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt
  12. 8
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt
  13. 18
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/ReportRow.kt
  14. 2
      app/src/main/res/values-de/strings.xml
  15. 2
      app/src/main/res/values-es/strings.xml
  16. 2
      app/src/main/res/values-fr/strings.xml
  17. 2
      app/src/main/res/values-hi/strings.xml
  18. 2
      app/src/main/res/values-it/strings.xml
  19. 2
      app/src/main/res/values-ja/strings.xml
  20. 2
      app/src/main/res/values-pt/strings.xml
  21. 2
      app/src/main/res/values-ru/strings.xml
  22. 2
      app/src/main/res/values-zh/strings.xml
  23. 2
      app/src/main/res/values/strings.xml

@ -0,0 +1,61 @@
package net.pokeranalytics.android.model
import net.pokeranalytics.android.components.BaseFilterInstrumentedUnitTest
import net.pokeranalytics.android.components.RealmInstrumentedUnitTest
import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.model.realm.Filter
import net.pokeranalytics.android.model.realm.FilterCondition
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSectionRow
import org.junit.Assert
import org.junit.Test
import org.junit.Assert.*
import java.util.*
class CriteriaTest : BaseFilterInstrumentedUnitTest() {
@Test
fun getQueryConditions() {
val realm = this.mockRealm
realm.beginTransaction()
val cal = Calendar.getInstance()
cal.time = Date()
val s1 = Session.testInstance(100.0, false, cal.time)
cal.add(Calendar.YEAR, 1)
Session.testInstance(100.0, true, cal.time)
cal.add(Calendar.YEAR, -11)
val firstValue = cal.get(Calendar.YEAR)
Session.testInstance(100.0, true, cal.time)
cal.add(Calendar.YEAR, 7)
Session.testInstance(100.0, true, cal.time)
cal.add(Calendar.YEAR, -2)
Session.testInstance(100.0, true, cal.time)
cal.add(Calendar.YEAR, 10)
Session.testInstance(100.0, true, cal.time)
val lastValue = firstValue + 10
realm.commitTransaction()
val years = Criteria.Years.queryConditions as List<QueryCondition.AnyYear>
println("years = ${years.map { it.getDisplayName() }}")
assertEquals(11, years.size)
assertEquals(firstValue, years.first().listOfValues.first())
assertEquals(lastValue, years.last().listOfValues.first())
}
@Test
fun combined() {
val critierias = listOf(Criteria.MonthsOfYear, Criteria.DaysOfWeek)
val combined = critierias.combined()
combined.forEach {
it.forEach {qc->
println(qc.getDisplayName())
}
}
}
}

@ -52,7 +52,7 @@ class PokerAnalyticsApplication : Application() {
if (BuildConfig.DEBUG) {
Timber.d("UserPreferences.defaultCurrency: ${UserDefaults.currency.symbol}")
//this.createFakeSessions()
this.createFakeSessions()
}
Patcher.patchBreaks()

@ -2,8 +2,8 @@ package net.pokeranalytics.android.calculus
import io.realm.Realm
import net.pokeranalytics.android.calculus.Stat.*
import net.pokeranalytics.android.model.comparison.Comparator
import net.pokeranalytics.android.model.comparison.combined
import net.pokeranalytics.android.model.Criteria
import net.pokeranalytics.android.model.combined
import net.pokeranalytics.android.model.extensions.hourlyDuration
import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.model.filter.filter
@ -116,26 +116,26 @@ class Calculator {
return when (aggregationType) {
AggregationType.SESSION, AggregationType.DURATION -> this.computeGroups(realm, listOf(group), options)
AggregationType.MONTH -> {
val comparators: List<Comparator> = listOf(Comparator.MONTH_OF_YEAR, Comparator.YEAR)
this.computeStatsWithComparators(realm, comparators, group.conditions, options)
val criteria: List<Criteria> = listOf(Criteria.MonthsOfYear, Criteria.Years)
this.computeStatsWithComparators(realm, criteria, group.conditions, options)
}
AggregationType.YEAR -> {
val comparators: List<Comparator> = listOf(Comparator.YEAR)
this.computeStatsWithComparators(realm, comparators, group.conditions, options)
val criteria: List<Criteria> = listOf(Criteria.Years)
this.computeStatsWithComparators(realm, criteria, group.conditions, options)
}
}
}
fun computeStatsWithComparators(
realm: Realm,
comparators: List<Comparator> = listOf(),
conditions: List<QueryCondition> = listOf(),
options: Options
realm: Realm,
criteria: List<Criteria> = listOf(),
conditions: List<QueryCondition> = listOf(),
options: Options
): Report {
val computableGroups: MutableList<ComputableGroup> = mutableListOf()
comparators.combined().forEach { comparatorConditions ->
criteria.combined().forEach { comparatorConditions ->
val allConditions = mutableListOf<QueryCondition>()
allConditions.addAll(conditions)

@ -10,10 +10,54 @@ import net.pokeranalytics.android.model.realm.*
import java.util.*
import kotlin.collections.ArrayList
fun List<Criteria>.combined(): List<List<QueryCondition>> {
val comparatorList = ArrayList<List<QueryCondition>>()
this.forEach {
comparatorList.add(it.queryConditions)
}
return getCombinations(comparatorList)
}
fun <T> getCombinations(lists: List<List<T>>): List<List<T>> {
var combinations: LinkedHashSet<List<T>> = LinkedHashSet()
var newCombinations: LinkedHashSet<List<T>>
var index = 0
// extract each of the integers in the first list
// and add each to ints as a new list
if (lists.isNotEmpty()) {
for (i in lists[0]) {
val newList = ArrayList<T>()
newList.add(i)
combinations.add(newList)
}
index++
}
while (index < lists.size) {
val nextList = lists[index]
newCombinations = LinkedHashSet()
for (first in combinations) {
for (second in nextList) {
val newList = ArrayList<T>()
newList.addAll(first)
newList.add(second)
newCombinations.add(newList)
}
}
combinations = newCombinations
index++
}
return combinations.toList()
}
sealed class Criteria {
abstract class RealmCriteria : Criteria() {
inline fun <reified T: NameManageable> comparison(): List<QueryCondition> {
return compare < QueryCondition.QueryDataCondition<NameManageable >, T >()
return compare<QueryCondition.QueryDataCondition<NameManageable>, T>()
.sorted()
}
}
@ -24,19 +68,19 @@ sealed class Criteria {
}
abstract class ListCriteria : Criteria() {
inline fun <reified T:QueryCondition.ListOfValueQueryCondition<S>, reified S:Any> comparison(): List<QueryCondition> {
QueryCondition.distinct<Session, T>()?.let {
inline fun <reified T:QueryCondition.ListOfValueQueryCondition<S>, reified S:Comparable<S>> comparison(): List<QueryCondition> {
QueryCondition.distinct<Session, T, S>()?.let {
val values = it.mapNotNull { session ->
when (this) {
is Limits -> if (session.limit is S) { session.limit as S } else throw PokerAnalyticsException.QueryValueMapUnexpectedValue
is TournamentTypes -> if (session.tournamentType is S) { session.tournamentType as S } else throw PokerAnalyticsException.QueryValueMapUnexpectedValue
is TableSizes -> if (session.tableSize is S) { session.tableSize as S } else throw PokerAnalyticsException.QueryValueMapUnexpectedValue
is TournamentFees -> if (session.tournamentEntryFee is S) { session.tournamentEntryFee as S } else throw PokerAnalyticsException.QueryValueMapUnexpectedValue
is TournamentFees -> if (session.tournamentEntryFee is S) { session.tournamentEntryFee as S } else throw PokerAnalyticsException.QueryValueMapUnexpectedValue
is Blinds -> if (session.blinds is S) { session.blinds as S } else throw PokerAnalyticsException.QueryValueMapUnexpectedValue
else -> null
}
}
return compareList<T, S>(values = values)
}.distinct()
return compareList<T, S>(values = values).sorted()
}
return listOf<T>()
}
@ -56,17 +100,19 @@ sealed class Criteria {
object SessionTypes: SimpleCriteria(listOf(QueryCondition.IsCash, QueryCondition.IsTournament))
object BankrollTypes: SimpleCriteria(listOf(QueryCondition.IsLive, QueryCondition.IsOnline))
object DayPeriods: SimpleCriteria(listOf(QueryCondition.IsWeekDay, QueryCondition.IsWeekEnd))
object Years: Criteria()
object Years: ListCriteria()
object Blinds: ListCriteria()
object TournamentFees: ListCriteria()
object Cash: SimpleCriteria(listOf(QueryCondition.IsCash))
object Tournament: SimpleCriteria(listOf(QueryCondition.IsTournament))
val queryConditions: List<QueryCondition>
get() {
return when (this) {
is Bankrolls -> comparison<Bankroll>()
is Games -> comparison<Game>()
is TournamentFeatures-> comparison<TournamentFeature>()
is TournamentNames-> comparison<TournamentName>()
is TournamentFeatures -> comparison<TournamentFeature>()
is TournamentNames -> comparison<TournamentName>()
is Locations -> comparison<Location>()
is SimpleCriteria -> comparison()
is Limits -> comparison<QueryCondition.AnyLimit, Int>()
@ -87,7 +133,7 @@ sealed class Criteria {
}
}
realm.close()
years
years.sorted()
}
is Blinds -> comparison<QueryCondition.AnyBlind, String >()
else -> throw PokerAnalyticsException.QueryTypeUnhandled
@ -117,47 +163,4 @@ sealed class Criteria {
return objects
}
}
fun List<Criteria>.combined(): List<List<QueryCondition>> {
val comparatorList = ArrayList<List<QueryCondition>>()
this.forEach {
comparatorList.add(it.queryConditions)
}
return getCombinations(comparatorList)
}
private fun <T> getCombinations(lists: List<List<T>>): List<List<T>> {
var combinations: MutableSet<List<T>> = LinkedHashSet()
var newCombinations: MutableSet<List<T>>
var index = 0
// extract each of the integers in the first list
// and add each to ints as a new list
if (lists.isNotEmpty()) {
for (i in lists[0]) {
val newList = ArrayList<T>()
newList.add(i)
combinations.add(newList)
}
index++
}
while (index < lists.size) {
val nextList = lists[index]
newCombinations = LinkedHashSet()
for (first in combinations) {
for (second in nextList) {
val newList = ArrayList<T>()
newList.addAll(first)
newList.add(second)
newCombinations.add(newList)
}
}
combinations = newCombinations
index++
}
return combinations.toList()
}
}
}

@ -23,5 +23,12 @@ enum class TournamentType : RowRepresentable {
}
}
override fun getDisplayName(): String {
return when (this) {
MTT -> "MTT"
SNG -> "SNG"
}
}
override val viewType: Int = RowViewType.TITLE.ordinal
}

@ -1,113 +0,0 @@
package net.pokeranalytics.android.model.comparison
import io.realm.Realm
import io.realm.Sort
import io.realm.kotlin.where
import net.pokeranalytics.android.exceptions.PokerAnalyticsException
import net.pokeranalytics.android.model.Criteria
import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.model.realm.*
import java.util.*
import kotlin.collections.ArrayList
enum class Comparator {
DAY_OF_WEEK,
MONTH_OF_YEAR,
YEAR,
BLIND,
CASH,
TOURNAMENT,
LIVE,
ONLINE,
GAME,
BANKROLL,
LOCATION,
TOURNAMENT_FEATURE,
TOURNAMENT_NAME,
DAY_PERIOD,
LIMIT_TYPE,
TABLE_SIZE,
TOURNAMENT_TYPE,
TOURNAMENT_ENTRY_FEE,
;
val queryConditions: List<QueryCondition>
get() {
return when (this) {
TOURNAMENT_ENTRY_FEE -> {
val fees = arrayListOf<QueryCondition.BetweenTournamentFee>()
val realm = Realm.getDefaultInstance()
val fieldName = Session.fieldNameForQueryType(QueryCondition.BetweenTournamentFee::class.java)!!
realm.where<Session>().distinct(fieldName).findAll().sort(fieldName, Sort.ASCENDING).map {
it.tournamentEntryFee?.let { fee ->
fees.add(QueryCondition.BetweenTournamentFee().apply { between(fee, fee) })
}
}
realm.close()
fees
}
MONTH_OF_YEAR -> Criteria.MonthsOfYear.queryConditions
DAY_OF_WEEK -> Criteria.DaysOfWeek.queryConditions
YEAR -> Criteria.Years.queryConditions
DAY_PERIOD -> Criteria.DayPeriods.queryConditions
CASH -> listOf(QueryCondition.IsCash)
TOURNAMENT -> listOf(QueryCondition.IsTournament)
LIVE -> listOf(QueryCondition.IsLive)
ONLINE -> listOf(QueryCondition.IsOnline)
BLIND -> Criteria.Blinds.queryConditions
BANKROLL -> Criteria.Bankrolls.queryConditions
GAME -> Criteria.Games.queryConditions
TOURNAMENT_NAME-> Criteria.TournamentNames.queryConditions
TOURNAMENT_FEATURE-> Criteria.TournamentFeatures.queryConditions
LOCATION-> Criteria.Locations.queryConditions
LIMIT_TYPE -> Criteria.Limits.queryConditions
TABLE_SIZE -> Criteria.TableSizes.queryConditions
TOURNAMENT_TYPE -> Criteria.TournamentTypes.queryConditions
else -> throw PokerAnalyticsException.QueryTypeUnhandled
}
}
}
fun List<Comparator>.combined(): List<List<QueryCondition>> {
val comparatorList = ArrayList<List<QueryCondition>>()
this.forEach {
comparatorList.add(it.queryConditions)
}
return getCombinations(comparatorList)
}
fun <T> getCombinations(lists: List<List<T>>): List<List<T>> {
var combinations: MutableSet<List<T>> = LinkedHashSet()
var newCombinations: MutableSet<List<T>>
var index = 0
// extract each of the integers in the first list
// and add each to ints as a new list
if (lists.isNotEmpty()) {
for (i in lists[0]) {
val newList = ArrayList<T>()
newList.add(i)
combinations.add(newList)
}
index++
}
while (index < lists.size) {
val nextList = lists[index]
newCombinations = LinkedHashSet()
for (first in combinations) {
for (second in nextList) {
val newList = ArrayList<T>()
newList.addAll(first)
newList.add(second)
newCombinations.add(newList)
}
}
combinations = newCombinations
index++
}
return combinations.toList()
}

@ -15,8 +15,10 @@ import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterElementRow
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSectionRow
import net.pokeranalytics.android.util.NULL_TEXT
import net.pokeranalytics.android.util.UserDefaults
import net.pokeranalytics.android.util.extensions.endOfDay
import net.pokeranalytics.android.util.extensions.startOfDay
import net.pokeranalytics.android.util.extensions.toCurrency
import java.text.DateFormatSymbols
import java.util.*
import kotlin.collections.ArrayList
@ -45,10 +47,10 @@ inline fun <reified T : Filterable> List<QueryCondition>.queryWith(query: RealmQ
sealed class QueryCondition : FilterElementRow {
companion object {
fun valueOf(name:String) : QueryCondition {
fun <T:QueryCondition> valueOf(name:String) : T {
val kClass = Class.forName("${QueryCondition::class.qualifiedName}$$name").kotlin
val instance = kClass.objectInstance ?: kClass.java.newInstance()
return instance as QueryCondition
return instance as T
}
inline fun <reified T:Identifiable>getInstance(): QueryCondition {
@ -62,25 +64,37 @@ sealed class QueryCondition : FilterElementRow {
}
}
inline fun < reified T: Filterable, reified S: QueryCondition>distinct(): RealmResults<T>? {
inline fun < reified T: Filterable, reified S: QueryCondition, reified U:Comparable<U>>distinct(): RealmResults<T>? {
FilterHelper.fieldNameForQueryType<T>(S::class.java)?.let {
val realm = Realm.getDefaultInstance()
val distincts = realm.where<T>().distinct(it).findAll().sort(it, Sort.ASCENDING)
val distincts = when (T::class) {
String::class, Int::class -> realm.where<T>().distinct(it).findAll().sort(it, Sort.ASCENDING)
else -> realm.where<T>().isNotNull(it).findAll().sort(it, Sort.ASCENDING)
}
realm.close()
return distincts
}
return null
}
}
interface ListOfValues <T> {
interface ListOfValues <T>: Comparable<ListOfValues<T>> where T:Comparable<T> {
var listOfValues: ArrayList<T>
override fun compareTo(other: ListOfValues<T>): Int {
return listOfValues.sorted().first().compareTo(other.listOfValues.sorted().first())
}
}
interface SingleValue <T> {
interface SingleValue <T>: Comparable<SingleValue<T>> where T:Comparable<T> {
var singleValue : T
override fun compareTo(other: SingleValue<T>): Int {
return singleValue.compareTo(other.singleValue)
}
}
interface ListOfDouble: ListOfValues<Double>
@ -126,7 +140,7 @@ sealed class QueryCondition : FilterElementRow {
return when (this) {
is StaticDataQueryCondition -> label()
is QueryDataCondition<*> -> label()
is AnyBlind -> label()
is ListOfValueQueryCondition<*> -> label()
else -> baseId
}
}
@ -165,7 +179,7 @@ sealed class QueryCondition : FilterElementRow {
override var singleValue: Int = 0
}
abstract class ListOfValueQueryCondition < T: Any > : QueryCondition(), ListOfValues<T> {
abstract class ListOfValueQueryCondition < T > : QueryCondition(), ListOfValues<T> where T:Comparable<T> {
override var listOfValues = ArrayList<T>()
abstract fun labelForValue(value:T): String
@ -212,10 +226,22 @@ sealed class QueryCondition : FilterElementRow {
override val showTime: Boolean = true
}
object IsLive : QueryCondition()
object IsCash : QueryCondition()
object IsOnline : QueryCondition()
object IsTournament : QueryCondition()
object IsLive : QueryCondition() {
override fun getDisplayName(): String { return "Live" }
}
object IsCash : QueryCondition() {
override fun getDisplayName(): String { return "Cash" }
}
object IsOnline : QueryCondition() {
override fun getDisplayName(): String { return "Online" }
}
object IsTournament : QueryCondition() {
override fun getDisplayName(): String { return "Tournament" }
}
class AnyBankroll: QueryDataCondition<Bankroll>() { override val entity: Class<Bankroll> = Bankroll::class.java }
class AnyGame: QueryDataCondition<Game>() { override val entity: Class<Game> = Game::class.java }
class AnyTournamentName: QueryDataCondition<TournamentName>() { override val entity: Class<TournamentName> = TournamentName::class.java }
@ -313,9 +339,9 @@ sealed class QueryCondition : FilterElementRow {
object DuringThisMonth: QueryCondition()
object DuringThisYear: QueryCondition()
object TournamentFee: ListOfValueQueryCondition<Double>() {
class TournamentFee: ListOfValueQueryCondition<Double>() {
override fun labelForValue(value: Double): String {
return "$value"
return value.toCurrency(UserDefaults.currency)
}
}
@ -355,7 +381,7 @@ sealed class QueryCondition : FilterElementRow {
realmQuery
}
is AnyBlind -> realmQuery.`in`(fieldName, listOfValues.toTypedArray())
is TournamentFee -> realmQuery.`in`(fieldName, listOfValues.toTypedArray())
is TournamentFee -> realmQuery.equalTo(fieldName, listOfValues.first())
is QueryDataCondition<*> -> realmQuery.`in`(fieldName, listOfValues.toTypedArray())
is StaticDataQueryCondition -> realmQuery.`in`(fieldName, listOfValues.toTypedArray())
is DateQuery -> {

@ -35,7 +35,7 @@ open class FilterCondition() : RealmObject() {
var sectionName: String? = null
val queryCondition : QueryCondition
get() = QueryCondition.valueOf(this.filterName ?: throw PokerAnalyticsException.FilterElementUnknownName)
get() = QueryCondition.valueOf<QueryCondition>(this.filterName ?: throw PokerAnalyticsException.FilterElementUnknownName)
.apply {
this.updateValueMap(this@FilterCondition)
}

@ -24,7 +24,7 @@ open class ReportSetup : RealmObject() {
// @todo define the configuration options
// var comparators: List<Int> = listOf()
// var criteria: List<Int> = listOf()
// var stats: List<Int> = listOf()
// The filters associated with the report

@ -18,7 +18,7 @@ import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.ComputedResults
import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.model.comparison.Comparator
import net.pokeranalytics.android.model.Criteria
import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.ui.activity.StatisticDetailsActivity
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
@ -162,12 +162,12 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable
addAll(computedResults.group.conditions)
// Remove session type conditions
removeAll(Comparator.CASH.queryConditions)
removeAll(Comparator.TOURNAMENT.queryConditions)
removeAll(Criteria.Cash.queryConditions)
removeAll(Criteria.Tournament.queryConditions)
when (sessionTypeCondition) {
QueryCondition.IsCash -> addAll(Comparator.CASH.queryConditions)
QueryCondition.IsTournament -> addAll(Comparator.TOURNAMENT.queryConditions)
QueryCondition.IsCash -> addAll(Criteria.Cash.queryConditions)
QueryCondition.IsTournament -> addAll(Criteria.Tournament.queryConditions)
}
}

@ -16,8 +16,8 @@ import kotlinx.coroutines.launch
import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.ComputedResults
import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.model.comparison.Comparator
import net.pokeranalytics.android.model.comparison.combined
import net.pokeranalytics.android.model.Criteria
import net.pokeranalytics.android.model.combined
import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.ui.activity.CalendarDetailsActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
@ -240,12 +240,12 @@ class CalendarFragment : SessionObserverFragment(), CoroutineScope, StaticRowRep
// Compute data per AnyYear and AnyMonthOfYear
println(">>>> ${Comparator.MONTH_OF_YEAR.queryConditions.map { it.id }}")
println(">>>> ${Criteria.MonthsOfYear.queryConditions.map { it.id }}")
val monthConditions = when (sessionTypeCondition) {
QueryCondition.IsCash -> listOf(Comparator.YEAR, Comparator.MONTH_OF_YEAR, Comparator.CASH).combined()
QueryCondition.IsTournament -> listOf(Comparator.YEAR, Comparator.MONTH_OF_YEAR, Comparator.TOURNAMENT).combined()
else -> listOf(Comparator.YEAR, Comparator.MONTH_OF_YEAR).combined()
QueryCondition.IsCash -> listOf(Criteria.Years, Criteria.MonthsOfYear, Criteria.Cash).combined()
QueryCondition.IsTournament -> listOf(Criteria.Years, Criteria.MonthsOfYear, Criteria.Tournament).combined()
else -> listOf(Criteria.Years, Criteria.MonthsOfYear).combined()
}
monthConditions.forEach { conditions ->
@ -270,9 +270,9 @@ class CalendarFragment : SessionObserverFragment(), CoroutineScope, StaticRowRep
// Compute data per AnyYear
val yearConditions = when (sessionTypeCondition) {
QueryCondition.IsCash -> listOf(Comparator.YEAR, Comparator.CASH).combined()
QueryCondition.IsTournament -> listOf(Comparator.YEAR, Comparator.TOURNAMENT).combined()
else -> listOf(Comparator.YEAR).combined()
QueryCondition.IsCash -> listOf(Criteria.Years, Criteria.Cash).combined()
QueryCondition.IsTournament -> listOf(Criteria.Years, Criteria.Tournament).combined()
else -> listOf(Criteria.Years).combined()
}
yearConditions.forEach { conditions ->

@ -13,7 +13,7 @@ import kotlinx.coroutines.launch
import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.model.comparison.Comparator
import net.pokeranalytics.android.model.Criteria
import net.pokeranalytics.android.ui.activity.ReportDetailsActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
@ -71,7 +71,7 @@ class ReportsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSour
super.onRowSelected(position, row, fromAction)
if (row is ReportRow) {
val reportName = row.localizedTitle(requireContext())
launchComputation(row.comparators, reportName)
launchComputation(row.criteria, reportName)
}
}
@ -103,7 +103,7 @@ class ReportsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSour
/**
* Launch computation
*/
private fun launchComputation(comparators: List<Comparator>, reportName: String) {
private fun launchComputation(criteria: List<Criteria>, reportName: String) {
showLoader()
@ -114,7 +114,7 @@ class ReportsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSour
val requiredStats: List<Stat> = listOf(Stat.NET_RESULT)
val options = Calculator.Options(evolutionValues = Calculator.Options.EvolutionValues.STANDARD, stats = requiredStats)
val report = Calculator.computeStatsWithComparators(realm, comparators = comparators, options = options)
val report = Calculator.computeStatsWithComparators(realm, criteria = criteria, options = options)
Timber.d("launchComputation: ${System.currentTimeMillis() - startDate.time}ms")

@ -1,7 +1,7 @@
package net.pokeranalytics.android.ui.view.rowrepresentable
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.comparison.Comparator
import net.pokeranalytics.android.model.Criteria
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
@ -47,17 +47,17 @@ enum class ReportRow : RowRepresentable {
override val viewType: Int = RowViewType.TITLE_ARROW.ordinal
val comparators: List<Comparator>
val criteria: List<Criteria>
get() {
return when (this) {
BLINDS -> listOf(Comparator.BLIND)
BUY_IN -> listOf(Comparator.TOURNAMENT_ENTRY_FEE)
DAY_OF_WEEKS -> listOf(Comparator.DAY_OF_WEEK)
GENERAL -> listOf(Comparator.CASH, Comparator.LIVE)
LOCATIONS -> listOf(Comparator.LOCATION)
BLINDS -> listOf(Criteria.Blinds)
BUY_IN -> listOf(Criteria.TournamentFees)
DAY_OF_WEEKS -> listOf(Criteria.DaysOfWeek)
GENERAL -> listOf(Criteria.SessionTypes, Criteria.BankrollTypes)
LOCATIONS -> listOf(Criteria.Locations)
NUMBER_OF_TABLES -> listOf() //TODO
TOURNAMENT_TYPES -> listOf(Comparator.TOURNAMENT_TYPE)
GAME -> listOf(Comparator.GAME)
TOURNAMENT_TYPES -> listOf(Criteria.TournamentTypes)
GAME -> listOf(Criteria.Games)
}
}

@ -95,7 +95,7 @@
<string name="clear_to_use_automatic_naming">Leeren, um einen automatisch generierten Titel zu verwenden</string>
<string name="clover_classic_green">Pik ♣ – Klassisches Grün</string>
<string name="comment">Kommentar</string>
<string name="comparators">Vergleichselemente</string>
<string name="criteria">Vergleichselemente</string>
<string name="comparison">Vergleich</string>
<string name="conditioning_report_filtering_returns_no_data">Die eingegrenzte Suche ergab keine Ergebnisse</string>
<string name="confirmation">Bestätigung</string>

@ -95,7 +95,7 @@
<string name="clear_to_use_automatic_naming">Borrar para utilizar título generado automáticamente</string>
<string name="clover_classic_green">Trébol ♣: verde clásico</string>
<string name="comment">Comentarios</string>
<string name="comparators">Comparadores</string>
<string name="criteria">Comparadores</string>
<string name="comparison">Comparación</string>
<string name="conditioning_report_filtering_returns_no_data">Los filtros aún no dieron ningún resultado.</string>
<string name="confirmation">Confirmación</string>

@ -112,7 +112,7 @@
<string name="clear_to_use_automatic_naming">Effacer pour utiliser un titre généré automatiquement</string>
<string name="clover_classic_green">Trèfle ♣ - Vert classique</string>
<string name="comment">Commentaire</string>
<string name="comparators">Comparateurs</string>
<string name="criteria">Comparateurs</string>
<string name="comparison">Comparaison</string>
<string name="conditioning_report_filtering_returns_no_data">Le filtre ne retourne aucun résultat</string>
<string name="confirmation">Confirmation</string>

@ -95,7 +95,7 @@
<string name="clear_to_use_automatic_naming">वत उतपनन शषक उपयक करनिए सफ कर</string>
<string name="clover_classic_green">वर ♣ - किक हर</string>
<string name="comment">िपण</string>
<string name="comparators">लन</string>
<string name="criteria">लन</string>
<string name="comparison">लन</string>
<string name="conditioning_report_filtering_returns_no_data">िटर सई परिम नहि</string>
<string name="confirmation">करण</string>

@ -95,7 +95,7 @@
<string name="clear_to_use_automatic_naming">Cancella per usare un titolo generato automaticamente</string>
<string name="clover_classic_green">Fiori ♣ - Verde classico</string>
<string name="comment">Commento</string>
<string name="comparators">Comparatori</string>
<string name="criteria">Comparatori</string>
<string name="comparison">Comparazione</string>
<string name="conditioning_report_filtering_returns_no_data">Il filtraggio non ha dato alcun risultato</string>
<string name="confirmation">Conferma</string>

@ -95,7 +95,7 @@
<string name="clear_to_use_automatic_naming">クリアして自動生成されたタイトルを使用</string>
<string name="clover_classic_green">クローバー ♣ - クラシック グリーン</string>
<string name="comment">コメント</string>
<string name="comparators">コンパレーター</string>
<string name="criteria">コンパレーター</string>
<string name="comparison">比較</string>
<string name="conditioning_report_filtering_returns_no_data">フィルタリングでは結果が戻されませんでした</string>
<string name="confirmation">確認</string>

@ -95,7 +95,7 @@
<string name="clear_to_use_automatic_naming">Limpe para usar o título gerado automaticamente</string>
<string name="clover_classic_green">Trevo ♣ - Verde clássico</string>
<string name="comment">Comentário</string>
<string name="comparators">Comparadores</string>
<string name="criteria">Comparadores</string>
<string name="comparison">Comparação</string>
<string name="conditioning_report_filtering_returns_no_data">O filtro não apresentou nenhum resultado</string>
<string name="confirmation">Confirmação</string>

@ -95,7 +95,7 @@
<string name="clear_to_use_automatic_naming">Очистите для автоматического именования</string>
<string name="clover_classic_green">Клевер ♣ - Классическое</string>
<string name="comment">Комментарий</string>
<string name="comparators">Разделители</string>
<string name="criteria">Разделители</string>
<string name="comparison">Разделение</string>
<string name="conditioning_report_filtering_returns_no_data">Не найдено результатов после фильтрации</string>
<string name="confirmation">Подтверждение</string>

@ -83,7 +83,7 @@
<string name="clear">清理</string>
<string name="clear_to_use_automatic_naming">清理可使用自动生成标题</string>
<string name="comment">评论</string>
<string name="comparators">比较器</string>
<string name="criteria">比较器</string>
<string name="comparison">比较</string>
<string name="confirmation">确认</string>
<string name="contact">联系我们</string>

@ -122,7 +122,7 @@
<string name="clear_to_use_automatic_naming">Clear to use automatically generated title</string>
<string name="clover_classic_green">Clover ♣ - Classic green</string>
<string name="comment">Comment</string>
<string name="comparators">Comparators</string>
<string name="criteria">Comparators</string>
<string name="comparison">Comparison</string>
<string name="conditioning_report_filtering_returns_no_data">Filtering did not yield any results</string>
<string name="confirmation">Confirmation</string>

Loading…
Cancel
Save