Fixes in QueryCondition operators

powerreport
Laurent 3 years ago
parent 0e27805a8d
commit 74f7e8d422
  1. 10
      app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/SessionFilterInstrumentedUnitTest.kt
  2. 12
      app/src/main/java/net/pokeranalytics/android/model/Criteria.kt
  3. 130
      app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt
  4. 3
      app/src/main/java/net/pokeranalytics/android/ui/view/rows/FilterItemRow.kt
  5. 18
      app/src/main/java/net/pokeranalytics/android/ui/view/rows/FilterSectionRow.kt
  6. 2
      app/src/main/java/net/pokeranalytics/android/ui/view/rows/StaticReport.kt
  7. 4
      app/src/main/res/values-de/strings.xml
  8. 4
      app/src/main/res/values-es/strings.xml
  9. 4
      app/src/main/res/values-fr/strings.xml
  10. 4
      app/src/main/res/values-hi/strings.xml
  11. 4
      app/src/main/res/values-it/strings.xml
  12. 4
      app/src/main/res/values-ja/strings.xml
  13. 4
      app/src/main/res/values-pt/strings.xml
  14. 4
      app/src/main/res/values-ru/strings.xml
  15. 4
      app/src/main/res/values-zh/strings.xml
  16. 4
      app/src/main/res/values/strings.xml

@ -458,7 +458,7 @@ class SessionFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() {
realm.commitTransaction() realm.commitTransaction()
val filter = QueryCondition.NetAmountWon() val filter = QueryCondition.NetAmountWon()
val filterElementRow = QueryCondition.more<QueryCondition.NetAmountWon>().apply { listOfValues = arrayListOf(204.0) } val filterElementRow = QueryCondition.moreOrEqual<QueryCondition.NetAmountWon>().apply { listOfValues = arrayListOf(204.0) }
filter.updateValueBy(FilterCondition(arrayListOf(filterElementRow), FilterSectionRow.Value)) filter.updateValueBy(FilterCondition(arrayListOf(filterElementRow), FilterSectionRow.Value))
val sessions = Filter.queryOn<Session>(realm, Query(filterElementRow)) val sessions = Filter.queryOn<Session>(realm, Query(filterElementRow))
@ -482,7 +482,7 @@ class SessionFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() {
realm.commitTransaction() realm.commitTransaction()
val filter = QueryCondition.NetAmountWon() val filter = QueryCondition.NetAmountWon()
val filterElementRow = QueryCondition.less<QueryCondition.NetAmountWon>().apply { listOfValues = arrayListOf(540.0) } val filterElementRow = QueryCondition.lessOrEqual<QueryCondition.NetAmountWon>().apply { listOfValues = arrayListOf(540.0) }
filter.updateValueBy(FilterCondition(arrayListOf(filterElementRow), FilterSectionRow.Value)) filter.updateValueBy(FilterCondition(arrayListOf(filterElementRow), FilterSectionRow.Value))
val sessions = Filter.queryOn<Session>(realm, Query(filter)) val sessions = Filter.queryOn<Session>(realm, Query(filter))
@ -506,11 +506,11 @@ class SessionFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() {
realm.commitTransaction() realm.commitTransaction()
val filterMore = QueryCondition.NetAmountWon() val filterMore = QueryCondition.NetAmountWon()
val filterElementRow = QueryCondition.more<QueryCondition.NetAmountWon>().apply { listOfValues = arrayListOf(199.0) } val filterElementRow = QueryCondition.moreOrEqual<QueryCondition.NetAmountWon>().apply { listOfValues = arrayListOf(199.0) }
filterMore.updateValueBy(FilterCondition(arrayListOf(filterElementRow), FilterSectionRow.Value)) filterMore.updateValueBy(FilterCondition(arrayListOf(filterElementRow), FilterSectionRow.Value))
val filterLess = QueryCondition.NetAmountWon() val filterLess = QueryCondition.NetAmountWon()
val filterElementRow2 = QueryCondition.less<QueryCondition.NetAmountWon>().apply { listOfValues = arrayListOf(400.0) } val filterElementRow2 = QueryCondition.lessOrEqual<QueryCondition.NetAmountWon>().apply { listOfValues = arrayListOf(400.0) }
filterLess.updateValueBy(FilterCondition(arrayListOf(filterElementRow2), FilterSectionRow.Value)) filterLess.updateValueBy(FilterCondition(arrayListOf(filterElementRow2), FilterSectionRow.Value))
val sessions = Filter.queryOn<Session>(realm, Query(filterMore, filterLess)) val sessions = Filter.queryOn<Session>(realm, Query(filterMore, filterLess))
@ -584,7 +584,7 @@ class SessionFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() {
val filterMore = QueryCondition.TournamentFinalPosition(QueryCondition.Operator.MORE, finalPosition = 10) val filterMore = QueryCondition.TournamentFinalPosition(QueryCondition.Operator.MORE, finalPosition = 10)
sessions = Filter.queryOn<Session>(realm, Query(filterMore)) sessions = Filter.queryOn(realm, Query(filterMore))
Assert.assertEquals(1, sessions.size) Assert.assertEquals(1, sessions.size)

@ -250,13 +250,19 @@ sealed class Criteria(override var uniqueIdentifier: Int) : IntIdentifiable, Row
queries queries
} }
is Duration -> { is Duration -> {
(0..12).map { i -> val hourlyQueries = (0..12).map { i ->
val more = QueryCondition.Duration(i * 60) val more = QueryCondition.Duration(i * 60)
more.operator = QueryCondition.Operator.MORE more.operator = QueryCondition.Operator.MORE_OR_EQUAL
val less = QueryCondition.Duration((i + 1) * 60) val less = QueryCondition.Duration((i + 1) * 60)
less.operator = QueryCondition.Operator.LESS less.operator = QueryCondition.Operator.LESS
Query(more, less) Query(more, less)
} }.toMutableList()
val moreThan12Hours = QueryCondition.Duration(12 * 60)
moreThan12Hours.operator = QueryCondition.Operator.MORE_OR_EQUAL
hourlyQueries.add(Query(moreThan12Hours))
hourlyQueries
} }
else -> throw PokerAnalyticsException.ComparisonCriteriaUnhandled(this) else -> throw PokerAnalyticsException.ComparisonCriteriaUnhandled(this)
} }

