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() {
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()

@ -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]
// */

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

Loading…
Cancel
Save