Fix "hide completed" for numerical habits

Fixes #1179
This commit is contained in:
2021-11-06 07:16:24 -05:00
committed by Quentin Hibon
parent bf63b4dbcf
commit b62e436054
6 changed files with 29 additions and 48 deletions

View File

@@ -68,17 +68,10 @@ data class Habit(
}
}
fun isFailedToday(): Boolean {
fun isEnteredToday(): Boolean {
val today = DateUtils.getTodayWithOffset()
val value = computedEntries.get(today).value
return if (isNumerical) {
when (targetType) {
NumericalHabitType.AT_LEAST -> value / 1000.0 < targetValue
NumericalHabitType.AT_MOST -> value / 1000.0 > targetValue
}
} else {
value == Entry.NO
}
return value != Entry.UNKNOWN
}
fun recompute() {

View File

@@ -22,11 +22,13 @@ data class HabitMatcher(
val isArchivedAllowed: Boolean = false,
val isReminderRequired: Boolean = false,
val isCompletedAllowed: Boolean = true,
val isEnteredAllowed: Boolean = true,
) {
fun matches(habit: Habit): Boolean {
if (!isArchivedAllowed && habit.isArchived) return false
if (isReminderRequired && !habit.hasReminder()) return false
if (!isCompletedAllowed && (habit.isCompletedToday() || habit.isFailedToday())) return false
if (!isCompletedAllowed && habit.isCompletedToday()) return false
if (!isEnteredAllowed && habit.isEnteredToday()) return false
return true
}

View File

@@ -32,6 +32,7 @@ class ListHabitsMenuBehavior @Inject constructor(
) {
private var showCompleted: Boolean
private var showArchived: Boolean
fun onCreateHabit() {
screen.showSelectHabitTypeDialog()
}
@@ -96,13 +97,26 @@ class ListHabitsMenuBehavior @Inject constructor(
screen.applyTheme()
}
fun onPreferencesChanged() {
updateAdapterFilter()
}
private fun updateAdapterFilter() {
adapter.setFilter(
HabitMatcher(
isArchivedAllowed = showArchived,
isCompletedAllowed = showCompleted,
if (preferences.areQuestionMarksEnabled) {
adapter.setFilter(
HabitMatcher(
isArchivedAllowed = showArchived,
isEnteredAllowed = showCompleted,
)
)
)
} else {
adapter.setFilter(
HabitMatcher(
isArchivedAllowed = showArchived,
isCompletedAllowed = showCompleted,
)
)
}
adapter.refresh()
}

View File

@@ -82,12 +82,12 @@ class HabitTest : BaseUnitTest() {
@Test
@Throws(Exception::class)
fun test_isFailed() {
fun test_isEntered() {
val h = modelFactory.buildHabit()
assertFalse(h.isFailedToday())
assertFalse(h.isEnteredToday())
h.originalEntries.add(Entry(getToday(), Entry.NO))
h.recompute()
assertTrue(h.isFailedToday())
assertTrue(h.isEnteredToday())
}
@Test
@@ -119,35 +119,6 @@ class HabitTest : BaseUnitTest() {
assertTrue(h.isCompletedToday())
}
@Test
@Throws(Exception::class)
fun test_isFailedNumerical() {
val h = modelFactory.buildHabit()
h.type = HabitType.NUMERICAL
h.targetType = NumericalHabitType.AT_LEAST
h.targetValue = 100.0
assertTrue(h.isFailedToday())
h.originalEntries.add(Entry(getToday(), 200000))
h.recompute()
assertFalse(h.isFailedToday())
h.originalEntries.add(Entry(getToday(), 100000))
h.recompute()
assertFalse(h.isFailedToday())
h.originalEntries.add(Entry(getToday(), 50000))
h.recompute()
assertTrue(h.isFailedToday())
h.targetType = NumericalHabitType.AT_MOST
h.originalEntries.add(Entry(getToday(), 200000))
h.recompute()
assertTrue(h.isFailedToday())
h.originalEntries.add(Entry(getToday(), 100000))
h.recompute()
assertFalse(h.isFailedToday())
h.originalEntries.add(Entry(getToday(), 50000))
h.recompute()
assertFalse(h.isFailedToday())
}
@Test
@Throws(Exception::class)
fun testURI() {