From e0066ef9fa5f69e775f414425f1385f40e3597e4 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Mon, 21 Mar 2022 22:30:25 +0100 Subject: [PATCH] Add a highlight to energy bar charts --- .../ui/mainviews/energy/ConsumerStats.qml | 30 ++++++++++++++++++- .../ui/mainviews/energy/PowerBalanceStats.qml | 29 +++++++++++++++++- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/nymea-app/ui/mainviews/energy/ConsumerStats.qml b/nymea-app/ui/mainviews/energy/ConsumerStats.qml index b7bc1c5f..72c77a09 100644 --- a/nymea-app/ui/mainviews/energy/ConsumerStats.qml +++ b/nymea-app/ui/mainviews/energy/ConsumerStats.qml @@ -359,6 +359,29 @@ StatsBase { } } + Item { + anchors.fill: parent + anchors.leftMargin: chartView.x + chartView.plotArea.x + anchors.topMargin: chartView.y + chartView.plotArea.y + anchors.rightMargin: chartView.width - chartView.plotArea.width - chartView.plotArea.x + anchors.bottomMargin: chartView.height - chartView.plotArea.height - chartView.plotArea.y + z: -1 + + Rectangle { + height: parent.height + Style.margins * 2 + y: -Style.smallMargins + radius: Style.smallCornerRadius + width: chartView.plotArea.width / categoryAxis.count + color: Style.tileBackgroundColor + property int idx: Math.max(0, Math.min(categoryAxis.count -1, Math.floor(mouseArea.mouseX * categoryAxis.count / mouseArea.width))) + visible: toolTip.visible + + x: idx * parent.width / categoryAxis.count + Behavior on x { NumberAnimation { duration: Style.animationDuration } } + } + } + + MouseArea { id: mouseArea anchors.fill: parent @@ -376,6 +399,7 @@ StatsBase { } onReleased: mouseArea.preventStealing = false + NymeaToolTip { id: toolTip @@ -385,7 +409,11 @@ StatsBase { property int idx: Math.max(0, Math.min(categoryAxis.count -1, Math.floor(mouseArea.mouseX * categoryAxis.count / mouseArea.width))) visible: mouseArea.containsMouse || mouseArea.preventStealing - x: Math.min(idx * mouseArea.width / categoryAxis.count, mouseArea.width - width) + property int chartWidth: chartView.plotArea.width + property int barWidth: chartWidth / categoryAxis.count + x: chartWidth - (idx * barWidth + barWidth + Style.smallMargins) > width ? + idx * barWidth + barWidth + Style.smallMargins + : idx * barWidth - Style.smallMargins - width property double setMaxValue: { var max = 0; for (var i = 0; i < consumers.count; i++) { diff --git a/nymea-app/ui/mainviews/energy/PowerBalanceStats.qml b/nymea-app/ui/mainviews/energy/PowerBalanceStats.qml index 6df0a8b3..c0e185de 100644 --- a/nymea-app/ui/mainviews/energy/PowerBalanceStats.qml +++ b/nymea-app/ui/mainviews/energy/PowerBalanceStats.qml @@ -321,6 +321,28 @@ StatsBase { } } + Item { + anchors.fill: parent + anchors.leftMargin: chartView.x + chartView.plotArea.x + anchors.topMargin: chartView.y + chartView.plotArea.y + anchors.rightMargin: chartView.width - chartView.plotArea.width - chartView.plotArea.x + anchors.bottomMargin: chartView.height - chartView.plotArea.height - chartView.plotArea.y + z: -1 + + Rectangle { + height: parent.height + Style.margins * 2 + y: -Style.smallMargins + radius: Style.smallCornerRadius + width: chartView.plotArea.width / categoryAxis.count + color: Style.tileBackgroundColor + property int idx: Math.min(Math.max(0,Math.floor(mouseArea.mouseX * categoryAxis.count / mouseArea.width)), categoryAxis.count - 1) + visible: toolTip.visible + + x: idx * parent.width / categoryAxis.count + Behavior on x { NumberAnimation { duration: Style.animationDuration } } + } + } + MouseArea { id: mouseArea anchors.fill: parent @@ -347,7 +369,12 @@ StatsBase { property int idx: Math.min(Math.max(0,Math.floor(mouseArea.mouseX * categoryAxis.count / mouseArea.width)), categoryAxis.count - 1) visible: mouseArea.containsMouse || mouseArea.preventStealing - x: Math.min(idx * mouseArea.width / categoryAxis.count, mouseArea.width - width) + property int chartWidth: chartView.plotArea.width + property int barWidth: chartWidth / categoryAxis.count + + x: chartWidth - (idx * barWidth + barWidth + Style.smallMargins) > width ? + idx * barWidth + barWidth + Style.smallMargins + : idx * barWidth - Style.smallMargins - width property double setMaxValue: d.consumptionSet && d.productionSet && d.acquisitionSet && d.returnSet ? Math.max(d.consumptionSet.at(idx), Math.max(d.productionSet.at(idx), Math.max(d.acquisitionSet.at(idx), d.returnSet.at(idx)))) : 0