EntryList: remove getValues

This commit is contained in:
2020-12-30 17:28:10 -06:00
parent a74a4b390b
commit 51b9517897
11 changed files with 74 additions and 79 deletions

View File

@@ -22,6 +22,7 @@ package org.isoron.uhabits.activities.common.views;
import androidx.test.ext.junit.runners.*;
import androidx.test.filters.*;
import org.apache.commons.lang3.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.core.models.*;
import org.isoron.uhabits.core.ui.callbacks.*;
@@ -56,9 +57,16 @@ public class HistoryChartTest extends BaseViewTest
habit = fixtures.createLongHabit();
today = new Timestamp(DateUtils.getStartOfToday());
Integer[] entries = habit
.getComputedEntries()
.getByInterval(today.minus(300), today)
.stream()
.map(Entry::getValue)
.toArray(Integer[]::new);
chart = new HistoryChart(targetContext);
chart.setSkipEnabled(true);
chart.setEntries(habit.getComputedEntries().getAllValues());
chart.setEntries(ArrayUtils.toPrimitive(entries));
chart.setColor(PaletteUtilsKt.toFixedAndroidColor(habit.getColor()));
measureView(chart, dpToPixels(400), dpToPixels(200));

View File

@@ -25,6 +25,7 @@ import org.isoron.uhabits.BaseViewTest
import org.isoron.uhabits.R
import org.isoron.uhabits.core.models.Habit
import org.isoron.uhabits.core.models.PaletteColor
import org.isoron.uhabits.core.models.Timestamp
import org.isoron.uhabits.core.utils.DateUtils
import org.junit.Test
import org.junit.runner.RunWith
@@ -37,6 +38,7 @@ class HabitCardViewTest : BaseViewTest() {
private lateinit var view: HabitCardView
private lateinit var habit1: Habit
private lateinit var habit2: Habit
private lateinit var today: Timestamp
override fun setUp() {
super.setUp()
@@ -44,11 +46,16 @@ class HabitCardViewTest : BaseViewTest() {
habit1 = fixtures.createLongHabit()
habit2 = fixtures.createLongNumericalHabit()
val today = DateUtils.getTodayWithOffset()
today = DateUtils.getTodayWithOffset()
val entries = habit1
.computedEntries
.getByInterval(today.minus(300), today)
.map { it.value }.toIntArray()
view = component.getHabitCardViewFactory().create().apply {
habit = habit1
values = habit1.computedEntries.getAllValues()
values = entries
score = habit1.scores.get(today).value
isSelected = false
buttonCount = 5
@@ -73,9 +80,14 @@ class HabitCardViewTest : BaseViewTest() {
@Test
fun testRender_numerical() {
val entries = habit2
.computedEntries
.getByInterval(today.minus(300), today)
.map { it.value }.toIntArray()
view.apply {
habit = habit2
values = habit2.computedEntries.getAllValues()
values = entries
}
assertRenders(view, "$PATH/render_numerical.png")
}

View File

@@ -31,6 +31,7 @@ import android.util.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.activities.common.views.*;
import org.isoron.uhabits.activities.habits.show.views.*;
import org.isoron.uhabits.core.commands.*;
import org.isoron.uhabits.core.models.*;
import org.isoron.uhabits.core.preferences.*;
@@ -178,7 +179,12 @@ public class HistoryEditorDialog extends AppCompatDialogFragment
@Override
public void doInBackground()
{
checkmarks = habit.getComputedEntries().getAllValues();
HistoryCardViewModel model = new HistoryCardPresenter(
habit,
prefs.getFirstWeekday(),
prefs.isSkipEnabled()
).present();
checkmarks = model.getEntries();
}
@Override

View File

@@ -24,6 +24,7 @@ import android.view.LayoutInflater
import android.widget.LinearLayout
import org.isoron.uhabits.core.models.Habit
import org.isoron.uhabits.core.models.PaletteColor
import org.isoron.uhabits.core.utils.DateUtils
import org.isoron.uhabits.databinding.ShowHabitHistoryBinding
import org.isoron.uhabits.utils.toThemedAndroidColor
@@ -63,11 +64,17 @@ class HistoryCardPresenter(
val firstWeekday: Int,
val isSkipEnabled: Boolean,
) {
fun present() = HistoryCardViewModel(
entries = habit.computedEntries.getAllValues(),
color = habit.color,
firstWeekday = firstWeekday,
isNumerical = habit.isNumerical,
isSkipEnabled = isSkipEnabled,
)
fun present(): HistoryCardViewModel {
val today = DateUtils.getTodayWithOffset()
val oldest = habit.computedEntries.getKnown().lastOrNull()?.timestamp ?: today
val entries = habit.computedEntries.getByInterval(oldest, today).map { it.value }.toIntArray()
return HistoryCardViewModel(
entries = entries,
color = habit.color,
firstWeekday = firstWeekday,
isNumerical = habit.isNumerical,
isSkipEnabled = isSkipEnabled,
)
}
}

View File

@@ -23,6 +23,7 @@ import android.app.PendingIntent
import android.content.Context
import android.view.View
import org.isoron.uhabits.activities.common.views.HistoryChart
import org.isoron.uhabits.activities.habits.show.views.HistoryCardPresenter
import org.isoron.uhabits.core.models.Habit
import org.isoron.uhabits.utils.toThemedAndroidColor
import org.isoron.uhabits.widgets.views.GraphWidgetView
@@ -42,12 +43,17 @@ class HistoryWidget(
val widgetView = view as GraphWidgetView
widgetView.setBackgroundAlpha(preferedBackgroundAlpha)
if (preferedBackgroundAlpha >= 255) widgetView.setShadowAlpha(0x4f)
val model = HistoryCardPresenter(
habit = habit,
isSkipEnabled = prefs.isSkipEnabled,
firstWeekday = prefs.firstWeekday,
).present()
(widgetView.dataView as HistoryChart).apply {
setFirstWeekday(firstWeekday)
setSkipEnabled(prefs.isSkipEnabled)
setColor(habit.color.toThemedAndroidColor(context))
setEntries(habit.computedEntries.getAllValues())
setNumerical(habit.isNumerical)
setFirstWeekday(model.firstWeekday)
setSkipEnabled(model.isSkipEnabled)
setColor(model.color.toThemedAndroidColor(context))
setEntries(model.entries)
setNumerical(model.isNumerical)
}
}