Fixes issue with multi values list loading

filterfix
Laurent 5 years ago
parent f38a85b48f
commit 6722ba2218
  1. 14
      app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt
  2. 8
      app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt
  3. 12
      app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FilterDetailsViewModel.kt

@ -560,23 +560,23 @@ sealed class QueryCondition : RowRepresentable {
} }
class AnyMonthOfYear() : ListOfInt() { class AnyMonthOfYear() : ListOfInt() {
override fun labelForValue(value: Int, context: Context): String {
return DateFormatSymbols.getInstance(Locale.getDefault()).months[value].capitalize()
}
constructor(month: Int) : this() { constructor(month: Int) : this() {
listOfValues = arrayListOf(month) listOfValues = arrayListOf(month)
} }
}
class AnyYear() : UserInputListOfInt() {
override fun labelForValue(value: Int, context: Context): String { 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() { constructor(year: Int) : this() {
listOfValues = arrayListOf(year) listOfValues = arrayListOf(year)
} }
override fun labelForValue(value: Int, context: Context): String {
return "$value"
}
} }
object IsWeekDay : TrueQueryCondition() object IsWeekDay : TrueQueryCondition()

@ -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 saved queries ${filterConditions.map { it.queryCondition.id }}")
Timber.d("list of contains ${filterElementRow.id}") Timber.d("list of contains ${filterElementRow.id}")
val contained = filterConditions.flatMap { it.queryCondition.id }.contains(filterElementRow.id.first()) val contained = filterConditions.flatMap { it.queryCondition.id }.contains(filterElementRow.id.first())
Timber.d("list of : $contained") Timber.d("is contained: $contained")
return 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] // * Get the saved value for the given [filterElementRow]
// */ // */

@ -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.FilterCategoryRow
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterItemRow import net.pokeranalytics.android.ui.view.rowrepresentable.FilterItemRow
import net.pokeranalytics.android.util.NULL_TEXT import net.pokeranalytics.android.util.NULL_TEXT
import timber.log.Timber
class FilterDetailsViewModelFactory(var filter: Filter, var categoryRow: FilterCategoryRow): ViewModelProvider.Factory { class FilterDetailsViewModelFactory(var filter: Filter, var categoryRow: FilterCategoryRow): ViewModelProvider.Factory {
@ -79,25 +80,20 @@ class FilterDetailsViewModel(categoryRow: FilterCategoryRow, var filter: Filter)
} }
private fun defineSelectedItems() { private fun defineSelectedItems() {
this.rows.filterIsInstance<FilterItemRow>().forEach { item -> this.rows.filterIsInstance<FilterItemRow>().forEach { item ->
val condition = item.rawCondition val condition = item.rawCondition
if (this.filter.contains(condition)) { Timber.d("condition id: ${condition.id}")
// Load items with appropriate value this.filter.filterCondition(condition)?.let {
this.filter.filterConditions.firstOrNull {
it.queryCondition.id == condition.id
}?.let {
item.updateValue(it) item.updateValue(it)
// item.queryCondition?.updateValueBy(it)
this.selectedRows.add(item) this.selectedRows.add(item)
} }
} }
} }
}
fun updateRowsSelection(adapter: RowRepresentableAdapter, row: RowRepresentable, forceDeselection: Boolean = false) { fun updateRowsSelection(adapter: RowRepresentableAdapter, row: RowRepresentable, forceDeselection: Boolean = false) {
if (this.selectedRows.contains(row) || forceDeselection) { if (this.selectedRows.contains(row) || forceDeselection) {

Loading…
Cancel
Save