Skip to content

Commit 11480f0

Browse files
committed
Use VeQuickItem::numberValue to reduce binding overheads
1 parent 24ee863 commit 11480f0

27 files changed

+94
-97
lines changed

components/AcPhase.qml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ QtObject {
1010
id: root
1111

1212
property string serviceUid
13-
readonly property real frequency: _frequency.value === undefined ? NaN : _frequency.value
14-
readonly property real current: _current.value === undefined ? NaN : _current.value
15-
readonly property real voltage: _voltage.value === undefined ? NaN : _voltage.value
16-
readonly property real power: _power.value === undefined ? NaN : _power.value
13+
readonly property real frequency: _frequency.numberValue
14+
readonly property real current: _current.numberValue
15+
readonly property real voltage: _voltage.numberValue
16+
readonly property real power: _power.numberValue
1717
readonly property bool valid: !isNaN(frequency)
1818
&& !isNaN(current)
1919
&& !isNaN(voltage)

components/listitems/ListQuantityField.qml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import Victron.VenusOS
99
ListTextField {
1010
id: root
1111

12-
property real value: dataItem.isValid ? dataItem.value : NaN
12+
property real value: dataItem.numberValue
1313
property int unit: VenusOS.Units_None
1414
property int decimals: Units.defaultUnitPrecision(unit)
1515

components/listitems/ListQuantityItem.qml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ ListItem {
2020

2121
anchors.verticalCenter: parent.verticalCenter
2222
font.pixelSize: Theme.font_size_body2
23-
value: dataItem.value === undefined ? NaN : dataItem.value
23+
value: dataItem.numberValue
2424
}
2525
]
2626

data/DcInputs.qml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ QtObject {
1111

1212
property real power: NaN
1313
property real current: NaN
14-
readonly property real maximumPower: _maximumPower.value === undefined ? NaN : _maximumPower.value
14+
readonly property real maximumPower: _maximumPower.numberValue
1515

1616
property DeviceModel model: DeviceModel {
1717
modelId: "dcInputs"

data/System.qml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ QtObject {
2828
property QtObject solar: QtObject {
2929
readonly property real power: Units.sumRealNumbers(acPower, dcPower)
3030
property real acPower: _pvMonitor.totalPower
31-
property real dcPower: _dcPvPower.value === undefined ? NaN : _dcPvPower.value
32-
readonly property real maximumPower: _maximumPower.value === undefined ? NaN : _maximumPower.value
31+
property real dcPower: _dcPvPower.numberValue
32+
readonly property real maximumPower: _maximumPower.numberValue
3333

3434
// In cases where the overall current cannot be determined, the value is NaN.
3535
readonly property real current: {
@@ -46,7 +46,7 @@ QtObject {
4646
}
4747
return _pvMonitor.totalCurrent
4848
} else if (Global.solarChargers.model.count > 0) {
49-
return _dcPvCurrent.value === undefined ? NaN : _dcPvCurrent.value
49+
return _dcPvCurrent.numberValue
5050
}
5151
return NaN
5252
}
@@ -71,7 +71,7 @@ QtObject {
7171

7272
readonly property QtObject veBus: QtObject {
7373
readonly property string serviceUid: BackendConnection.serviceUidFromName(_serviceName.value || "", _deviceInstance.value || 0)
74-
readonly property real power: _power.value === undefined ? NaN : _power.value
74+
readonly property real power: _power.numberValue
7575

7676
readonly property VeQuickItem _serviceName: VeQuickItem { uid: root.serviceUid + "/VebusService" }
7777
readonly property VeQuickItem _deviceInstance: VeQuickItem { uid: root.serviceUid + "/VebusInstance" }

data/SystemAc.qml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ QtObject {
1212
property QtObject consumption: QtObject {
1313
property real power: NaN
1414
readonly property real current: phases.count === 1 ? _firstPhaseCurrent : NaN // multi-phase systems don't have a total current
15-
readonly property real maximumCurrent: _maximumCurrent.value === undefined ? NaN : _maximumCurrent.value
15+
readonly property real maximumCurrent: _maximumCurrent.numberValue
1616
property real _firstPhaseCurrent: NaN
1717

1818
property ListModel phases: ListModel {}

data/SystemDc.qml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ QtObject {
1212
property real power: NaN
1313
readonly property real current: (isNaN(power) || isNaN(voltage) || voltage === 0) ? NaN : power / voltage
1414
property real voltage: NaN
15-
readonly property real maximumPower: _maximumDcPower.value === undefined ? NaN : _maximumDcPower.value
15+
readonly property real maximumPower: _maximumDcPower.numberValue
1616

1717
function reset() {
1818
power = NaN

data/common/AcData.qml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@ QtObject {
1111

1212
property string bindPrefix
1313

14-
readonly property real voltage: _voltage.value === undefined ? NaN : _voltage.value
15-
readonly property real current: _current.value === undefined ? NaN : _current.value
16-
readonly property real frequency: _frequency.value === undefined ? NaN : _frequency.value
14+
readonly property real voltage: _voltage.numberValue
15+
readonly property real current: _current.numberValue
16+
readonly property real frequency: _frequency.numberValue
1717

1818
// If the power is not reported, calculate the apparent power
19-
readonly property real power: _reportedPower.value !== undefined ? _reportedPower.value
20-
: _apparentPower.value !== undefined ? _apparentPower.value
21-
: _voltage.value !== undefined && _current.value !== undefined ? _voltage.value * _current.value
19+
readonly property real power: _reportedPower.isValid ? _reportedPower.numberValue
20+
: _apparentPower.isValid ? _apparentPower.numberValue
21+
: (_voltage.isValid && _current.isValid) ? _voltage.numberValue * _current.numberValue
2222
: NaN
23-
readonly property int powerUnit: _reportedPower.value !== undefined ? VenusOS.Units_Watt : VenusOS.Units_VoltAmpere
23+
readonly property int powerUnit: _reportedPower.isValid ? VenusOS.Units_Watt : VenusOS.Units_VoltAmpere
2424

2525
property VeQuickItem _voltage: VeQuickItem {
2626
uid: root.bindPrefix ? root.bindPrefix + "/V" : ""

data/common/AcInputServiceLoader.qml

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,12 @@ Loader {
5858
id: vebusComponent
5959

6060
QtObject {
61-
readonly property real power: isNaN(_powerValue) ? NaN
61+
readonly property real power: !_power.isValid ? _powerValue // Will be NaN.
6262
: root._feedbackEnabled ? _powerValue
6363
: _powerValue > 0 ? _powerValue // see AcInputs.clampMeasurement().
6464
: 0.0
65-
readonly property real currentLimit: _currentLimit.value === undefined ? NaN : _currentLimit.value
66-
readonly property real _powerValue: _power.value === undefined ? NaN : _power.value
65+
readonly property real currentLimit: _currentLimit.numberValue
66+
readonly property real _powerValue: _power.numberValue
6767

6868
readonly property VeQuickItem _power: VeQuickItem {
6969
uid: root.serviceUid + "/Ac/ActiveIn/P"
@@ -85,7 +85,7 @@ Loader {
8585
id: multiComponent
8686

8787
QtObject {
88-
readonly property real currentLimit: _currentLimit.value === undefined ? NaN : _currentLimit.value
88+
readonly property real currentLimit: _currentLimit.numberValue
8989

9090
readonly property VeQuickItem _activeInput: VeQuickItem {
9191
uid: root.serviceUid + "/Ac/ActiveIn/ActiveInput"
@@ -104,9 +104,11 @@ Loader {
104104

105105
QtObject {
106106
readonly property bool _feedbackEnabled: Global.systemSettings.essFeedbackToGridEnabled
107-
readonly property real power: _power.value === undefined ? NaN
108-
: _feedbackEnabled ? _power.value
109-
: Math.max(0, value) // See AcInputs.clampMeasurement().
107+
108+
readonly property real power: isNaN(_power.numberValue) ? _power.numberValue
109+
: _feedbackEnabled ? _power.numberValue
110+
: _power.numberValue > 0 ? _power.numberValue // See AcInputs.clampMeasurement().
111+
: 0
110112

111113
// For these devices, there is no current limit.
112114
readonly property real currentLimit: NaN

data/common/AcInputSettings.qml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ QtObject {
1212
property string serviceUid
1313
property int inputNumber: model.index + 1
1414
readonly property int inputType: isNaN(_type.value) ? -1 : _type.value
15-
readonly property real currentLimit: _currentLimit.value === undefined ? -1 : _currentLimit.value
15+
readonly property real currentLimit: _currentLimit.isValid ? _currentLimit.numberValue : -1
1616
readonly property bool currentLimitAdjustable: _currentLimitAdjustable.value === 1
1717

1818
property VeQuickItem _type: VeQuickItem {

0 commit comments

Comments
 (0)