diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitView.kt index aec96aed3..23aacd03d 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitView.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitView.kt @@ -52,10 +52,7 @@ class ShowHabitView(context: Context) : FrameLayout(context) { binding.frequencyCard.setState(data.frequency) binding.historyCard.setState(data.history) binding.barCard.setState(data.bar) - if (data.isNumerical) { - binding.overviewCard.visibility = GONE - binding.streakCard.visibility = GONE - } else { + if (!data.isNumerical) { binding.targetCard.visibility = GONE } } diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Habit.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Habit.kt index 02b7c33e9..4b31d2a2e 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Habit.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Habit.kt @@ -100,7 +100,10 @@ data class Habit( streaks.recompute( computedEntries, from, - to + to, + isNumerical, + targetValue, + targetType ) } diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/StreakList.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/StreakList.kt index d3bed0af7..ab9dfb041 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/StreakList.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/StreakList.kt @@ -37,12 +37,25 @@ class StreakList { fun recompute( computedEntries: EntryList, from: Timestamp, - to: Timestamp + to: Timestamp, + isNumerical: Boolean, + targetValue: Double, + targetType: NumericalHabitType ) { list.clear() val timestamps = computedEntries .getByInterval(from, to) - .filter { it.value > 0 } + .filter { + val value = it.value + if (isNumerical) { + when (targetType) { + NumericalHabitType.AT_LEAST -> value / 1000.0 >= targetValue + NumericalHabitType.AT_MOST -> value != Entry.UNKNOWN && value / 1000.0 <= targetValue + } + } else { + value > 0 + } + } .map { it.timestamp } .toTypedArray()