From d6dccb179b63d005c362debb22d90aad2f3b470c Mon Sep 17 00:00:00 2001 From: llx <87269376+cynical00@users.noreply.github.com> Date: Sun, 22 Dec 2024 16:57:16 +0800 Subject: [PATCH] Update Habit.kt --- .../org/isoron/uhabits/core/models/Habit.kt | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) 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 a06d01ec9..4d890303e 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 @@ -57,13 +57,33 @@ data class Habit( fun isCompletedToday(): Boolean { val today = DateUtils.getTodayWithOffset() + val startOfWeek = today.truncate( + DateUtils.TruncateField.WEEK_NUMBER, + DateUtils.getFirstWeekdayNumberAccordingToLocale() + ) + var totalCompletedValue = 0 + val entriesThisWeek = computedEntries.getByInterval(startOfWeek, today) + + for(entry in entriesThisWeek){ + totalCompletedValue += entry.value + } + val value = computedEntries.get(today).value - return if (isNumerical) { + return if (isNumerical && frequency != Frequency.DAILY) { + when (targetType) { + NumericalHabitType.AT_LEAST -> totalCompletedValue / 1000.0 >= targetValue + NumericalHabitType.AT_MOST -> totalCompletedValue != Entry.UNKNOWN + && value / 1000.0 <= targetValue + } + } + else if(isNumerical && frequency == Frequency.DAILY) { when (targetType) { NumericalHabitType.AT_LEAST -> value / 1000.0 >= targetValue - NumericalHabitType.AT_MOST -> value != Entry.UNKNOWN && value / 1000.0 <= targetValue + NumericalHabitType.AT_MOST -> value != Entry.UNKNOWN + && value / 1000.0 <= targetValue } - } else { + } + else { value != Entry.NO && value != Entry.UNKNOWN } }