From 6722ba22186c3ca1f59cbcf51befb749ea83097d Mon Sep 17 00:00:00 2001 From: Laurent Date: Mon, 28 Sep 2020 18:27:00 +0200 Subject: [PATCH] Fixes issue with multi values list loading --- .../android/model/filter/QueryCondition.kt | 14 +++++++------- .../android/model/realm/Filter.kt | 8 +++++++- .../modules/filter/FilterDetailsViewModel.kt | 18 +++++++----------- 3 files changed, 21 insertions(+), 19 deletions(-) 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 115cfd97..0822fa40 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 @@ -560,23 +560,23 @@ sealed class QueryCondition : RowRepresentable { } class AnyMonthOfYear() : ListOfInt() { - override fun labelForValue(value: Int, context: Context): String { - return DateFormatSymbols.getInstance(Locale.getDefault()).months[value].capitalize() - } - constructor(month: Int) : this() { listOfValues = arrayListOf(month) } - } - class AnyYear() : UserInputListOfInt() { override fun labelForValue(value: Int, context: Context): String { - return "$value" + return DateFormatSymbols.getInstance(Locale.getDefault()).months[value].capitalize() } + } + class AnyYear() : ListOfInt() { constructor(year: Int) : this() { listOfValues = arrayListOf(year) } + + override fun labelForValue(value: Int, context: Context): String { + return "$value" + } } object IsWeekDay : TrueQueryCondition() 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 5dc1487c..84a9e8a7 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 @@ -136,10 +136,16 @@ open class Filter : RealmObject(), RowRepresentable, Editable, Deletable, Counta Timber.d("list of saved queries ${filterConditions.map { it.queryCondition.id }}") Timber.d("list of contains ${filterElementRow.id}") val contained = filterConditions.flatMap { it.queryCondition.id }.contains(filterElementRow.id.first()) - Timber.d("list of : $contained") + Timber.d("is contained: $contained") return contained } + fun filterCondition(filterElementRow: QueryCondition): FilterCondition? { + return filterConditions.firstOrNull { + it.queryCondition.id.contains(filterElementRow.id.first()) + } + } + // /** // * Get the saved value for the given [filterElementRow] // */ diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FilterDetailsViewModel.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FilterDetailsViewModel.kt index b6780267..f96bfe0b 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FilterDetailsViewModel.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FilterDetailsViewModel.kt @@ -11,6 +11,7 @@ import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow import net.pokeranalytics.android.ui.view.rowrepresentable.FilterItemRow import net.pokeranalytics.android.util.NULL_TEXT +import timber.log.Timber class FilterDetailsViewModelFactory(var filter: Filter, var categoryRow: FilterCategoryRow): ViewModelProvider.Factory { @@ -79,21 +80,16 @@ class FilterDetailsViewModel(categoryRow: FilterCategoryRow, var filter: Filter) } private fun defineSelectedItems() { + this.rows.filterIsInstance().forEach { item -> val condition = item.rawCondition - if (this.filter.contains(condition)) { - - // Load items with appropriate value - this.filter.filterConditions.firstOrNull { - it.queryCondition.id == condition.id - }?.let { - item.updateValue(it) -// item.queryCondition?.updateValueBy(it) - this.selectedRows.add(item) - } - } + Timber.d("condition id: ${condition.id}") + this.filter.filterCondition(condition)?.let { + item.updateValue(it) + this.selectedRows.add(item) + } } }