Smaller fixes and cleanups in the energy view

This commit is contained in:
Michael Zanetti 2021-12-08 00:43:28 +01:00
parent 6d049101f4
commit f161e23e0b
3 changed files with 20 additions and 11 deletions

View File

@ -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"

View File

@ -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

View File

@ -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]) : ""