mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-07 09:38:52 -06:00
Fixes to BarCard
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user