diff --git a/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/CustomFieldFilterInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/CustomFieldFilterInstrumentedUnitTest.kt index 3a6d91e6..f3880227 100644 --- a/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/CustomFieldFilterInstrumentedUnitTest.kt +++ b/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/CustomFieldFilterInstrumentedUnitTest.kt @@ -23,23 +23,28 @@ class CustomFieldFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() { realm.beginTransaction() val cf1 = CustomField() + cf1.id = "1" cf1.type = CustomField.Type.LIST.ordinal - cf1.addEntry() - cf1.addEntry() - cf1.entries.first()?.value = "super" - cf1.entries.last()?.value = "nul" + + val cfe1 = CustomFieldEntry() + val cfe2 = CustomFieldEntry() + cfe1.value = "super" + cfe2.value = "nul" + + cf1.entries.add(cfe1) + cf1.entries.add(cfe2) val s1 = Session.testInstance(100.0, false, Date(), 1) - s1.customFieldEntries.add(cf1.entries.first()) + s1.customFieldEntries.add(cfe1) val s2 = Session.testInstance(100.0, true, Date(), 1) - s2.customFieldEntries.add(cf1.entries.last()) + s2.customFieldEntries.add(cfe2) realm.commitTransaction() - val sessions = Filter.queryOn(realm, Query(QueryCondition.CustomFieldListQuery(cf1.entries.first()!!))) + val sessions = Filter.queryOn(realm, Query(QueryCondition.CustomFieldListQuery(cfe2))) Assert.assertEquals(1, sessions.size) sessions[0]?.run { - Assert.assertEquals(s1.id, (this).id) + Assert.assertEquals(s2.id, (this).id) } } @@ -50,15 +55,19 @@ class CustomFieldFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() { realm.beginTransaction() val cf1 = CustomField() + cf1.id = "1234" cf1.type = CustomField.Type.AMOUNT.ordinal + val cfe1 = CustomFieldEntry() + cfe1.id = "999" cf1.entries.add(cfe1) - cfe1.value = "30.0" + cfe1.numericValue = 30.0 val cfe2 = CustomFieldEntry() + cfe2.id = "888" cf1.entries.add(cfe2) - cfe2.value = "100.0" + cfe2.numericValue = 100.0 val s1 = Session.testInstance(100.0, false, Date(), 1) s1.customFieldEntries.add(cfe1) diff --git a/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/DateFilterInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/DateFilterInstrumentedUnitTest.kt index c0f7a69b..d619df95 100644 --- a/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/DateFilterInstrumentedUnitTest.kt +++ b/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/DateFilterInstrumentedUnitTest.kt @@ -380,7 +380,7 @@ class DateFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() { Session.testInstance(100.0, false, cal.time, 1) - cal.add(Calendar.HOUR_OF_DAY, 2) // adds one hour + cal.add(Calendar.DAY_OF_YEAR, 2) // adds one hour val s2 = Session.testInstance(100.0, true, cal.time, 1) realm.commitTransaction() @@ -407,7 +407,7 @@ class DateFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() { cal.time = Date() // sets calendar time/date val s1 = Session.testInstance(100.0, false, cal.time, 1) - cal.add(Calendar.HOUR_OF_DAY, 2) // adds one hour + cal.add(Calendar.DAY_OF_YEAR, 2) // adds one hour Session.testInstance(100.0, true, cal.time, 1) realm.commitTransaction() @@ -436,7 +436,7 @@ class DateFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() { Session.testInstance(100.0, false, cal.time, 1) - cal.add(Calendar.HOUR_OF_DAY, 2) // adds one hour + cal.add(Calendar.DAY_OF_YEAR, 2) // adds one hour val s2 = Session.testInstance(100.0, true, cal.time, 1) realm.commitTransaction() @@ -464,7 +464,7 @@ class DateFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() { cal.time = Date() // sets calendar time/date val s1 = Session.testInstance(100.0, false, cal.time, 1) - cal.add(Calendar.HOUR_OF_DAY, 2) // adds one hour + cal.add(Calendar.DAY_OF_YEAR, 2) // adds one hour Session.testInstance(100.0, true, cal.time, 1) realm.commitTransaction() diff --git a/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/SessionFilterInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/SessionFilterInstrumentedUnitTest.kt index 81338164..3bb0073b 100644 --- a/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/SessionFilterInstrumentedUnitTest.kt +++ b/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/SessionFilterInstrumentedUnitTest.kt @@ -524,7 +524,7 @@ class SessionFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() { realm.commitTransaction() val filterMore = QueryCondition.NetAmountWon() - val filterElementRow = QueryCondition.more().apply { listOfValues = arrayListOf(200.0) } + val filterElementRow = QueryCondition.more().apply { listOfValues = arrayListOf(199.0) } filterElementRow.filterSectionRow = FilterSectionRow.Value filterMore.updateValueBy(FilterCondition(arrayListOf(filterElementRow))) @@ -564,7 +564,7 @@ class SessionFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() { s4.result!!.buyin = 200.0 realm.commitTransaction() - val filterMore = QueryCondition.NumberOfRebuy(QueryCondition.Operator.MORE, 5.0) + val filterMore = QueryCondition.NumberOfRebuy(QueryCondition.Operator.MORE, 4.0) val sessions = Filter.queryOn(realm, Query(filterMore)) Assert.assertEquals(2, sessions.size) diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt index db9c8813..5926723f 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt @@ -1,6 +1,7 @@ package net.pokeranalytics.android.model.filter import android.content.Context +import com.google.android.libraries.places.internal.it import com.ibm.icu.text.RuleBasedNumberFormat import io.realm.Realm import io.realm.RealmQuery @@ -592,7 +593,6 @@ sealed class QueryCondition : FilterElementRow { } open class CustomFieldNumberQuery() : ListOfDouble(), CustomFieldRelated { - override var customFieldId: String = "" override var operator: Operator = Operator.EQUALS @@ -642,8 +642,8 @@ sealed class QueryCondition : FilterElementRow { constructor(customFieldEntry: CustomFieldEntry) : this() { this.setObject(customFieldEntry) - this.customFieldId = - customFieldEntry.customField?.id ?: throw PokerAnalyticsException.QueryValueMapUnexpectedValue + this.customFieldId = customFieldEntry.customFields?.firstOrNull()?.id + ?: throw PokerAnalyticsException.QueryValueMapUnexpectedValue } override fun entityName(realm: Realm): String { @@ -808,17 +808,19 @@ sealed class QueryCondition : FilterElementRow { fieldName, singleValue?.startOfDay() ?: throw PokerAnalyticsException.FilterElementExpectedValueMissing ) - is Duration -> realmQuery.greaterThanOrEqualTo( + is Duration -> realmQuery.greaterThan( fieldName, netDuration ?: throw PokerAnalyticsException.FilterElementExpectedValueMissing ) - is SingleInt -> realmQuery.greaterThanOrEqualTo( + is TournamentFinalPosition -> realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first()) + is TournamentNumberOfPlayer -> realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first()) + is SingleInt -> realmQuery.greaterThan( fieldName, singleValue ?: throw PokerAnalyticsException.FilterElementExpectedValueMissing ) - is ListOfInt -> realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first()) - is NetAmountLost -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first() * -1) - is ListOfDouble -> realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first() * sign) + is ListOfInt -> realmQuery.greaterThan(fieldName, listOfValues.first()) + is NetAmountLost -> realmQuery.lessThan(fieldName, listOfValues.first() * -1) + is ListOfDouble -> realmQuery.greaterThan(fieldName, listOfValues.first() * sign) else -> realmQuery } } @@ -828,24 +830,26 @@ sealed class QueryCondition : FilterElementRow { fieldName, singleValue?.endOfDay() ?: throw PokerAnalyticsException.FilterElementExpectedValueMissing ) - is Duration -> realmQuery.lessThanOrEqualTo( + is Duration -> realmQuery.lessThan( fieldName, netDuration ?: throw PokerAnalyticsException.FilterElementExpectedValueMissing ) - is SingleInt -> realmQuery.lessThanOrEqualTo( + is TournamentFinalPosition -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first()) + is TournamentNumberOfPlayer -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first()) + is SingleInt -> realmQuery.lessThan( fieldName, singleValue ?: throw PokerAnalyticsException.FilterElementExpectedValueMissing ) - is ListOfInt -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first()) + is ListOfInt -> realmQuery.lessThan(fieldName, listOfValues.first()) is NetAmountLost -> { - realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first() * -1) + realmQuery.greaterThan(fieldName, listOfValues.first() * -1) realmQuery.lessThan(fieldName, 0.0) } is NetAmountWon -> { - realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first()) + realmQuery.lessThan(fieldName, listOfValues.first()) realmQuery.greaterThan(fieldName, 0.0) } - is ListOfDouble -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first() * sign) + is ListOfDouble -> realmQuery.lessThan(fieldName, listOfValues.first() * sign) else -> realmQuery } } @@ -924,9 +928,9 @@ sealed class QueryCondition : FilterElementRow { is DuringThisMonth -> R.string.current_month is DuringThisYear -> R.string.current_year is StartedFromDate -> R.string.from - is StartedFromTime -> R.string.from_hour_ + is StartedFromTime -> R.string.from_time is EndedToDate -> R.string.to - is EndedToTime -> R.string.to_hour_ + is EndedToTime -> R.string.to_time is IsLive -> R.string.live is IsOnline -> R.string.online is IsWeekDay -> R.string.week_days diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt index d0cbac11..7d124875 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt @@ -41,18 +41,13 @@ open class Filter : RealmObject(), RowRepresentable, Identifiable, Deletable, Co } inline fun queryOn(realm: Realm, query: Query, sortField: String? = null): RealmResults { - val realmQuery = realm.where() - sortField?.let { + val realmQuery = realm.where() + sortField?.let { return query.queryWith(realmQuery).sort(it).findAll() - } ?: run { + } ?: run { return query.queryWith(realmQuery).findAll() } - } - - fun sortedByUsage(realm: Realm): RealmResults { - return realm.where(Filter::class.java).findAll().sort("usageCount") - } - + } } @PrimaryKey diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index 455284fd..c0b74242 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -98,8 +98,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat TournamentNumberOfPlayer::class.java -> "tournamentNumberOfPlayers" TournamentFinalPosition::class.java -> "result.tournamentFinalPosition" TournamentFee::class.java -> "tournamentEntryFee" - StartedFromDate::class.java, StartedToDate::class.java -> "startDate" - EndedFromDate::class.java, EndedToDate::class.java -> "startDate" + StartedFromDate::class.java, StartedToDate::class.java, EndedFromDate::class.java, EndedToDate::class.java -> "startDate" AnyDayOfWeek::class.java, IsWeekEnd::class.java, IsWeekDay::class.java -> "dayOfWeek" AnyMonthOfYear::class.java -> "month" AnyYear::class.java -> "year" diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Transaction.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Transaction.kt index 03b6ddb8..e8b8ecca 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Transaction.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Transaction.kt @@ -42,7 +42,7 @@ open class Transaction : RealmObject(), Manageable, StaticRowRepresentableDataSo QueryCondition.AnyBankroll::class.java -> "bankroll.id" QueryCondition.AnyTransactionType::class.java -> "type.id" - QueryCondition.StartedFromDate::class.java, QueryCondition.StartedToDate::class.java -> "date" + QueryCondition.StartedFromDate::class.java, QueryCondition.StartedToDate::class.java, QueryCondition.EndedFromDate::class.java, QueryCondition.EndedToDate::class.java -> "date" QueryCondition.AnyDayOfWeek::class.java, QueryCondition.IsWeekEnd::class.java, QueryCondition.IsWeekDay::class.java -> "dayOfWeek" QueryCondition.AnyMonthOfYear::class.java -> "month" QueryCondition.AnyYear::class.java -> "year" diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt index 58b16f2d..611595c2 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt @@ -201,7 +201,10 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource, private fun updateMostUsedFilters() { var nbChips = 0 - val filters = getRealm().sorted(Filter::class.java) + val filters = getRealm().sorted(Filter::class.java).filter { + it.filterableType == this.filterableType + } + val currentFilterId = Preferences.getActiveFilterId(requireContext()) if (isUpdating || filters.isEmpty() || (filters.size == 1 && filters.first()?.id == currentFilterId)) { diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index e6436138..33452198 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -16,6 +16,9 @@ d\'essai gratuit Cette bankroll contient au moins une transaction empêchant la suppression. + À partir de + Jusqu\'à + Adresse Suggestions de noms @@ -296,8 +299,8 @@ La fonctionnalité est désactivée. Vous pouvez en apprendre plus ou l\'acheter directement. Récupération du fichier sur iCloud… perdu - Perte inférieur à - Perte supérieur à + Perte inférieure à + Perte supérieure à m Pause(s) effectuée(s) Mail diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4c2be992..309edcec 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -56,6 +56,10 @@ One or more transactions are associated with this bankroll, please delete the linked transaction(s) first. Transaction type + From + To + + %s ago