1/* 2 SPDX-FileCopyrightText: 2019 Marco Martin <mart@kde.org> 3 SPDX-FileCopyrightText: 2019 David Edmundson <davidedmundson@kde.org> 4 SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl> 5 SPDX-FileCopyrightText: 2019 Kai Uwe Broulik <kde@broulik.de> 6 7 SPDX-License-Identifier: LGPL-2.0-or-later 8*/ 9 10import QtQuick 2.9 11import QtQuick.Layouts 1.1 12 13import org.kde.kirigami 2.8 as Kirigami 14 15import org.kde.ksysguard.sensors 1.0 as Sensors 16import org.kde.ksysguard.faces 1.0 as Faces 17 18import org.kde.quickcharts 1.0 as Charts 19 20Charts.BarChart { 21 id: chart 22 23 readonly property int barCount: stacked ? 1 : instantiator.count 24 25 readonly property alias sensorsModel: sensorsModel 26 27 property int updateRateLimit 28 29 property var controller 30 31 stacked: controller.faceConfiguration.barChartStacked 32 33 spacing: Math.round(width / 20) 34 35 readonly property real rangeFromY: controller.faceConfiguration.rangeFrom * 36 controller.faceConfiguration.rangeFromMultiplier 37 38 readonly property real rangeToY: controller.faceConfiguration.rangeTo * 39 controller.faceConfiguration.rangeToMultiplier 40 41 yRange { 42 from: chart.rangeFromY 43 to: chart.rangeToY 44 automatic: controller.faceConfiguration.rangeAuto 45 } 46 47 Sensors.SensorDataModel { 48 id: sensorsModel 49 sensors: controller.highPrioritySensorIds 50 updateRateLimit: chart.updateRateLimit 51 sensorLabels: root.controller.sensorLabels 52 53 property int unit: sensorsModel.ready ? sensorsModel.headerData(0, Qt.Horizontal, Sensors.SensorDataModel.Unit) : Formatter.Formatter.UnitInvalid 54 } 55 56 Instantiator { 57 id: instantiator 58 model: sensorsModel.sensors 59 delegate: Charts.ModelSource { 60 model: sensorsModel 61 roleName: "Value" 62 column: index 63 } 64 onObjectAdded: { 65 chart.insertValueSource(index, object) 66 } 67 onObjectRemoved: { 68 chart.removeValueSource(object) 69 } 70 } 71 72 colorSource: root.colorSource 73 nameSource: Charts.ModelSource { 74 model: sensorsModel 75 roleName: "Name" 76 indexColumns: true 77 } 78 shortNameSource: Charts.ModelSource { 79 roleName: "ShortName"; 80 model: sensorsModel 81 indexColumns: true 82 } 83} 84 85