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 b76caf0e..8ef852d4 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 @@ -187,9 +187,9 @@ sealed class QueryCondition : RowRepresentable { fun getDisplayName(context: Context, value: T): String { val prefix = this.resId?.let { - context.getString(it) + " " + context.getString(it, value.toString()) // + " " } ?: "" - return prefix + labelForValue(value, context) + return prefix // + labelForValue(value, context) } } @@ -249,6 +249,7 @@ sealed class QueryCondition : RowRepresentable { } abstract class SingleInt(value: Int) : SingleValue(value) { + override fun labelForValue(value: Int, context: Context): String { return value.toString() } @@ -561,9 +562,9 @@ sealed class QueryCondition : RowRepresentable { override var operator = Operator.EQUALS override val viewType: Int = RowViewType.TITLE_VALUE_CHECK.ordinal - override fun labelForValue(value: Int, context: Context): String { - return value.toString() - } +// override fun labelForValue(value: Int, context: Context): String { +// return value.toString() +// } // override fun entityName(context: Context): String { // return this.resId?.let { 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 547e041e..ef195c2c 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 @@ -104,7 +104,9 @@ open class Session : RealmObject(), Savable, RowUpdatable, RowRepresentable, Tim AnyDayOfWeek::class.java, IsWeekEnd::class.java, IsWeekDay::class.java -> "dayOfWeek" AnyMonthOfYear::class.java -> "month" AnyYear::class.java -> "year" - PastDay::class.java, IsToday::class.java, WasYesterday::class.java, WasTodayAndYesterday::class.java, DuringThisYear::class.java, DuringThisMonth::class.java, DuringThisWeek::class.java -> "startDate" + PastDay::class.java, 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" diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/calendar/CalendarFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/calendar/CalendarFragment.kt index e940adb6..85c03329 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/calendar/CalendarFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/calendar/CalendarFragment.kt @@ -20,6 +20,7 @@ import net.pokeranalytics.android.databinding.FragmentCalendarBinding import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.model.Criteria import net.pokeranalytics.android.model.combined +import net.pokeranalytics.android.model.filter.Query import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.model.realm.ComputableResult import net.pokeranalytics.android.model.realm.UserConfig @@ -67,6 +68,12 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable private var sortedMonthlyReports: SortedMap = HashMap().toSortedMap() private var sortedYearlyReports: SortedMap = HashMap().toSortedMap() + private val slidingMonthQuery = Query(QueryCondition.PastDay(30)) + private val slidingYearQuery = Query(QueryCondition.PastDay(365)) + + private var slidingMonthResults: ComputedResults? = null + private var slidingYearResults: ComputedResults? = null + private var datesForRows: HashMap = HashMap() private var sessionTypeCondition: QueryCondition? = null @@ -213,7 +220,7 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable } } - binding.filterTimeAll?.setOnCheckedChangeListener { _, isChecked -> + binding.filterTimeAll.setOnCheckedChangeListener { _, isChecked -> selectTimeFilter(TimeFilter.ALL, isChecked) } @@ -260,7 +267,7 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable TimeFilter.values().forEach { tf -> if (tf != timeFilter) { when (tf) { - TimeFilter.ALL -> binding.filterTimeAll?.isChecked = false + TimeFilter.ALL -> binding.filterTimeAll.isChecked = false TimeFilter.MONTH -> binding.filterTimeMonth.isChecked = false TimeFilter.YEAR -> binding.filterTimeYear.isChecked = false } @@ -269,7 +276,7 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable displayData() } else if (currentTimeFilter == timeFilter) { when (timeFilter) { - TimeFilter.ALL -> binding.filterTimeAll?.isChecked = true + TimeFilter.ALL -> binding.filterTimeAll.isChecked = true TimeFilter.MONTH -> binding.filterTimeMonth.isChecked = true TimeFilter.YEAR -> binding.filterTimeYear.isChecked = true } @@ -317,6 +324,15 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable val allReport = Calculator.computeStats(realm, options = allOptions) this.allComputedResults = allReport.results.first() + // Sliding Month [sm] + val smOptions = Calculator.Options( + progressValues = Calculator.Options.ProgressValues.STANDARD, + stats = requiredStats, + query = this.slidingMonthQuery) + + val smReport = Calculator.computeStats(realm, options = smOptions) + this.slidingMonthResults = smReport.results.first() + // Month val monthlyReports: HashMap = HashMap() @@ -351,6 +367,15 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable } } + // Sliding Year [sm] + val syOptions = Calculator.Options( + progressValues = Calculator.Options.ProgressValues.STANDARD, + stats = requiredStats, + query = this.slidingYearQuery) + + val syReport = Calculator.computeStats(realm, options = syOptions) + this.slidingYearResults = syReport.results.first() + calendar.time = Date().startOfYear() // Year @@ -431,6 +456,17 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable // MONTH TimeFilter.MONTH -> { + + slidingMonthResults?.computedStat(this.currentStat)?.let { computedStat -> + val row = CustomizableRowRepresentable( + customViewType = RowViewType.TITLE_VALUE_ARROW, + title = this.slidingMonthQuery.getName(requireContext()), + valueTextFormat = computedStat.textFormat, + isSelectable = true + ) + rows.add(row) + } + val years: ArrayList = ArrayList() sortedMonthlyReports.keys.forEach { date -> if (!years.contains(date.getDateYear())) { @@ -452,16 +488,27 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable isSelectable = true ) - rows.add(row) - datesForRows[row] = date + this.rows.add(row) + this.datesForRows[row] = date } } } // YEAR TimeFilter.YEAR -> { - sortedYearlyReports.keys.forEach { date -> - sortedYearlyReports[date]?.computedStat(currentStat)?.let { computedStat -> + + this.slidingYearResults?.computedStat(this.currentStat)?.let { computedStat -> + val row = CustomizableRowRepresentable( + customViewType = RowViewType.TITLE_VALUE_ARROW, + title = this.slidingYearQuery.getName(requireContext()), + valueTextFormat = computedStat.textFormat, + isSelectable = true + ) + this.rows.add(row) + } + + this.sortedYearlyReports.keys.forEach { date -> + this.sortedYearlyReports[date]?.computedStat(this.currentStat)?.let { computedStat -> val row = CustomizableRowRepresentable( customViewType = RowViewType.TITLE_VALUE_ARROW, title = date.getDateYear(), @@ -469,8 +516,8 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable isSelectable = true ) - rows.add(row) - datesForRows[row] = date + this.rows.add(row) + this.datesForRows[row] = date } } } diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index f5ad22d1..f5fac944 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -429,7 +429,7 @@ Pause Zahlung erfolgt Dauer - Vergangene Tage + Vergangene %1$s Tagen ja nein Spieler diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index c0a43809..1819add4 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -432,7 +432,7 @@ La aplicación funciona con una suscripción anual para uso ilimitado, pero obti Pausa Pago realizado Duración - Últimos días + Últimos %1$s días no Lugar diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index fa96f1df..c071bff7 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -429,7 +429,7 @@ Pause Paiement effectué Durée - Jours précédents + %1$s derniers jours oui non Place diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 4818fc9a..79c35447 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -427,7 +427,7 @@ विश्राम भुगतान सफल अवधि - पिछले दिनों + पिछले %1$s दिनों हाँ नहीं स्थान diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 3af2da9c..46a759b8 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -427,7 +427,7 @@ Pausa Pagamento effettuato Durata - Giorni passati + Giorni %1$s passati no Luogo diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 8ce15b65..b4ec9b89 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -431,7 +431,7 @@ ブレーク 支払い成功 期間 - 経過日数 + 経過%1$s日数 はい いいえ プレース diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 8ecdb344..dad3bf18 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -427,7 +427,7 @@ Intervalo Pagamento realizado com sucesso! Duração - Últimos dias + Últimos %1$s dias sim não Lugar diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index f66ea55a..8b7a310e 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -430,7 +430,7 @@ Перерыв Платёж успешен Продолжительность - Прошедшие дни + Прошедшие %1$s дни Да не Место diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index dac5ee6b..6902c706 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -400,7 +400,7 @@ 休息 支付成功 时长 - 已过天数 + 已过%1$s天数 玩家 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5072d042..859d3ea1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -424,7 +424,7 @@ Break Payment successful Duration - Past days + Past %1$s days yes no Place @@ -807,7 +807,7 @@ Show villain cards Please save before sharing It looks like there is an issue here. Please contact the support to get help. - Please wait for a second or retry in a moment... + Please wait for a second or retry in a moment… posts Show tips on front page App tips