From f161e23e0b5a5c29127c6f41cb2c8ee72ff87713 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Wed, 8 Dec 2021 00:43:28 +0100 Subject: [PATCH] Smaller fixes and cleanups in the energy view --- nymea-app/ui/mainviews/EnergyView.qml | 5 +++-- .../ui/mainviews/energy/ConsumersPieChart.qml | 19 +++++++++++++------ .../ui/mainviews/energy/PowerBalanceStats.qml | 7 ++++--- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/nymea-app/ui/mainviews/EnergyView.qml b/nymea-app/ui/mainviews/EnergyView.qml index 95a23ec6..0e65bc78 100644 --- a/nymea-app/ui/mainviews/EnergyView.qml +++ b/nymea-app/ui/mainviews/EnergyView.qml @@ -68,7 +68,7 @@ MainViewBase { engine: _engine shownInterfaces: ["energymeter"] } - readonly property Thing rootMeter: energyMeters.count > 0 ? energyMeters.get(0) : null + readonly property Thing rootMeter: engine.thingManager.fetchingData ? null : engine.thingManager.things.getThing(energyManager.rootMeterId) ThingsProxy { id: consumers @@ -167,6 +167,7 @@ MainViewBase { Layout.fillWidth: true Layout.preferredHeight: width energyManager: energyManager + visible: rootMeter != null } ConsumerStats { @@ -200,7 +201,7 @@ MainViewBase { EmptyViewPlaceholder { anchors.centerIn: parent width: parent.width - app.margins * 2 - visible: engine.jsonRpcClient.experiences.hasOwnProperty("Energy") && !engine.thingManager.fetchingData && energyMeters.count == 0 + visible: engine.jsonRpcClient.experiences.hasOwnProperty("Energy") && !engine.thingManager.fetchingData && energyMeters.count == 0 && consumers.count == 0 title: qsTr("There are no energy meters installed.") text: qsTr("To get an overview of your current energy usage, install an energy meter.") imageSource: "../images/smartmeter.svg" diff --git a/nymea-app/ui/mainviews/energy/ConsumersPieChart.qml b/nymea-app/ui/mainviews/energy/ConsumersPieChart.qml index 897b5929..21cf4385 100644 --- a/nymea-app/ui/mainviews/energy/ConsumersPieChart.qml +++ b/nymea-app/ui/mainviews/energy/ConsumersPieChart.qml @@ -47,6 +47,8 @@ ChartView { } } + Component.onCompleted: updateConsumers() + QtObject { id: d property var thingsColorMap: ({}) @@ -56,6 +58,10 @@ ChartView { function updateConsumers() { consumersBalanceSeries.clear(); + if (engine.thingManager.fetchingData) { + return; + } + var unknownConsumption = energyManager.currentPowerConsumption var colorMap = {} @@ -110,7 +116,6 @@ ChartView { Layout.fillWidth: true horizontalAlignment: Text.AlignHCenter font: Style.bigFont - } } @@ -129,8 +134,13 @@ ChartView { sortOrder: Qt.DescendingOrder } delegate: ColumnLayout { + id: consumerDelegate width: parent.width spacing: 0 + property Thing consumer: consumers.getThing(model.id) + property State currentPowerState: consumer ? consumer.stateByName("currentPower") : null + property double value: currentPowerState ? currentPowerState.value : 0 + Label { text: model.name Layout.fillWidth: true @@ -138,14 +148,11 @@ ChartView { font: Style.extraSmallFont } Label { - property Thing consumer: sortedConsumers.get(index) - property State currentPowerState: consumer ? consumer.stateByName("currentPower") : null - property double value: currentPowerState ? currentPowerState.value : 0 color: d.thingsColorMap[consumer] text: "%1 %2" - .arg((value / (value > 1000 ? 1000 : 1)).toFixed(1)) - .arg(value > 1000 ? "kWh" : "W") + .arg((consumerDelegate.value / (consumerDelegate.value > 1000 ? 1000 : 1)).toFixed(1)) + .arg(consumerDelegate.value > 1000 ? "kWh" : "W") Layout.fillWidth: true horizontalAlignment: Text.AlignHCenter font: Style.smallFont diff --git a/nymea-app/ui/mainviews/energy/PowerBalanceStats.qml b/nymea-app/ui/mainviews/energy/PowerBalanceStats.qml index 55d68305..e3d75158 100644 --- a/nymea-app/ui/mainviews/energy/PowerBalanceStats.qml +++ b/nymea-app/ui/mainviews/energy/PowerBalanceStats.qml @@ -47,6 +47,10 @@ StatsBase { } } onCurrentValueChanged: { + if (currentValue === undefined) { + return + } + var config = root.configs[currentValue.config] print("config:", config.startTime(), config.sampleRate) @@ -353,9 +357,6 @@ StatsBase { top: parent.top margins: Style.smallMargins } -// Label { -// text: powerBalanceLogs.count + ":" + categoryAxis.count + ":" + toolTip.idx -// } Label { text: categoryAxis.timestamps.length > toolTip.idx ? root.configs[selectionTabs.currentValue.config].toLongLabel(categoryAxis.timestamps[toolTip.idx]) : ""