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 a5223c38..b62e3e56 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 @@ -87,6 +87,14 @@ sealed class QueryCondition : FilterElementRow { val baseId = this::class.simpleName ?: throw PokerAnalyticsException.FilterElementUnknownName + val groupId: String + get() { + when (this.operator) { + Operator.MORE, Operator.LESS -> return "${this.operator.name.toLowerCase().capitalize()}$baseId" + } + return baseId + } + val id: List get() { when (this.operator) { Operator.MORE, Operator.LESS -> return listOf("$baseId+${this.operator.name}") @@ -164,10 +172,14 @@ sealed class QueryCondition : FilterElementRow { override fun labelForValue(value: Date): String { return value.toString() } + override var listOfValues = ArrayList() override var singleValue: Date get() { return listOfValues.firstOrNull() ?: Date() } - set(value) { listOfValues.add(value) } + set(value) { + listOfValues.removeAll(this.listOfValues) + listOfValues.add(value) + } override fun updateValueBy(filterCondition: FilterCondition) { super.updateValueBy(filterCondition) @@ -181,7 +193,10 @@ sealed class QueryCondition : FilterElementRow { } override var singleValue: Int get() { return listOfValues.firstOrNull() ?: 0 } - set(value) { listOfValues.add(value) } + set(value) { + listOfValues.removeAll(this.listOfValues) + listOfValues.add(value) + } override fun updateValueBy(filterCondition: FilterCondition) { super.updateValueBy(filterCondition) @@ -398,7 +413,7 @@ sealed class QueryCondition : FilterElementRow { class Duration: SingleInt() { var minutes:Int get() { return singleValue } - set(value) { singleValue = value } + set(value) { listOfValues = arrayListOf(value) } override val viewType: Int = RowViewType.TITLE_VALUE_CHECK.ordinal override val bottomSheetType: BottomSheetType = BottomSheetType.DOUBLE_EDIT_TEXT @@ -407,14 +422,14 @@ sealed class QueryCondition : FilterElementRow { class StartedFromTime(startTime:Date = Date().startOfDay()): TimeQuery() { override var operator = Operator.MORE init { - this.singleValue = startTime + this.listOfValues = arrayListOf(startTime) } } class EndedToTime(endTime:Date = Date().endOfDay()): TimeQuery() { override var operator = Operator.LESS init { - this.singleValue = endTime + this.listOfValues = arrayListOf(endTime) } } 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 89aae3d1..1c8681ee 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 @@ -8,7 +8,6 @@ import net.pokeranalytics.android.model.filter.Query import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow -import timber.log.Timber import java.util.* /** @@ -64,13 +63,13 @@ open class Filter : RealmObject(), RowRepresentable { println("list of querys previous: ${this.filterConditions.map { it.queryCondition.id }}") filterConditionRows .map { - it.filterSectionRow + it.groupId } .distinct() - .forEach { filterName-> + .forEach { groupId-> filterConditionRows .filter { - it.filterSectionRow == filterName + it.groupId == groupId } .apply { @@ -79,7 +78,7 @@ open class Filter : RealmObject(), RowRepresentable { casted.addAll(this) val newFilterCondition = FilterCondition(casted) val previousCondition = filterConditions.filter { - it.filterName == newFilterCondition.filterName + it.filterName == newFilterCondition.filterName && it.operator == newFilterCondition.operator } filterConditions.removeAll(previousCondition) filterConditions.add(newFilterCondition) 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 e9cae7ad..878bef58 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 @@ -90,6 +90,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat IsToday::class.java, WasYesterday::class.java, WasTodayAndYesterday::class.java, DuringThisYear::class.java, DuringThisMonth::class.java, DuringThisWeek::class.java -> "startDate" StartedFromTime::class.java -> "startDateHourMinuteComponent" EndedToTime::class.java -> "endDateHourMinuteComponent" + Duration::class.java -> "netDuration" else -> null } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt index 044b7ad9..bb3adb40 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt @@ -63,6 +63,7 @@ open class FilterDetailsFragment : RealmFragment(), StaticRowRepresentableDataS override fun onBackPressed() { super.onBackPressed() + println("<<<<< back pressed") saveData() }