From 549ee557de6602ee9b007e322a1d38bf1e495e07 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Wed, 9 Mar 2022 23:57:39 +0100 Subject: [PATCH] Fix calculation of samples for months and years --- nymea-app/ui/mainviews/energy/ConsumerStats.qml | 2 +- .../ui/mainviews/energy/PowerBalanceStats.qml | 2 +- nymea-app/ui/mainviews/energy/StatsBase.qml | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/nymea-app/ui/mainviews/energy/ConsumerStats.qml b/nymea-app/ui/mainviews/energy/ConsumerStats.qml index 6033bed1..2982abfa 100644 --- a/nymea-app/ui/mainviews/energy/ConsumerStats.qml +++ b/nymea-app/ui/mainviews/energy/ConsumerStats.qml @@ -141,7 +141,7 @@ StatsBase { var consumer = consumers.get(j) graphEntry[consumer.id] = 0 } - labelTime = new Date(newestLogTimestamp.getTime() - config.sampleRate * i * 60000) + labelTime = calculateSampleStart(newestLogTimestamp, config.sampleRate, i) } // print("Adding entry:", labelTime, config.toLabel(labelTime), JSON.stringify(graphEntry)) diff --git a/nymea-app/ui/mainviews/energy/PowerBalanceStats.qml b/nymea-app/ui/mainviews/energy/PowerBalanceStats.qml index f8e37d31..6df0a8b3 100644 --- a/nymea-app/ui/mainviews/energy/PowerBalanceStats.qml +++ b/nymea-app/ui/mainviews/energy/PowerBalanceStats.qml @@ -143,7 +143,7 @@ StatsBase { } labelTime = entry.timestamp } else { - labelTime = new Date(newestLogTimestamp.getTime() - config.sampleRate * i * 60000) + labelTime = calculateSampleStart(newestLogTimestamp, config.sampleRate, i) } // print("Adding entry:", labelTime, graphEntry.consumption, config.toLabel(labelTime)) diff --git a/nymea-app/ui/mainviews/energy/StatsBase.qml b/nymea-app/ui/mainviews/energy/StatsBase.qml index 0f6884df..df1998ce 100644 --- a/nymea-app/ui/mainviews/energy/StatsBase.qml +++ b/nymea-app/ui/mainviews/energy/StatsBase.qml @@ -56,6 +56,21 @@ Item { } }) + function calculateSampleStart(sampleEnd, sampleRate, sampleCount) { + if (sampleCount === undefined) { + sampleCount = 1 + } + var sampleStart = new Date(sampleEnd) + if (sampleRate === EnergyLogs.SampleRate1Month) { + sampleStart.setMonth(sampleEnd.getMonth() - sampleCount) + } else if (sampleRate === EnergyLogs.SampleRate1Year) { + sampleStart.setFullYear(sampleEnd.getFullYear() - sampleCount) + } else { + sampleStart.setTime(sampleEnd.getTime() - (sampleRate * 60000 * sampleCount)) + } + return sampleStart + } + function minutesStart() { var d = new Date(); d.setMinutes(d.getMinutes() - minutesCount + 1, 0, 0)