Implemented cell monitor screen

This commit is contained in:
Yury Shuvakin
2022-08-17 05:30:25 +03:00
parent a4196df821
commit 4a5a0bcb3a
8 changed files with 188 additions and 4 deletions

View File

@@ -0,0 +1,12 @@
import QtQuick 2.12
import Utils 1.0
Rectangle {
property bool enabled: false
implicitWidth: 18
implicitHeight: 18
radius: implicitWidth / 2
color: enabled ? Palette.alternativeBackgroundColor : Palette.borderColor
}

View File

@@ -10,7 +10,7 @@ TextField {
selectionColor: Palette.alternativeBackgroundColor
background: Rectangle {
color: Palette.backgroundColor
color: enabled ? Palette.backgroundColor : Palette.hoveredBackgroundColor
border.color: Palette.borderColor
border.width: 1
radius: 8

View File

@@ -11,3 +11,4 @@ TitleLabel 1.0 TitleLabel.qml
SubtitleLabel 1.0 SubtitleLabel.qml
ContentLabel 1.0 ContentLabel.qml
DotSeparator 1.0 DotSeparator.qml
AvailabilityIndicator 1.0 AvailabilityIndicator.qml

View File

@@ -199,6 +199,7 @@ ApplicationWindow {
Layout.fillHeight: true
Layout.leftMargin: 45
Layout.rightMargin: 45
Layout.bottomMargin: 30
Screens.AkbMonitorScreen {
}

View File

@@ -314,13 +314,13 @@ Item {
Connections {
target: BmsInterface.bmsConfig()
onUpdated: {
serialField.text = BmsInterface.bmsConfig().getParamDouble("notUsedCurrentThreshold")
serialField.text = BmsInterface.bmsConfig().getParamDouble("notUsedCurrentThreshold") // TODO
numberOfModulesLabel.text = BmsInterface.bmsConfig().getParamInt("cellMonitorICCount")
numberOfCellsLabel.text = BmsInterface.bmsConfig().getParamInt("noOfCellsSeries")
nominalCapacityLabel.text = BmsInterface.bmsConfig().getParamDouble("batteryCapacity")
actualCapacityLabel.text = nominalCapacityLabel.text
actualCapacityLabel.text = nominalCapacityLabel.text // TODO
}
}

View File

@@ -1,13 +1,180 @@
import QtQuick 2.12
import QtQuick.Layouts 1.12
import QtGraphicalEffects 1.0
import Controls 1.0 as Controls
import Cubo 1.0
import Utils 1.0
Item {
Controls.Frame {
Component {
id: cellListHeader
RowLayout {
spacing: 0
width: ListView.view.width
Rectangle {
id: numberTab
color: Palette.tableHeaderBackgroundColor
Layout.preferredHeight: 60
Layout.fillWidth: true
Controls.SubtitleLabel {
text: qsTr("№")
color: Palette.tableHeaderTextColor
anchors.centerIn: parent
}
}
Rectangle {
id: voltageTab
color: Palette.tableHeaderBackgroundColor
Layout.preferredHeight: 60
Layout.fillWidth: true
Controls.SubtitleLabel {
text: qsTr("Voltage")
color: Palette.tableHeaderTextColor
anchors.centerIn: parent
}
}
Rectangle {
id: balancingTab
color: Palette.tableHeaderBackgroundColor
Layout.preferredHeight: 60
Layout.fillWidth: true
Controls.SubtitleLabel {
text: qsTr("Balancing")
color: Palette.tableHeaderTextColor
anchors.centerIn: parent
}
}
Layout.fillWidth: true
}
}
Component {
id: cellListDelegate
RowLayout {
spacing: 10
width: ListView.view.width
height: 36
Item {
Layout.preferredWidth: parent.width / 6 - 20
}
Controls.SubtitleLabel {
text: index
color: Palette.tableHeaderTextColor
Layout.preferredWidth: 25
Layout.alignment: Qt.AlignCenter
}
Controls.DotSeparator {
Layout.fillWidth: true
}
Controls.SubtitleLabel {
text: modelData.voltage + " " + qsTr("V")
color: Palette.tableHeaderTextColor
}
Controls.DotSeparator {
Layout.fillWidth: true
}
Controls.AvailabilityIndicator {
enabled: modelData.balancing
Layout.alignment: Qt.AlignCenter
}
Item {
Layout.preferredWidth: parent.width / 6 - 20
}
}
}
RowLayout {
anchors.fill: parent
spacing: 20
Controls.Frame {
padding: 1
ListView {
id: firstCellGroup
anchors.fill: parent
clip: true
model: []
spacing: 2
header: cellListHeader
delegate: cellListDelegate
}
Layout.fillWidth: true
Layout.fillHeight: true
}
Controls.Frame {
padding: 1
visible: secondCellGroup.model.length > 0
ListView {
id: secondCellGroup
anchors.fill: parent
clip: true
model: []
spacing: 2
header: cellListHeader
delegate: cellListDelegate
}
Layout.fillWidth: true
Layout.fillHeight: true
}
}
Connections {
target: BmsInterface.commands()
onCellsReceived: {
firstCellGroup.model = []
var firstModel = []
for (var i = 0; i < Math.min(cellCount, 16); ++i) {
firstModel.push({"voltage": cellVoltageArray[i], "balancing": true})
}
firstCellGroup.model = firstModel
if (cellCount > 16) {
secondCellGroup.model = []
var secondModel = []
for (var j = 16; j < Math.min(cellCount, 32); ++j) {
secondModel.push({"voltage": cellVoltageArray[j], "balancing": true})
}
secondCellGroup.model = secondModel
}
}
}
Connections {
target: BmsInterface
onPortConnectedChanged: getValues()
}
onVisibleChanged: getValues()
function getValues() {
if (BmsInterface.isPortConnected() && visible) {
BmsInterface.commands().getCells()
}
}
}

View File

@@ -6,12 +6,14 @@ QtObject {
property color selectedTextColor: "#009352"
property color contentTextColor: "#869098"
property color alternativeTextColor: "#FFFFFF"
property color tableHeaderTextColor: "#838D97"
property color backgroundColor: "#FFFFFF"
property color hoveredBackgroundColor: "#F0F1F4"
property color selectedBackgroundColor: "#CCE9DC"
property color alternativeBackgroundColor: "#009352"
property color screenBackgroundColor: "#F7F8FC"
property color tableHeaderBackgroundColor: "#F0F1F4"
property color borderColor: "#DFE0EB"

View File

@@ -20,5 +20,6 @@
<file>Controls/SubtitleLabel.qml</file>
<file>Controls/ContentLabel.qml</file>
<file>Controls/DotSeparator.qml</file>
<file>Controls/AvailabilityIndicator.qml</file>
</qresource>
</RCC>