|
|
@ -90,7 +90,7 @@ open class EntryList {
|
|
|
|
open fun recomputeFrom(
|
|
|
|
open fun recomputeFrom(
|
|
|
|
originalEntries: EntryList,
|
|
|
|
originalEntries: EntryList,
|
|
|
|
frequency: Frequency,
|
|
|
|
frequency: Frequency,
|
|
|
|
isNumerical: Boolean,
|
|
|
|
isNumerical: Boolean
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
clear()
|
|
|
|
clear()
|
|
|
|
val original = originalEntries.getKnown()
|
|
|
|
val original = originalEntries.getKnown()
|
|
|
@ -167,7 +167,7 @@ open class EntryList {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
fun buildEntriesFromInterval(
|
|
|
|
fun buildEntriesFromInterval(
|
|
|
|
original: List<Entry>,
|
|
|
|
original: List<Entry>,
|
|
|
|
intervals: List<Interval>,
|
|
|
|
intervals: List<Interval>
|
|
|
|
): List<Entry> {
|
|
|
|
): List<Entry> {
|
|
|
|
val result = arrayListOf<Entry>()
|
|
|
|
val result = arrayListOf<Entry>()
|
|
|
|
if (original.isEmpty()) return result
|
|
|
|
if (original.isEmpty()) return result
|
|
|
@ -246,7 +246,7 @@ open class EntryList {
|
|
|
|
|
|
|
|
|
|
|
|
fun buildIntervals(
|
|
|
|
fun buildIntervals(
|
|
|
|
freq: Frequency,
|
|
|
|
freq: Frequency,
|
|
|
|
entries: List<Entry>,
|
|
|
|
entries: List<Entry>
|
|
|
|
): ArrayList<Interval> {
|
|
|
|
): ArrayList<Interval> {
|
|
|
|
val filtered = entries.filter { it.value == YES_MANUAL }
|
|
|
|
val filtered = entries.filter { it.value == YES_MANUAL }
|
|
|
|
val num = freq.numerator
|
|
|
|
val num = freq.numerator
|
|
|
@ -294,21 +294,22 @@ open class EntryList {
|
|
|
|
fun List<Entry>.groupedSum(
|
|
|
|
fun List<Entry>.groupedSum(
|
|
|
|
truncateField: DateUtils.TruncateField,
|
|
|
|
truncateField: DateUtils.TruncateField,
|
|
|
|
firstWeekday: Int = Calendar.SATURDAY,
|
|
|
|
firstWeekday: Int = Calendar.SATURDAY,
|
|
|
|
isNumerical: Boolean,
|
|
|
|
isNumerical: Boolean
|
|
|
|
): List<Entry> {
|
|
|
|
): List<Entry> {
|
|
|
|
return this.map { (timestamp, value) ->
|
|
|
|
return this.map { (timestamp, value) ->
|
|
|
|
if (isNumerical) {
|
|
|
|
if (isNumerical) {
|
|
|
|
if (value == SKIP)
|
|
|
|
if (value == SKIP) {
|
|
|
|
Entry(timestamp, 0)
|
|
|
|
Entry(timestamp, 0)
|
|
|
|
else
|
|
|
|
} else {
|
|
|
|
Entry(timestamp, max(0, value))
|
|
|
|
Entry(timestamp, max(0, value))
|
|
|
|
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
Entry(timestamp, if (value == YES_MANUAL) 1000 else 0)
|
|
|
|
Entry(timestamp, if (value == YES_MANUAL) 1000 else 0)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}.groupBy { entry ->
|
|
|
|
}.groupBy { entry ->
|
|
|
|
entry.timestamp.truncate(
|
|
|
|
entry.timestamp.truncate(
|
|
|
|
truncateField,
|
|
|
|
truncateField,
|
|
|
|
firstWeekday,
|
|
|
|
firstWeekday
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}.entries.map { (timestamp, entries) ->
|
|
|
|
}.entries.map { (timestamp, entries) ->
|
|
|
|
Entry(timestamp, entries.sumOf { it.value })
|
|
|
|
Entry(timestamp, entries.sumOf { it.value })
|
|
|
@ -333,7 +334,7 @@ fun List<Entry>.countSkippedDays(
|
|
|
|
}.groupBy { entry ->
|
|
|
|
}.groupBy { entry ->
|
|
|
|
entry.timestamp.truncate(
|
|
|
|
entry.timestamp.truncate(
|
|
|
|
truncateField,
|
|
|
|
truncateField,
|
|
|
|
firstWeekday,
|
|
|
|
firstWeekday
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}.entries.map { (timestamp, entries) ->
|
|
|
|
}.entries.map { (timestamp, entries) ->
|
|
|
|
Entry(timestamp, entries.sumOf { it.value })
|
|
|
|
Entry(timestamp, entries.sumOf { it.value })
|
|
|
|