Implemented cell monitor screen
This commit is contained in:
12
qml/Controls/AvailabilityIndicator.qml
Normal file
12
qml/Controls/AvailabilityIndicator.qml
Normal 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
|
||||||
|
}
|
||||||
@@ -10,7 +10,7 @@ TextField {
|
|||||||
selectionColor: Palette.alternativeBackgroundColor
|
selectionColor: Palette.alternativeBackgroundColor
|
||||||
|
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
color: Palette.backgroundColor
|
color: enabled ? Palette.backgroundColor : Palette.hoveredBackgroundColor
|
||||||
border.color: Palette.borderColor
|
border.color: Palette.borderColor
|
||||||
border.width: 1
|
border.width: 1
|
||||||
radius: 8
|
radius: 8
|
||||||
|
|||||||
@@ -11,3 +11,4 @@ TitleLabel 1.0 TitleLabel.qml
|
|||||||
SubtitleLabel 1.0 SubtitleLabel.qml
|
SubtitleLabel 1.0 SubtitleLabel.qml
|
||||||
ContentLabel 1.0 ContentLabel.qml
|
ContentLabel 1.0 ContentLabel.qml
|
||||||
DotSeparator 1.0 DotSeparator.qml
|
DotSeparator 1.0 DotSeparator.qml
|
||||||
|
AvailabilityIndicator 1.0 AvailabilityIndicator.qml
|
||||||
|
|||||||
@@ -199,6 +199,7 @@ ApplicationWindow {
|
|||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.leftMargin: 45
|
Layout.leftMargin: 45
|
||||||
Layout.rightMargin: 45
|
Layout.rightMargin: 45
|
||||||
|
Layout.bottomMargin: 30
|
||||||
|
|
||||||
Screens.AkbMonitorScreen {
|
Screens.AkbMonitorScreen {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -314,13 +314,13 @@ Item {
|
|||||||
Connections {
|
Connections {
|
||||||
target: BmsInterface.bmsConfig()
|
target: BmsInterface.bmsConfig()
|
||||||
onUpdated: {
|
onUpdated: {
|
||||||
serialField.text = BmsInterface.bmsConfig().getParamDouble("notUsedCurrentThreshold")
|
serialField.text = BmsInterface.bmsConfig().getParamDouble("notUsedCurrentThreshold") // TODO
|
||||||
|
|
||||||
numberOfModulesLabel.text = BmsInterface.bmsConfig().getParamInt("cellMonitorICCount")
|
numberOfModulesLabel.text = BmsInterface.bmsConfig().getParamInt("cellMonitorICCount")
|
||||||
numberOfCellsLabel.text = BmsInterface.bmsConfig().getParamInt("noOfCellsSeries")
|
numberOfCellsLabel.text = BmsInterface.bmsConfig().getParamInt("noOfCellsSeries")
|
||||||
|
|
||||||
nominalCapacityLabel.text = BmsInterface.bmsConfig().getParamDouble("batteryCapacity")
|
nominalCapacityLabel.text = BmsInterface.bmsConfig().getParamDouble("batteryCapacity")
|
||||||
actualCapacityLabel.text = nominalCapacityLabel.text
|
actualCapacityLabel.text = nominalCapacityLabel.text // TODO
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,180 @@
|
|||||||
import QtQuick 2.12
|
import QtQuick 2.12
|
||||||
import QtQuick.Layouts 1.12
|
import QtQuick.Layouts 1.12
|
||||||
|
import QtGraphicalEffects 1.0
|
||||||
|
|
||||||
import Controls 1.0 as Controls
|
import Controls 1.0 as Controls
|
||||||
import Cubo 1.0
|
import Cubo 1.0
|
||||||
|
import Utils 1.0
|
||||||
|
|
||||||
Item {
|
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
|
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()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,12 +6,14 @@ QtObject {
|
|||||||
property color selectedTextColor: "#009352"
|
property color selectedTextColor: "#009352"
|
||||||
property color contentTextColor: "#869098"
|
property color contentTextColor: "#869098"
|
||||||
property color alternativeTextColor: "#FFFFFF"
|
property color alternativeTextColor: "#FFFFFF"
|
||||||
|
property color tableHeaderTextColor: "#838D97"
|
||||||
|
|
||||||
property color backgroundColor: "#FFFFFF"
|
property color backgroundColor: "#FFFFFF"
|
||||||
property color hoveredBackgroundColor: "#F0F1F4"
|
property color hoveredBackgroundColor: "#F0F1F4"
|
||||||
property color selectedBackgroundColor: "#CCE9DC"
|
property color selectedBackgroundColor: "#CCE9DC"
|
||||||
property color alternativeBackgroundColor: "#009352"
|
property color alternativeBackgroundColor: "#009352"
|
||||||
property color screenBackgroundColor: "#F7F8FC"
|
property color screenBackgroundColor: "#F7F8FC"
|
||||||
|
property color tableHeaderBackgroundColor: "#F0F1F4"
|
||||||
|
|
||||||
property color borderColor: "#DFE0EB"
|
property color borderColor: "#DFE0EB"
|
||||||
|
|
||||||
|
|||||||
@@ -20,5 +20,6 @@
|
|||||||
<file>Controls/SubtitleLabel.qml</file>
|
<file>Controls/SubtitleLabel.qml</file>
|
||||||
<file>Controls/ContentLabel.qml</file>
|
<file>Controls/ContentLabel.qml</file>
|
||||||
<file>Controls/DotSeparator.qml</file>
|
<file>Controls/DotSeparator.qml</file>
|
||||||
|
<file>Controls/AvailabilityIndicator.qml</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|||||||
Reference in New Issue
Block a user