@ -55,16 +55,24 @@ sealed class QueryCondition : RowRepresentable {
} }
} }
inline fun <reified T : QueryCondition> more(): T { // inline fun <reified T : QueryCondition> more(): T {
return newInstance(T::class).apply { this.operator = Operator.MORE } // return newInstance(T::class).apply { this.operator = Operator.MORE }
// }
//
// inline fun <reified T : QueryCondition> less(): T {
// return newInstance(T::class).apply { this.operator = Operator.LESS }
// }
inline fun <reified T : QueryCondition> moreOrEqual(): T {
return newInstance(T::class).apply { this.operator = Operator.MORE_OR_EQUAL }
} }
inline fun <reified T : QueryCondition> less(): T { inline fun <reified T : QueryCondition> lessOrEqual(): T {
return newInstance(T::class).apply { this.operator = Operator.LESS } return newInstance(T::class).apply { this.operator = Operator.LESS_OR_EQUAL }
} }
inline fun <reified T : QueryCondition> moreOrLess(): ArrayList<T> { inline fun <reified T : QueryCondition> moreEqualOrLessEqual(): ArrayList<T> {
return arrayListOf(more(), less()) return arrayListOf(moreOrEqual(), lessOrEqual())
} }
fun <T : QueryCondition> valueOf(name: String): T { fun <T : QueryCondition> valueOf(name: String): T {
@ -104,7 +112,9 @@ sealed class QueryCondition : RowRepresentable {
ANY, ANY,
ALL, ALL,
MORE, MORE,
MORE_OR_EQUAL,
LESS, LESS,
LESS_OR_EQUAL,
EQUALS, EQUALS,
TRUE, TRUE,
NOTNULL NOTNULL
@ -116,7 +126,7 @@ sealed class QueryCondition : RowRepresentable {
val groupId: String val groupId: String
get() { get() {
return when (this.operator) { return when (this.operator) {
Operator.MORE, Operator.LESS -> return "${this.operator.name.toLowerCase().capitalize()}$baseId" Operator.MORE, Operator.LESS, Operator.MORE_OR_EQUAL, Operator.LESS_OR_EQUAL -> return "${this.operator.name.toLowerCase().capitalize()}$baseId"
else -> this.baseId else -> this.baseId
} }
} }
@ -124,7 +134,7 @@ sealed class QueryCondition : RowRepresentable {
val id: List<String> val id: List<String>
get() { get() {
when (this.operator) { when (this.operator) {
Operator.MORE, Operator.LESS -> return listOf("$baseId+${this.operator.name}") Operator.MORE, Operator.LESS, Operator.MORE_OR_EQUAL, Operator.LESS_OR_EQUAL -> return listOf("$baseId+${this.operator.name}")
else -> {} else -> {}
} }
@ -542,19 +552,19 @@ sealed class QueryCondition : RowRepresentable {
} }
class StartedFromDate(date: Date) : DateQuery(date) { class StartedFromDate(date: Date) : DateQuery(date) {
override var operator = Operator.MORE override var operator = Operator.MORE_OR_EQUAL
} }
class StartedToDate(date: Date) : DateQuery(date) { class StartedToDate(date: Date) : DateQuery(date) {
override var operator = Operator.LESS override var operator = Operator.LESS_OR_EQUAL
} }
class EndedFromDate(date: Date) : DateQuery(date) { class EndedFromDate(date: Date) : DateQuery(date) {
override var operator = Operator.MORE override var operator = Operator.MORE_OR_EQUAL
} }
class EndedToDate(date: Date) : DateQuery(date) { class EndedToDate(date: Date) : DateQuery(date) {
override var operator = Operator.LESS override var operator = Operator.LESS_OR_EQUAL
} }
class AnyDayOfWeek : ListOfInt() { class AnyDayOfWeek : ListOfInt() {
@ -636,11 +646,11 @@ sealed class QueryCondition : RowRepresentable {
object BiggestBetNotNull : NotNullQueryCondition() object BiggestBetNotNull : NotNullQueryCondition()
class StartedFromTime(date: Date) : TimeQuery(date) { class StartedFromTime(date: Date) : TimeQuery(date) {
override var operator = Operator.MORE override var operator = Operator.MORE_OR_EQUAL
} }
class EndedToTime(date: Date) : TimeQuery(date) { class EndedToTime(date: Date) : TimeQuery(date) {
override var operator = Operator.LESS override var operator = Operator.LESS_OR_EQUAL
} }
interface CustomFieldRelated { interface CustomFieldRelated {
@ -857,12 +867,22 @@ sealed class QueryCondition : RowRepresentable {
else -> realmQuery else -> realmQuery
} }
} }
Operator.MORE -> { Operator.MORE_OR_EQUAL -> {
when (this) { when (this) {
is SingleDate -> realmQuery.greaterThanOrEqualTo(fieldName, singleValue.startOfDay()) is SingleDate -> realmQuery.greaterThanOrEqualTo(fieldName, singleValue.startOfDay())
is Duration -> realmQuery.greaterThan(fieldName, netDuration)
is TournamentFinalPosition -> realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first()) is TournamentFinalPosition -> realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first())
is TournamentNumberOfPlayer -> realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first()) is TournamentNumberOfPlayer -> realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first())
is Duration -> realmQuery.greaterThanOrEqualTo(fieldName, netDuration)
is SingleInt -> realmQuery.greaterThanOrEqualTo(fieldName, singleValue)
is ListOfInt -> realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first())
is NetAmountLost -> realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first() * -1)
is ListOfDouble -> realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first() * sign)
else -> realmQuery
}
}
Operator.MORE -> {
when (this) {
is Duration -> realmQuery.greaterThan(fieldName, netDuration)
is SingleInt -> realmQuery.greaterThan(fieldName, singleValue) is SingleInt -> realmQuery.greaterThan(fieldName, singleValue)
is ListOfInt -> realmQuery.greaterThan(fieldName, listOfValues.first()) is ListOfInt -> realmQuery.greaterThan(fieldName, listOfValues.first())
is NetAmountLost -> realmQuery.lessThan(fieldName, listOfValues.first() * -1) is NetAmountLost -> realmQuery.lessThan(fieldName, listOfValues.first() * -1)
@ -870,12 +890,30 @@ sealed class QueryCondition : RowRepresentable {
else -> realmQuery else -> realmQuery
} }
} }
Operator.LESS -> { Operator.LESS_OR_EQUAL -> {
when (this) { when (this) {
is SingleDate -> realmQuery.lessThanOrEqualTo(fieldName, singleValue.endOfDay()) is SingleDate -> realmQuery.lessThanOrEqualTo(fieldName, singleValue.endOfDay())
is Duration -> realmQuery.lessThan(fieldName, netDuration)
is TournamentFinalPosition -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first()) is TournamentFinalPosition -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first())
is TournamentNumberOfPlayer -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first()) is TournamentNumberOfPlayer -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first())
is Duration -> realmQuery.lessThanOrEqualTo(fieldName, netDuration)
is SingleInt -> realmQuery.lessThanOrEqualTo(fieldName, singleValue)
is ListOfInt -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first())
is NetAmountLost -> {
realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first() * -1)
realmQuery.lessThan(fieldName, 0.0)
}
is NetAmountWon -> {
realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first())
realmQuery.greaterThan(fieldName, 0.0)
}
is ListOfDouble -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first() * sign)
else -> realmQuery
}
}
Operator.LESS -> {
when (this) {
is Duration -> realmQuery.lessThan(fieldName, netDuration)
is SingleInt -> realmQuery.lessThan(fieldName, singleValue) is SingleInt -> realmQuery.lessThan(fieldName, singleValue)
is ListOfInt -> realmQuery.lessThan(fieldName, listOfValues.first()) is ListOfInt -> realmQuery.lessThan(fieldName, listOfValues.first())
is NetAmountLost -> { is NetAmountLost -> {
@ -932,8 +970,8 @@ sealed class QueryCondition : RowRepresentable {
is PastDay -> RowViewType.TITLE_VALUE_CHECK.ordinal is PastDay -> RowViewType.TITLE_VALUE_CHECK.ordinal
else -> { else -> {
when (this.operator) { when (this.operator) {
Operator.MORE -> RowViewType.TITLE_VALUE_CHECK.ordinal Operator.MORE, Operator.MORE_OR_EQUAL -> RowViewType.TITLE_VALUE_CHECK.ordinal
Operator.LESS -> RowViewType.TITLE_VALUE_CHECK.ordinal Operator.LESS, Operator.LESS_OR_EQUAL -> RowViewType.TITLE_VALUE_CHECK.ordinal
else -> RowViewType.TITLE_CHECK.ordinal else -> RowViewType.TITLE_CHECK.ordinal
} }
} }
@ -946,8 +984,8 @@ sealed class QueryCondition : RowRepresentable {
is PastDay -> BottomSheetType.EDIT_TEXT is PastDay -> BottomSheetType.EDIT_TEXT
else -> { else -> {
when (this.operator) { when (this.operator) {
Operator.MORE -> BottomSheetType.EDIT_TEXT Operator.MORE, Operator.MORE_OR_EQUAL -> BottomSheetType.EDIT_TEXT
Operator.LESS -> BottomSheetType.EDIT_TEXT Operator.LESS, Operator.LESS_OR_EQUAL -> BottomSheetType.EDIT_TEXT
else -> BottomSheetType.NONE else -> BottomSheetType.NONE
} }
} }
@ -974,27 +1012,27 @@ sealed class QueryCondition : RowRepresentable {
is IsWeekDay -> R.string.week_days is IsWeekDay -> R.string.week_days
is IsWeekEnd -> R.string.weekend is IsWeekEnd -> R.string.weekend
is PastDay -> R.string.period_in_days is PastDay -> R.string.period_in_days
is TournamentNumberOfPlayer -> { // is TournamentNumberOfPlayer -> {
when (this.operator) { // when (this.operator) {
Operator.MORE -> R.string.minimum // Operator.MORE -> R.string.minimum
Operator.LESS -> R.string.maximum // Operator.LESS -> R.string.maximum
else -> null // else -> null
} // }
} // }
is NetAmountWon -> { // is NetAmountWon -> {
when (this.operator) { // when (this.operator) {
Operator.MORE -> R.string.won_amount_more_than // Operator.MORE -> R.string.won_amount_more_than
Operator.LESS -> R.string.won_amount_less_than // Operator.LESS -> R.string.won_amount_less_than
else -> null // else -> null
} // }
} // }
is NetAmountLost -> { // is NetAmountLost -> {
when (this.operator) { // when (this.operator) {
Operator.MORE -> R.string.lost_amount_more_than // Operator.MORE -> R.string.lost_amount_more_than
Operator.LESS -> R.string.lost_amount_less_than // Operator.LESS -> R.string.lost_amount_less_than
else -> null // else -> null
} // }
} // }
is TournamentFinalPosition -> { is TournamentFinalPosition -> {
when (this.operator) { when (this.operator) {
Operator.MORE -> R.string.minimum Operator.MORE -> R.string.minimum
@ -1004,8 +1042,10 @@ sealed class QueryCondition : RowRepresentable {
} }
else -> { else -> {
when (this.operator) { when (this.operator) {
Operator.MORE -> R.string.more_than Operator.MORE_OR_EQUAL -> R.string.more_or_equal_sign
Operator.LESS -> R.string.less_than Operator.MORE -> R.string.more_sign
Operator.LESS_OR_EQUAL -> R.string.less_or_equal_sign
Operator.LESS -> R.string.less_sign
else -> null else -> null
} }
} }

@ -75,7 +75,8 @@ interface FilterItemRow : RowRepresentable {
is QueryCondition.SingleValue<*>, is QueryCondition.ListOfValues<*> -> { is QueryCondition.SingleValue<*>, is QueryCondition.ListOfValues<*> -> {
val valueAsString: String? by map val valueAsString: String? by map
val hint = when (this.queryCondition?.operator) { val hint = when (this.queryCondition?.operator) {
QueryCondition.Operator.MORE, QueryCondition.Operator.LESS -> { QueryCondition.Operator.MORE, QueryCondition.Operator.LESS,
QueryCondition.Operator.MORE_OR_EQUAL, QueryCondition.Operator.LESS_OR_EQUAL -> {
when (this.queryCondition) { when (this.queryCondition) {
is QueryCondition.CustomFieldNumberQuery -> R.string.value is QueryCondition.CustomFieldNumberQuery -> R.string.value
is QueryCondition.CustomFieldAmountQuery -> R.string.amount is QueryCondition.CustomFieldAmountQuery -> R.string.amount

@ -124,7 +124,7 @@ sealed class FilterSectionRow(override val resId: Int?) : RowRepresentable {
MonthOfYear -> Criteria.MonthsOfYear.queryConditions.mapFirstCondition() MonthOfYear -> Criteria.MonthsOfYear.queryConditions.mapFirstCondition()
// Duration // Duration
SessionDuration -> QueryCondition.moreOrLess<QueryCondition.Duration>() SessionDuration -> QueryCondition.moreEqualOrLessEqual<QueryCondition.Duration>()
FixedDate -> arrayListOf(QueryCondition.StartedFromDate(Date()), QueryCondition.EndedToDate(Date())) // dummy constructor values FixedDate -> arrayListOf(QueryCondition.StartedFromDate(Date()), QueryCondition.EndedToDate(Date())) // dummy constructor values
Duration -> arrayListOf(QueryCondition.PastDay(0)) // dummy constructor values Duration -> arrayListOf(QueryCondition.PastDay(0)) // dummy constructor values
@ -141,21 +141,21 @@ sealed class FilterSectionRow(override val resId: Int?) : RowRepresentable {
TournamentType -> Criteria.TournamentTypes.queryConditions.mapFirstCondition() TournamentType -> Criteria.TournamentTypes.queryConditions.mapFirstCondition()
// CompletionPercentage -> arrayListOf() // CompletionPercentage -> arrayListOf()
TournamentFinalPosition -> QueryCondition.moreOrLess<QueryCondition.TournamentFinalPosition>() TournamentFinalPosition -> QueryCondition.moreEqualOrLessEqual<QueryCondition.TournamentFinalPosition>()
TournamentNumberOfPlayer -> QueryCondition.moreOrLess<QueryCondition.TournamentNumberOfPlayer>() TournamentNumberOfPlayer -> QueryCondition.moreEqualOrLessEqual<QueryCondition.TournamentNumberOfPlayer>()
TournamentEntryFee -> Criteria.TournamentFees.queryConditions.mapFirstCondition() TournamentEntryFee -> Criteria.TournamentFees.queryConditions.mapFirstCondition()
TournamentName -> Criteria.TournamentNames.queryConditions.mapFirstCondition() TournamentName -> Criteria.TournamentNames.queryConditions.mapFirstCondition()
TournamentFeature -> Criteria.TournamentFeatures.queryConditions.mapFirstCondition() TournamentFeature -> Criteria.TournamentFeatures.queryConditions.mapFirstCondition()
Location -> Criteria.Locations.queryConditions.mapFirstCondition() Location -> Criteria.Locations.queryConditions.mapFirstCondition()
Bankroll -> Criteria.Bankrolls.queryConditions.mapFirstCondition() Bankroll -> Criteria.Bankrolls.queryConditions.mapFirstCondition()
MultiTabling -> QueryCondition.moreOrLess<QueryCondition.NumberOfTable>() MultiTabling -> QueryCondition.moreEqualOrLessEqual<QueryCondition.NumberOfTable>()
//NumberOfPlayers -> QueryCondition.moreOrLess<QueryCondition.TournamentNumberOfPlayer>() //NumberOfPlayers -> QueryCondition.moreOrLess<QueryCondition.TournamentNumberOfPlayer>()
NumberOfRebuy -> QueryCondition.moreOrLess<QueryCondition.NumberOfRebuy>() NumberOfRebuy -> QueryCondition.moreEqualOrLessEqual<QueryCondition.NumberOfRebuy>()
// MultiPlayer -> arrayListOf() // MultiPlayer -> arrayListOf()
Value -> arrayListOf<QueryCondition>().apply { Value -> arrayListOf<QueryCondition>().apply {
addAll(QueryCondition.moreOrLess<QueryCondition.NetAmountWon>()) addAll(QueryCondition.moreEqualOrLessEqual<QueryCondition.NetAmountWon>())
addAll(QueryCondition.moreOrLess<QueryCondition.NetAmountLost>()) addAll(QueryCondition.moreEqualOrLessEqual<QueryCondition.NetAmountLost>())
} }
TransactionType -> Criteria.TransactionTypes.queryConditions.mapFirstCondition() TransactionType -> Criteria.TransactionTypes.queryConditions.mapFirstCondition()
is CustomField -> { is CustomField -> {
@ -165,14 +165,14 @@ sealed class FilterSectionRow(override val resId: Int?) : RowRepresentable {
Criteria.ListCustomFields(cf.id).queryConditions.mapFirstCondition() Criteria.ListCustomFields(cf.id).queryConditions.mapFirstCondition()
} }
cf.isAmountType -> { cf.isAmountType -> {
QueryCondition.moreOrLess<QueryCondition.CustomFieldAmountQuery>().apply { QueryCondition.moreEqualOrLessEqual<QueryCondition.CustomFieldAmountQuery>().apply {
this.forEach { this.forEach {
it.customFieldId = cf.id it.customFieldId = cf.id
} }
} }
} }
else -> { else -> {
QueryCondition.moreOrLess<QueryCondition.CustomFieldNumberQuery>().apply { QueryCondition.moreEqualOrLessEqual<QueryCondition.CustomFieldNumberQuery>().apply {
this.forEach { this.forEach {
it.customFieldId = cf.id it.customFieldId = cf.id
} }

@ -56,9 +56,9 @@ sealed class StaticReport(override var uniqueIdentifier: Int) : RowRepresentable
} }
// val basicReports: Set<StaticReport> = setOf(Duration)
val basicReports: Set<StaticReport> = setOf(General, Blinds, TournamentBuyin, val basicReports: Set<StaticReport> = setOf(General, Blinds, TournamentBuyin,
DayOfWeek, Location, TournamentType, Game, TableSize, Duration, OptimalDuration) DayOfWeek, Location, TournamentType, Game, TableSize, Duration, OptimalDuration)
} }
override fun getDisplayName(context: Context): String { override fun getDisplayName(context: Context): String {

@ -775,5 +775,9 @@
<string name="poker_rumble">Poker Rumble</string> <string name="poker_rumble">Poker Rumble</string>
<string name="join_discord">Join us on Discord!</string> <string name="join_discord">Join us on Discord!</string>
<string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string> <string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string>
<string name="more_or_equal_sign"><![CDATA[≥]]></string>
<string name="more_sign"><![CDATA[>]]></string>
<string name="less_or_equal_sign"><![CDATA[≤]]></string>
<string name="less_sign"><![CDATA[<]]></string>
</resources> </resources>

@ -779,6 +779,10 @@ La aplicación funciona con una suscripción anual para uso ilimitado, pero obti
<string name="poker_rumble">Poker Rumble</string> <string name="poker_rumble">Poker Rumble</string>
<string name="join_discord">Join us on Discord!</string> <string name="join_discord">Join us on Discord!</string>
<string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string> <string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string>
<string name="more_or_equal_sign"><![CDATA[≥]]></string>
<string name="more_sign"><![CDATA[>]]></string>
<string name="less_or_equal_sign"><![CDATA[≤]]></string>
<string name="less_sign"><![CDATA[<]]></string>
</resources> </resources>

@ -779,4 +779,8 @@
<string name="dhph_explanation">Vous pouvez changer le nombre de mains distribuées par heure. Cette valeur correspond au nombre total de mains distribuées à tous les joueur d\'une table en une heure. Exemple: Vous jouez 25 mains par heure sur des tables de 10 joueurs, entrez: 10 x 25 = 250.</string> <string name="dhph_explanation">Vous pouvez changer le nombre de mains distribuées par heure. Cette valeur correspond au nombre total de mains distribuées à tous les joueur d\'une table en une heure. Exemple: Vous jouez 25 mains par heure sur des tables de 10 joueurs, entrez: 10 x 25 = 250.</string>
<string name="dealt_hands_per_hour">Mains par heure</string> <string name="dealt_hands_per_hour">Mains par heure</string>
<string name="errors">erreur(s)</string> <string name="errors">erreur(s)</string>
<string name="more_or_equal_sign"><![CDATA[≥]]></string>
<string name="more_sign"><![CDATA[>]]></string>
<string name="less_or_equal_sign"><![CDATA[≤]]></string>
<string name="less_sign"><![CDATA[<]]></string>
</resources> </resources>

@ -774,5 +774,9 @@
<string name="poker_rumble">Poker Rumble</string> <string name="poker_rumble">Poker Rumble</string>
<string name="join_discord">Join us on Discord!</string> <string name="join_discord">Join us on Discord!</string>
<string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string> <string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string>
<string name="more_or_equal_sign"><![CDATA[≥]]></string>
<string name="more_sign"><![CDATA[>]]></string>
<string name="less_or_equal_sign"><![CDATA[≤]]></string>
<string name="less_sign"><![CDATA[<]]></string>
</resources> </resources>

@ -774,5 +774,9 @@
<string name="poker_rumble">Poker Rumble</string> <string name="poker_rumble">Poker Rumble</string>
<string name="join_discord">Join us on Discord!</string> <string name="join_discord">Join us on Discord!</string>
<string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string> <string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string>
<string name="more_or_equal_sign"><![CDATA[≥]]></string>
<string name="more_sign"><![CDATA[>]]></string>
<string name="less_or_equal_sign"><![CDATA[≤]]></string>
<string name="less_sign"><![CDATA[<]]></string>
</resources> </resources>

@ -778,5 +778,9 @@
<string name="poker_rumble">Poker Rumble</string> <string name="poker_rumble">Poker Rumble</string>
<string name="join_discord">Join us on Discord!</string> <string name="join_discord">Join us on Discord!</string>
<string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string> <string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string>
<string name="more_or_equal_sign"><![CDATA[≥]]></string>
<string name="more_sign"><![CDATA[>]]></string>
<string name="less_or_equal_sign"><![CDATA[≤]]></string>
<string name="less_sign"><![CDATA[<]]></string>
</resources> </resources>

@ -773,5 +773,9 @@
<string name="face_id_usage_description">O Poker Analytics deseja acessar o Face ID para permitir que você desbloqueie o aplicativo com reconhecimento facial</string> <string name="face_id_usage_description">O Poker Analytics deseja acessar o Face ID para permitir que você desbloqueie o aplicativo com reconhecimento facial</string>
<string name="poker_rumble">Poker Rumble</string> <string name="poker_rumble">Poker Rumble</string>
<string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string> <string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string>
<string name="more_or_equal_sign"><![CDATA[≥]]></string>
<string name="more_sign"><![CDATA[>]]></string>
<string name="less_or_equal_sign"><![CDATA[≤]]></string>
<string name="less_sign"><![CDATA[<]]></string>
</resources> </resources>

@ -775,5 +775,9 @@
<string name="poker_rumble">Poker Rumble</string> <string name="poker_rumble">Poker Rumble</string>
<string name="join_discord">Join us on Discord!</string> <string name="join_discord">Join us on Discord!</string>
<string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string> <string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string>
<string name="more_or_equal_sign"><![CDATA[≥]]></string>
<string name="more_sign"><![CDATA[>]]></string>
<string name="less_or_equal_sign"><![CDATA[≤]]></string>
<string name="less_sign"><![CDATA[<]]></string>
</resources> </resources>

@ -768,5 +768,9 @@
<string name="poker_rumble">Poker Rumble</string> <string name="poker_rumble">Poker Rumble</string>
<string name="join_discord">Join us on Discord!</string> <string name="join_discord">Join us on Discord!</string>
<string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string> <string name="discord_feed_message">We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!</string>
<string name="more_or_equal_sign"><![CDATA[≥]]></string>
<string name="more_sign"><![CDATA[>]]></string>
<string name="less_or_equal_sign"><![CDATA[≤]]></string>
<string name="less_sign"><![CDATA[<]]></string>
</resources> </resources>

@ -826,5 +826,9 @@
<string name="destination">Destination</string> <string name="destination">Destination</string>
<string name="optimal_duration">Optimal duration</string> <string name="optimal_duration">Optimal duration</string>
<string name="show_inapp_badges">Show in-app badges</string> <string name="show_inapp_badges">Show in-app badges</string>
<string name="more_or_equal_sign"><![CDATA[≥]]></string>
<string name="more_sign"><![CDATA[>]]></string>
<string name="less_or_equal_sign"><![CDATA[≤]]></string>
<string name="less_sign"><![CDATA[<]]></string>
</resources> </resources>

Loading…
Cancel
Save