Fixes to BarCard

This commit is contained in:
2020-12-29 08:00:04 -06:00
parent 0b23fbed86
commit a19f39308e
4 changed files with 26 additions and 7 deletions

View File

@@ -81,11 +81,11 @@ open class EntryList {
* relevant when grouping by week.
*/
open fun groupBy(
original: List<Entry>,
field: DateUtils.TruncateField,
firstWeekday: Int,
isNumerical: Boolean,
): List<Entry> {
val original = getKnown()
val truncated = original.map {
Entry(it.timestamp.truncate(field, firstWeekday), it.value)
}
@@ -97,7 +97,9 @@ open class EntryList {
values.add(0)
}
if (isNumerical) {
values[values.lastIndex] += truncated[i].value
if (truncated[i].value > 0) {
values[values.lastIndex] += truncated[i].value
}
} else {
if (truncated[i].value == YES_MANUAL) {
values[values.lastIndex] += 1
@@ -244,7 +246,7 @@ open class EntryList {
firstWeekday: Int,
isNumerical: Boolean,
): Int {
val groups: List<Entry> = groupBy(truncateField, firstWeekday, isNumerical)
val groups: List<Entry> = groupBy(getKnown(), truncateField, firstWeekday, isNumerical)
return if (groups.isEmpty()) 0 else groups[0].value
}

View File

@@ -71,9 +71,14 @@ class SQLiteEntryList(database: Database) : EntryList() {
return super.getKnown()
}
override fun groupBy(field: DateUtils.TruncateField, firstWeekday: Int, isNumerical: Boolean): List<Entry> {
override fun groupBy(
original: List<Entry>,
field: DateUtils.TruncateField,
firstWeekday: Int,
isNumerical: Boolean
): List<Entry> {
loadRecords()
return super.groupBy(field, firstWeekday, isNumerical)
return super.groupBy(original, field, firstWeekday, isNumerical)
}
override fun recomputeFrom(originalEntries: EntryList, frequency: Frequency, isNumerical: Boolean) {

View File

@@ -162,6 +162,7 @@ class EntryListTest {
}
val byMonth = entries.groupBy(
original = entries.getKnown(),
field = DateUtils.TruncateField.MONTH,
firstWeekday = Calendar.SATURDAY,
isNumerical = true,
@@ -172,6 +173,7 @@ class EntryListTest {
assertThat(byMonth[12], equalTo(Entry(Timestamp.from(2013, Calendar.MAY, 1), 1271)))
val byQuarter = entries.groupBy(
original = entries.getKnown(),
field = DateUtils.TruncateField.QUARTER,
firstWeekday = Calendar.SATURDAY,
isNumerical = true,
@@ -182,6 +184,7 @@ class EntryListTest {
assertThat(byQuarter[5], equalTo(Entry(Timestamp.from(2013, Calendar.JANUARY, 1), 4975)))
val byYear = entries.groupBy(
original = entries.getKnown(),
field = DateUtils.TruncateField.YEAR,
firstWeekday = Calendar.SATURDAY,
isNumerical = true,
@@ -208,6 +211,7 @@ class EntryListTest {
}
val byMonth = entries.groupBy(
original = entries.getKnown(),
field = DateUtils.TruncateField.MONTH,
firstWeekday = Calendar.SATURDAY,
isNumerical = false,
@@ -218,6 +222,7 @@ class EntryListTest {
assertThat(byMonth[12], equalTo(Entry(Timestamp.from(2013, Calendar.MAY, 1), 6)))
val byQuarter = entries.groupBy(
original = entries.getKnown(),
field = DateUtils.TruncateField.QUARTER,
firstWeekday = Calendar.SATURDAY,
isNumerical = true,
@@ -228,6 +233,7 @@ class EntryListTest {
assertThat(byQuarter[5], equalTo(Entry(Timestamp.from(2013, Calendar.JANUARY, 1), 40)))
val byYear = entries.groupBy(
original = entries.getKnown(),
field = DateUtils.TruncateField.YEAR,
firstWeekday = Calendar.SATURDAY,
isNumerical = true,