mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 09:08:52 -06:00
Simplify the code
This commit is contained in:
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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user