Simplify the code

pull/1101/head
KristianTashkov 4 years ago
parent 1a56260757
commit 113a5028af

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -44,8 +44,7 @@ class NumberButtonViewTest : BaseViewTest() {
view = component.getNumberButtonViewFactory().create().apply { view = component.getNumberButtonViewFactory().create().apply {
units = "steps" units = "steps"
targetType = NumericalHabitType.AT_LEAST targetType = NumericalHabitType.AT_LEAST
lowerThreshold = 50.0 threshold = 100.0
higherThreshold = 100.0
color = PaletteUtils.getAndroidTestColor(8) color = PaletteUtils.getAndroidTestColor(8)
onEdit = { edited = true } onEdit = { edited = true }
} }
@ -71,39 +70,39 @@ class NumberButtonViewTest : BaseViewTest() {
} }
@Test @Test
fun testRender_aboveHigherThreshold() { fun testRender_aboveThreshold() {
view.value = 500.0 view.value = 500.0
assertRenders(view, "$PATH/render_above.png") assertRenders(view, "$PATH/render_above.png")
} }
@Test @Test
fun testRender_atMostAboveHigherThreshold() { fun testRender_atMostAboveThreshold() {
view.value = 500.0 view.value = 500.0
view.targetType = NumericalHabitType.AT_MOST view.targetType = NumericalHabitType.AT_MOST
assertRenders(view, "$PATH/render_at_most_above.png") assertRenders(view, "$PATH/render_at_most_above.png")
} }
@Test @Test
fun testRender_betweenThresholds() { fun testRender_belowThreshold() {
view.value = 99.0 view.value = 99.0
assertRenders(view, "$PATH/render_between.png") assertRenders(view, "$PATH/render_below.png")
} }
@Test @Test
fun testRender_atMostBetweenThresholds() { fun testRender_atMostBetweenThresholds() {
view.value = 99.0 view.value = 110.0
view.targetType = NumericalHabitType.AT_MOST view.targetType = NumericalHabitType.AT_MOST
assertRenders(view, "$PATH/render_at_most_between.png") assertRenders(view, "$PATH/render_at_most_between.png")
} }
@Test @Test
fun testRender_belowLowerThreshold() { fun testRender_zero() {
view.value = 0.0 view.value = 0.0
assertRenders(view, "$PATH/render_below.png") assertRenders(view, "$PATH/render_zero.png")
} }
@Test @Test
fun testRender_atMostBelowLowerThreshold() { fun testRender_atMostBelowThreshold() {
view.value = 0.0 view.value = 0.0
view.targetType = NumericalHabitType.AT_MOST view.targetType = NumericalHabitType.AT_MOST
assertRenders(view, "$PATH/render_at_most_below.png") assertRenders(view, "$PATH/render_at_most_below.png")

@ -57,8 +57,7 @@ class NumberPanelViewTest : BaseViewTest() {
color = PaletteUtils.getAndroidTestColor(7) color = PaletteUtils.getAndroidTestColor(7)
units = "steps" units = "steps"
targetType = NumericalHabitType.AT_LEAST targetType = NumericalHabitType.AT_LEAST
lowerThreshold = 0.0 threshold = 5000.0
higherThreshold = 5000.0
} }
view.onAttachedToWindow() view.onAttachedToWindow()
measureView(view, dpToPixels(200), dpToPixels(200)) measureView(view, dpToPixels(200), dpToPixels(200))

@ -36,7 +36,6 @@ import dagger.Lazy
import org.isoron.uhabits.R import org.isoron.uhabits.R
import org.isoron.uhabits.activities.common.views.BundleSavedState import org.isoron.uhabits.activities.common.views.BundleSavedState
import org.isoron.uhabits.core.models.Habit import org.isoron.uhabits.core.models.Habit
import org.isoron.uhabits.core.models.NumericalHabitType
import org.isoron.uhabits.inject.ActivityContext import org.isoron.uhabits.inject.ActivityContext
import javax.inject.Inject import javax.inject.Inject
@ -98,13 +97,7 @@ class HabitCardListView(
cardView.dataOffset = dataOffset cardView.dataOffset = dataOffset
cardView.score = score cardView.score = score
cardView.unit = habit.unit cardView.unit = habit.unit
if (habit.targetType == NumericalHabitType.AT_LEAST) { cardView.threshold = habit.targetValue / habit.frequency.denominator
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
}
val detector = GestureDetector(context, CardViewGestureDetector(holder)) val detector = GestureDetector(context, CardViewGestureDetector(holder))
cardView.setOnTouchListener { _, ev -> cardView.setOnTouchListener { _, ev ->

@ -109,16 +109,10 @@ class HabitCardView(
numberPanel.values = values.map { it / 1000.0 }.toDoubleArray() numberPanel.values = values.map { it / 1000.0 }.toDoubleArray()
} }
var lowerThreshold: Double var threshold: Double
get() = numberPanel.lowerThreshold get() = numberPanel.threshold
set(value) { set(value) {
numberPanel.lowerThreshold = value numberPanel.threshold = value
}
var higherThreshold: Double
get() = numberPanel.higherThreshold
set(value) {
numberPanel.higherThreshold = value
} }
var checkmarkPanel: CheckmarkPanelView var checkmarkPanel: CheckmarkPanelView
@ -243,8 +237,7 @@ class HabitCardView(
color = c color = c
units = h.unit units = h.unit
targetType = h.targetType targetType = h.targetType
lowerThreshold = 0.0 threshold = h.targetValue
higherThreshold = h.targetValue
visibility = when (h.isNumerical) { visibility = when (h.isNumerical) {
true -> View.VISIBLE true -> View.VISIBLE
false -> View.GONE false -> View.GONE

@ -37,6 +37,7 @@ import org.isoron.uhabits.utils.dim
import org.isoron.uhabits.utils.getFontAwesome import org.isoron.uhabits.utils.getFontAwesome
import org.isoron.uhabits.utils.showMessage import org.isoron.uhabits.utils.showMessage
import org.isoron.uhabits.utils.sres import org.isoron.uhabits.utils.sres
import java.lang.Double.max
import java.text.DecimalFormat import java.text.DecimalFormat
import javax.inject.Inject import javax.inject.Inject
@ -83,13 +84,7 @@ class NumberButtonView(
invalidate() invalidate()
} }
var lowerThreshold = 0.0 var threshold = 0.0
set(value) {
field = value
invalidate()
}
var higherThreshold = 0.0
set(value) { set(value) {
field = value field = value
invalidate() invalidate()
@ -167,15 +162,15 @@ class NumberButtonView(
fun draw(canvas: Canvas) { fun draw(canvas: Canvas) {
var activeColor = if (targetType == NumericalHabitType.AT_LEAST) { var activeColor = if (targetType == NumericalHabitType.AT_LEAST) {
when { when {
value <= lowerThreshold -> lowContrast max(0.0, value) >= threshold -> color
value < higherThreshold -> mediumContrast value <= 0 -> lowContrast
else -> color else -> mediumContrast
} }
} else { } else {
when { when {
value >= higherThreshold || value < 0 -> lowContrast value <= threshold -> color
value > lowerThreshold -> mediumContrast value >= 2 * threshold -> lowContrast
else -> color else -> mediumContrast
} }
} }
@ -195,7 +190,7 @@ class NumberButtonView(
textSize = dim(R.dimen.smallerTextSize) textSize = dim(R.dimen.smallerTextSize)
} }
else -> { else -> {
label = if (targetType == NumericalHabitType.AT_LEAST) "0" else "inf" label = "0"
typeface = BOLD_TYPEFACE typeface = BOLD_TYPEFACE
textSize = dim(R.dimen.smallTextSize) textSize = dim(R.dimen.smallTextSize)
} }

@ -54,13 +54,7 @@ class NumberPanelView(
setupButtons() setupButtons()
} }
var lowerThreshold = 0.0 var threshold = 0.0
set(value) {
field = value
setupButtons()
}
var higherThreshold = 0.0
set(value) { set(value) {
field = value field = value
setupButtons() setupButtons()
@ -98,8 +92,7 @@ class NumberPanelView(
} }
button.color = color button.color = color
button.targetType = targetType button.targetType = targetType
button.lowerThreshold = lowerThreshold button.threshold = threshold
button.higherThreshold = higherThreshold
button.units = units button.units = units
button.onEdit = { onEdit(timestamp) } button.onEdit = { onEdit(timestamp) }
} }

@ -92,20 +92,12 @@ class ScoreList {
} }
var previousValue = 0.0 var previousValue = 0.0
val numericalUnknownDayValue = (targetValue * 2 * 1000) / denominator
for (i in values.indices) { for (i in values.indices) {
val offset = values.size - i - 1 val offset = values.size - i - 1
if (isNumerical) { if (isNumerical) {
if (values[offset] >= 0) rollingSum += max(0, values[offset])
rollingSum += values[offset]
else if (numericalHabitType == NumericalHabitType.AT_MOST)
rollingSum += numericalUnknownDayValue
if (offset + denominator < values.size) { if (offset + denominator < values.size) {
if (values[offset + denominator] >= 0) { rollingSum -= max(0, values[offset + denominator])
rollingSum -= values[offset + denominator]
} else if (numericalHabitType == NumericalHabitType.AT_MOST) {
rollingSum -= numericalUnknownDayValue
}
} }
var percentageCompleted = 0.0 var percentageCompleted = 0.0

@ -115,10 +115,8 @@ class HistoryCardPresenter(
} }
} else { } else {
entries.map { entries.map {
if (it.value < 0) habit.targetValue * 2.0 * 1000.0 else it.value / 1000.0
}.map {
when { when {
it <= habit.targetValue -> HistoryChart.Square.ON max(0, it.value) < 2 * habit.targetValue -> HistoryChart.Square.ON
else -> HistoryChart.Square.OFF else -> HistoryChart.Square.OFF
} }
} }

Loading…
Cancel
Save