From 113a5028af7e705c8a5bd164e3d98c65a46d6175 Mon Sep 17 00:00:00 2001 From: KristianTashkov Date: Sun, 12 Sep 2021 15:27:03 +0300 Subject: [PATCH] Simplify the code --- .../render_at_most_between.png | Bin 1986 -> 2045 bytes .../list/NumberButtonView/render_below.png | Bin 1856 -> 1958 bytes .../list/NumberButtonView/render_between.png | Bin 1958 -> 0 bytes .../list/NumberButtonView/render_zero.png | Bin 0 -> 1856 bytes .../habits/list/views/NumberButtonViewTest.kt | 19 +++++++-------- .../habits/list/views/NumberPanelViewTest.kt | 3 +-- .../habits/list/views/HabitCardListView.kt | 9 +------ .../habits/list/views/HabitCardView.kt | 15 +++--------- .../habits/list/views/NumberButtonView.kt | 23 +++++++----------- .../habits/list/views/NumberPanelView.kt | 11 ++------- .../isoron/uhabits/core/models/ScoreList.kt | 12 ++------- .../screens/habits/show/views/HistoryCard.kt | 4 +-- 12 files changed, 29 insertions(+), 67 deletions(-) delete mode 100644 uhabits-android/src/androidTest/assets/views/habits/list/NumberButtonView/render_between.png create mode 100644 uhabits-android/src/androidTest/assets/views/habits/list/NumberButtonView/render_zero.png diff --git a/uhabits-android/src/androidTest/assets/views/habits/list/NumberButtonView/render_at_most_between.png b/uhabits-android/src/androidTest/assets/views/habits/list/NumberButtonView/render_at_most_between.png index b407ccd6264a4dfce901652485f8725f1d0af0d2..12063c42596410137b13f2f924fdc5ef517f9075 100644 GIT binary patch delta 2002 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 delta 1943 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 ImFMq&1BSkpqW}N^ diff --git a/uhabits-android/src/androidTest/assets/views/habits/list/NumberButtonView/render_between.png b/uhabits-android/src/androidTest/assets/views/habits/list/NumberButtonView/render_between.png deleted file mode 100644 index e5a98fc8987e73c6edc7c3de02ed3801638066bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1958 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 d9u{C{jQjny?I)zahlzX8SIl?ng= literal 0 HcmV?d00001 diff --git a/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonViewTest.kt b/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonViewTest.kt index 83609c9a0..75166bfab 100644 --- a/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonViewTest.kt +++ b/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonViewTest.kt @@ -44,8 +44,7 @@ class NumberButtonViewTest : BaseViewTest() { view = component.getNumberButtonViewFactory().create().apply { units = "steps" targetType = NumericalHabitType.AT_LEAST - lowerThreshold = 50.0 - higherThreshold = 100.0 + threshold = 100.0 color = PaletteUtils.getAndroidTestColor(8) onEdit = { edited = true } } @@ -71,39 +70,39 @@ class NumberButtonViewTest : BaseViewTest() { } @Test - fun testRender_aboveHigherThreshold() { + fun testRender_aboveThreshold() { view.value = 500.0 assertRenders(view, "$PATH/render_above.png") } @Test - fun testRender_atMostAboveHigherThreshold() { + fun testRender_atMostAboveThreshold() { view.value = 500.0 view.targetType = NumericalHabitType.AT_MOST assertRenders(view, "$PATH/render_at_most_above.png") } @Test - fun testRender_betweenThresholds() { + fun testRender_belowThreshold() { view.value = 99.0 - assertRenders(view, "$PATH/render_between.png") + assertRenders(view, "$PATH/render_below.png") } @Test fun testRender_atMostBetweenThresholds() { - view.value = 99.0 + view.value = 110.0 view.targetType = NumericalHabitType.AT_MOST assertRenders(view, "$PATH/render_at_most_between.png") } @Test - fun testRender_belowLowerThreshold() { + fun testRender_zero() { view.value = 0.0 - assertRenders(view, "$PATH/render_below.png") + assertRenders(view, "$PATH/render_zero.png") } @Test - fun testRender_atMostBelowLowerThreshold() { + fun testRender_atMostBelowThreshold() { view.value = 0.0 view.targetType = NumericalHabitType.AT_MOST assertRenders(view, "$PATH/render_at_most_below.png") diff --git a/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/NumberPanelViewTest.kt b/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/NumberPanelViewTest.kt index f5d992f62..da0a2eb8a 100644 --- a/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/NumberPanelViewTest.kt +++ b/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/NumberPanelViewTest.kt @@ -57,8 +57,7 @@ class NumberPanelViewTest : BaseViewTest() { color = PaletteUtils.getAndroidTestColor(7) units = "steps" targetType = NumericalHabitType.AT_LEAST - lowerThreshold = 0.0 - higherThreshold = 5000.0 + threshold = 5000.0 } view.onAttachedToWindow() measureView(view, dpToPixels(200), dpToPixels(200)) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListView.kt index c1935be75..58ee2b36a 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListView.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListView.kt @@ -36,7 +36,6 @@ import dagger.Lazy import org.isoron.uhabits.R import org.isoron.uhabits.activities.common.views.BundleSavedState import org.isoron.uhabits.core.models.Habit -import org.isoron.uhabits.core.models.NumericalHabitType import org.isoron.uhabits.inject.ActivityContext import javax.inject.Inject @@ -98,13 +97,7 @@ class HabitCardListView( cardView.dataOffset = dataOffset cardView.score = score cardView.unit = habit.unit - if (habit.targetType == NumericalHabitType.AT_LEAST) { - cardView.higherThreshold = habit.targetValue / habit.frequency.denominator - cardView.lowerThreshold = 0.0 - } else { - cardView.higherThreshold = (habit.targetValue * 2) / habit.frequency.denominator - cardView.lowerThreshold = habit.targetValue / habit.frequency.denominator - } + cardView.threshold = habit.targetValue / habit.frequency.denominator val detector = GestureDetector(context, CardViewGestureDetector(holder)) cardView.setOnTouchListener { _, ev -> diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.kt index 4fca5befa..d6e7a2ad3 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.kt @@ -109,16 +109,10 @@ class HabitCardView( numberPanel.values = values.map { it / 1000.0 }.toDoubleArray() } - var lowerThreshold: Double - get() = numberPanel.lowerThreshold + var threshold: Double + get() = numberPanel.threshold set(value) { - numberPanel.lowerThreshold = value - } - - var higherThreshold: Double - get() = numberPanel.higherThreshold - set(value) { - numberPanel.higherThreshold = value + numberPanel.threshold = value } var checkmarkPanel: CheckmarkPanelView @@ -243,8 +237,7 @@ class HabitCardView( color = c units = h.unit targetType = h.targetType - lowerThreshold = 0.0 - higherThreshold = h.targetValue + threshold = h.targetValue visibility = when (h.isNumerical) { true -> View.VISIBLE false -> View.GONE diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonView.kt index 1d474a22f..08685026d 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonView.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonView.kt @@ -37,6 +37,7 @@ import org.isoron.uhabits.utils.dim import org.isoron.uhabits.utils.getFontAwesome import org.isoron.uhabits.utils.showMessage import org.isoron.uhabits.utils.sres +import java.lang.Double.max import java.text.DecimalFormat import javax.inject.Inject @@ -83,13 +84,7 @@ class NumberButtonView( invalidate() } - var lowerThreshold = 0.0 - set(value) { - field = value - invalidate() - } - - var higherThreshold = 0.0 + var threshold = 0.0 set(value) { field = value invalidate() @@ -167,15 +162,15 @@ class NumberButtonView( fun draw(canvas: Canvas) { var activeColor = if (targetType == NumericalHabitType.AT_LEAST) { when { - value <= lowerThreshold -> lowContrast - value < higherThreshold -> mediumContrast - else -> color + max(0.0, value) >= threshold -> color + value <= 0 -> lowContrast + else -> mediumContrast } } else { when { - value >= higherThreshold || value < 0 -> lowContrast - value > lowerThreshold -> mediumContrast - else -> color + value <= threshold -> color + value >= 2 * threshold -> lowContrast + else -> mediumContrast } } @@ -195,7 +190,7 @@ class NumberButtonView( textSize = dim(R.dimen.smallerTextSize) } else -> { - label = if (targetType == NumericalHabitType.AT_LEAST) "0" else "inf" + label = "0" typeface = BOLD_TYPEFACE textSize = dim(R.dimen.smallTextSize) } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberPanelView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberPanelView.kt index 94980dfac..0a5339ce0 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberPanelView.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberPanelView.kt @@ -54,13 +54,7 @@ class NumberPanelView( setupButtons() } - var lowerThreshold = 0.0 - set(value) { - field = value - setupButtons() - } - - var higherThreshold = 0.0 + var threshold = 0.0 set(value) { field = value setupButtons() @@ -98,8 +92,7 @@ class NumberPanelView( } button.color = color button.targetType = targetType - button.lowerThreshold = lowerThreshold - button.higherThreshold = higherThreshold + button.threshold = threshold button.units = units button.onEdit = { onEdit(timestamp) } } diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/ScoreList.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/ScoreList.kt index 037721d82..f96d7857e 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/ScoreList.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/ScoreList.kt @@ -92,20 +92,12 @@ class ScoreList { } var previousValue = 0.0 - val numericalUnknownDayValue = (targetValue * 2 * 1000) / denominator for (i in values.indices) { val offset = values.size - i - 1 if (isNumerical) { - if (values[offset] >= 0) - rollingSum += values[offset] - else if (numericalHabitType == NumericalHabitType.AT_MOST) - rollingSum += numericalUnknownDayValue + rollingSum += max(0, values[offset]) if (offset + denominator < values.size) { - if (values[offset + denominator] >= 0) { - rollingSum -= values[offset + denominator] - } else if (numericalHabitType == NumericalHabitType.AT_MOST) { - rollingSum -= numericalUnknownDayValue - } + rollingSum -= max(0, values[offset + denominator]) } var percentageCompleted = 0.0 diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/show/views/HistoryCard.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/show/views/HistoryCard.kt index f1c05861c..7c97cbc72 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/show/views/HistoryCard.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/show/views/HistoryCard.kt @@ -115,10 +115,8 @@ class HistoryCardPresenter( } } else { entries.map { - if (it.value < 0) habit.targetValue * 2.0 * 1000.0 else it.value / 1000.0 - }.map { when { - it <= habit.targetValue -> HistoryChart.Square.ON + max(0, it.value) < 2 * habit.targetValue -> HistoryChart.Square.ON else -> HistoryChart.Square.OFF } }