@victronenergy/mfd-modules 10.4.2 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/src/Modules/AcLoads/AcLoads.provider.d.ts.map +1 -1
- package/dist/src/Modules/AcLoads/AcLoads.provider.js +19 -19
- package/dist/src/Modules/AcLoads/AcLoads.provider.js.map +1 -1
- package/dist/src/Modules/AcMode/AcMode.provider.d.ts.map +1 -1
- package/dist/src/Modules/AcMode/AcMode.provider.js +19 -31
- package/dist/src/Modules/AcMode/AcMode.provider.js.map +1 -1
- package/dist/src/Modules/ActiveSource/ActiveInValues.provider.js +17 -17
- package/dist/src/Modules/ActiveSource/ActiveInValues.provider.js.map +1 -1
- package/dist/src/Modules/ActiveSource/ActiveSource.provider.js +11 -11
- package/dist/src/Modules/ActiveSource/ActiveSource.provider.js.map +1 -1
- package/dist/src/Modules/Alternators/Alternator.provider.d.ts.map +1 -1
- package/dist/src/Modules/Alternators/Alternator.provider.js +7 -8
- package/dist/src/Modules/Alternators/Alternator.provider.js.map +1 -1
- package/dist/src/Modules/Alternators/Alternators.provider.d.ts.map +1 -1
- package/dist/src/Modules/Alternators/Alternators.provider.js +16 -14
- package/dist/src/Modules/Alternators/Alternators.provider.js.map +1 -1
- package/dist/src/Modules/Alternators/Alternators.store.d.ts.map +1 -1
- package/dist/src/Modules/Alternators/Alternators.store.js +7 -10
- package/dist/src/Modules/Alternators/Alternators.store.js.map +1 -1
- package/dist/src/Modules/App/App.provider.js +47 -47
- package/dist/src/Modules/App/App.provider.js.map +1 -1
- package/dist/src/Modules/App/App.store.d.ts +2 -2
- package/dist/src/Modules/App/App.store.d.ts.map +1 -1
- package/dist/src/Modules/App/App.store.js +67 -110
- package/dist/src/Modules/App/App.store.js.map +1 -1
- package/dist/src/Modules/Battery/Batteries.provider.d.ts.map +1 -1
- package/dist/src/Modules/Battery/Batteries.provider.js +16 -14
- package/dist/src/Modules/Battery/Batteries.provider.js.map +1 -1
- package/dist/src/Modules/Battery/Batteries.store.d.ts.map +1 -1
- package/dist/src/Modules/Battery/Batteries.store.js +7 -10
- package/dist/src/Modules/Battery/Batteries.store.js.map +1 -1
- package/dist/src/Modules/Battery/SystemBatteries.provider.js +5 -5
- package/dist/src/Modules/Battery/SystemBatteries.provider.js.map +1 -1
- package/dist/src/Modules/Chargers/Charger.provider.js +23 -33
- package/dist/src/Modules/Chargers/Charger.provider.js.map +1 -1
- package/dist/src/Modules/Chargers/Chargers.provider.d.ts.map +1 -1
- package/dist/src/Modules/Chargers/Chargers.provider.js +16 -15
- package/dist/src/Modules/Chargers/Chargers.provider.js.map +1 -1
- package/dist/src/Modules/Chargers/Chargers.store.d.ts.map +1 -1
- package/dist/src/Modules/Chargers/Chargers.store.js +7 -10
- package/dist/src/Modules/Chargers/Chargers.store.js.map +1 -1
- package/dist/src/Modules/DcLoads/DcLoads.provider.d.ts.map +1 -1
- package/dist/src/Modules/DcLoads/DcLoads.provider.js +9 -20
- package/dist/src/Modules/DcLoads/DcLoads.provider.js.map +1 -1
- package/dist/src/Modules/Generators/ConnectedGenset.provider.d.ts.map +1 -1
- package/dist/src/Modules/Generators/ConnectedGenset.provider.js +36 -47
- package/dist/src/Modules/Generators/ConnectedGenset.provider.js.map +1 -1
- package/dist/src/Modules/Generators/ConnectedGensets.provider.d.ts.map +1 -1
- package/dist/src/Modules/Generators/ConnectedGensets.provider.js +16 -14
- package/dist/src/Modules/Generators/ConnectedGensets.provider.js.map +1 -1
- package/dist/src/Modules/Generators/ConnectedGensets.store.d.ts.map +1 -1
- package/dist/src/Modules/Generators/ConnectedGensets.store.js +8 -11
- package/dist/src/Modules/Generators/ConnectedGensets.store.js.map +1 -1
- package/dist/src/Modules/Generators/GeneratorConnectedGenset.provider.js +17 -27
- package/dist/src/Modules/Generators/GeneratorConnectedGenset.provider.js.map +1 -1
- package/dist/src/Modules/Generators/GeneratorRelay.provider.d.ts +2 -2
- package/dist/src/Modules/Generators/GeneratorRelay.provider.d.ts.map +1 -1
- package/dist/src/Modules/Generators/GeneratorRelay.provider.js +24 -34
- package/dist/src/Modules/Generators/GeneratorRelay.provider.js.map +1 -1
- package/dist/src/Modules/Header/Header.provider.js +4 -4
- package/dist/src/Modules/Header/Header.provider.js.map +1 -1
- package/dist/src/Modules/InverterCharger/InputLimit.provider.js +6 -17
- package/dist/src/Modules/InverterCharger/InputLimit.provider.js.map +1 -1
- package/dist/src/Modules/InverterCharger/InputLimitSelector.provider.d.ts.map +1 -1
- package/dist/src/Modules/InverterCharger/InputLimitSelector.provider.js +12 -26
- package/dist/src/Modules/InverterCharger/InputLimitSelector.provider.js.map +1 -1
- package/dist/src/Modules/InverterCharger/InverterCharger.provider.d.ts.map +1 -1
- package/dist/src/Modules/InverterCharger/InverterCharger.provider.js +16 -27
- package/dist/src/Modules/InverterCharger/InverterCharger.provider.js.map +1 -1
- package/dist/src/Modules/Inverters/Inverter.provider.d.ts.map +1 -1
- package/dist/src/Modules/Inverters/Inverter.provider.js +19 -30
- package/dist/src/Modules/Inverters/Inverter.provider.js.map +1 -1
- package/dist/src/Modules/Inverters/Inverters.provider.d.ts.map +1 -1
- package/dist/src/Modules/Inverters/Inverters.provider.js +14 -13
- package/dist/src/Modules/Inverters/Inverters.provider.js.map +1 -1
- package/dist/src/Modules/Inverters/Inverters.store.d.ts.map +1 -1
- package/dist/src/Modules/Inverters/Inverters.store.js +7 -10
- package/dist/src/Modules/Inverters/Inverters.store.js.map +1 -1
- package/dist/src/Modules/Inverters/index.js.map +1 -1
- package/dist/src/Modules/Language/Language.provider.d.ts +1 -1
- package/dist/src/Modules/Language/Language.provider.d.ts.map +1 -1
- package/dist/src/Modules/Language/Language.provider.js +21 -56
- package/dist/src/Modules/Language/Language.provider.js.map +1 -1
- package/dist/src/Modules/Mqtt/Mqtt.constants.js +1 -1
- package/dist/src/Modules/Mqtt/Mqtt.constants.js.map +1 -1
- package/dist/src/Modules/Mqtt/Mqtt.provider.d.ts +2 -2
- package/dist/src/Modules/Mqtt/Mqtt.provider.d.ts.map +1 -1
- package/dist/src/Modules/Mqtt/Mqtt.provider.js +4 -4
- package/dist/src/Modules/Mqtt/Mqtt.provider.js.map +1 -1
- package/dist/src/Modules/Mqtt/Mqtt.store.d.ts +3 -3
- package/dist/src/Modules/Mqtt/Mqtt.store.d.ts.map +1 -1
- package/dist/src/Modules/Mqtt/Mqtt.store.js +169 -193
- package/dist/src/Modules/Mqtt/Mqtt.store.js.map +1 -1
- package/dist/src/Modules/Mqtt/Mqtt.types.d.ts +1 -1
- package/dist/src/Modules/Mqtt/Mqtt.types.d.ts.map +1 -1
- package/dist/src/Modules/Mqtt/Mqtt.types.js +0 -1
- package/dist/src/Modules/Mqtt/Mqtt.types.js.map +1 -1
- package/dist/src/Modules/PvCharger/PvCharger.provider.js +8 -8
- package/dist/src/Modules/PvCharger/PvCharger.provider.js.map +1 -1
- package/dist/src/Modules/ShorePowerInput/ShorePowerInput.provider.d.ts +4 -1
- package/dist/src/Modules/ShorePowerInput/ShorePowerInput.provider.d.ts.map +1 -1
- package/dist/src/Modules/ShorePowerInput/ShorePowerInput.provider.js +24 -35
- package/dist/src/Modules/ShorePowerInput/ShorePowerInput.provider.js.map +1 -1
- package/dist/src/Modules/ShorePowerInput/index.d.ts +0 -1
- package/dist/src/Modules/ShorePowerInput/index.d.ts.map +1 -1
- package/dist/src/Modules/ShorePowerInput/index.js +0 -1
- package/dist/src/Modules/ShorePowerInput/index.js.map +1 -1
- package/dist/src/Modules/SwitchingPane/GenericInput.provider.d.ts +27 -0
- package/dist/src/Modules/SwitchingPane/GenericInput.provider.d.ts.map +1 -0
- package/dist/src/Modules/SwitchingPane/GenericInput.provider.js +32 -0
- package/dist/src/Modules/SwitchingPane/GenericInput.provider.js.map +1 -0
- package/dist/src/Modules/{SwitchableOutputs → SwitchingPane}/SwitchableOutput.provider.d.ts +25 -9
- package/dist/src/Modules/SwitchingPane/SwitchableOutput.provider.d.ts.map +1 -0
- package/dist/src/Modules/SwitchingPane/SwitchableOutput.provider.js +58 -0
- package/dist/src/Modules/SwitchingPane/SwitchableOutput.provider.js.map +1 -0
- package/dist/src/Modules/SwitchingPane/SwitchingDevice.provider.d.ts.map +1 -0
- package/dist/src/Modules/SwitchingPane/SwitchingDevice.provider.js +48 -0
- package/dist/src/Modules/SwitchingPane/SwitchingDevice.provider.js.map +1 -0
- package/dist/src/Modules/SwitchingPane/SwitchingDevices.store.d.ts.map +1 -0
- package/dist/src/Modules/{SwitchableOutputs → SwitchingPane}/SwitchingDevices.store.js +7 -10
- package/dist/src/Modules/SwitchingPane/SwitchingDevices.store.js.map +1 -0
- package/dist/src/Modules/SwitchingPane/SwitchingPane.provider.d.ts +2 -0
- package/dist/src/Modules/SwitchingPane/SwitchingPane.provider.d.ts.map +1 -0
- package/dist/src/Modules/SwitchingPane/SwitchingPane.provider.js +256 -0
- package/dist/src/Modules/SwitchingPane/SwitchingPane.provider.js.map +1 -0
- package/dist/src/Modules/SwitchingPane/SwitchingPane.store.d.ts +50 -0
- package/dist/src/Modules/SwitchingPane/SwitchingPane.store.d.ts.map +1 -0
- package/dist/src/Modules/{SwitchableOutputs/SwitchableOutputs.store.js → SwitchingPane/SwitchingPane.store.js} +67 -18
- package/dist/src/Modules/SwitchingPane/SwitchingPane.store.js.map +1 -0
- package/dist/src/Modules/SwitchingPane/index.d.ts +7 -0
- package/dist/src/Modules/SwitchingPane/index.d.ts.map +1 -0
- package/dist/src/Modules/SwitchingPane/index.js +7 -0
- package/dist/src/Modules/SwitchingPane/index.js.map +1 -0
- package/dist/src/Modules/SystemState/SystemState.provider.js +5 -5
- package/dist/src/Modules/SystemState/SystemState.provider.js.map +1 -1
- package/dist/src/Modules/Tanks/Tank.provider.d.ts.map +1 -1
- package/dist/src/Modules/Tanks/Tank.provider.js +11 -11
- package/dist/src/Modules/Tanks/Tank.provider.js.map +1 -1
- package/dist/src/Modules/Tanks/Tanks.provider.d.ts.map +1 -1
- package/dist/src/Modules/Tanks/Tanks.provider.js +19 -18
- package/dist/src/Modules/Tanks/Tanks.provider.js.map +1 -1
- package/dist/src/Modules/Tanks/Tanks.store.d.ts.map +1 -1
- package/dist/src/Modules/Tanks/Tanks.store.js +7 -10
- package/dist/src/Modules/Tanks/Tanks.store.js.map +1 -1
- package/dist/src/Modules/Temperatures/Temperature.provider.d.ts.map +1 -1
- package/dist/src/Modules/Temperatures/Temperature.provider.js +29 -29
- package/dist/src/Modules/Temperatures/Temperature.provider.js.map +1 -1
- package/dist/src/Modules/Temperatures/Temperatures.provider.d.ts.map +1 -1
- package/dist/src/Modules/Temperatures/Temperatures.provider.js +18 -17
- package/dist/src/Modules/Temperatures/Temperatures.provider.js.map +1 -1
- package/dist/src/Modules/Temperatures/Temperatures.store.d.ts.map +1 -1
- package/dist/src/Modules/Temperatures/Temperatures.store.js +7 -10
- package/dist/src/Modules/Temperatures/Temperatures.store.js.map +1 -1
- package/dist/src/Modules/Temperatures/index.d.ts +3 -3
- package/dist/src/Modules/Temperatures/index.js +3 -3
- package/dist/src/Modules/Temperatures/index.js.map +1 -1
- package/dist/src/Modules/Theme/Theme.provider.js +6 -6
- package/dist/src/Modules/Theme/Theme.provider.js.map +1 -1
- package/dist/src/Modules/Theme/Theme.store.d.ts.map +1 -1
- package/dist/src/Modules/Theme/Theme.store.js +35 -38
- package/dist/src/Modules/Theme/Theme.store.js.map +1 -1
- package/dist/src/Modules/Vebus/Vebus.provider.d.ts.map +1 -1
- package/dist/src/Modules/Vebus/Vebus.provider.js +39 -48
- package/dist/src/Modules/Vebus/Vebus.provider.js.map +1 -1
- package/dist/src/Modules/Vebus/Vebus.store.d.ts.map +1 -1
- package/dist/src/Modules/Vebus/Vebus.store.js +11 -14
- package/dist/src/Modules/Vebus/Vebus.store.js.map +1 -1
- package/dist/src/Modules/Vrm/Vrm.store.d.ts.map +1 -1
- package/dist/src/Modules/Vrm/Vrm.store.js +85 -154
- package/dist/src/Modules/Vrm/Vrm.store.js.map +1 -1
- package/dist/src/Modules/Vrm/Vrm.types.js +0 -1
- package/dist/src/Modules/WindGenerators/WindGenerator.provider.d.ts.map +1 -1
- package/dist/src/Modules/WindGenerators/WindGenerator.provider.js +6 -7
- package/dist/src/Modules/WindGenerators/WindGenerator.provider.js.map +1 -1
- package/dist/src/Modules/WindGenerators/WindGenerators.provider.d.ts.map +1 -1
- package/dist/src/Modules/WindGenerators/WindGenerators.provider.js +21 -19
- package/dist/src/Modules/WindGenerators/WindGenerators.provider.js.map +1 -1
- package/dist/src/Modules/WindGenerators/WindGenerators.store.d.ts.map +1 -1
- package/dist/src/Modules/WindGenerators/WindGenerators.store.js +7 -10
- package/dist/src/Modules/WindGenerators/WindGenerators.store.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/utils/constants.d.ts +53 -3
- package/dist/src/utils/constants.d.ts.map +1 -1
- package/dist/src/utils/constants.js +82 -30
- package/dist/src/utils/constants.js.map +1 -1
- package/dist/src/utils/hsvw.d.ts.map +1 -1
- package/dist/src/utils/hsvw.js +24 -25
- package/dist/src/utils/hsvw.js.map +1 -1
- package/dist/src/utils/logger.d.ts +5 -8
- package/dist/src/utils/logger.d.ts.map +1 -1
- package/dist/src/utils/logger.js +11 -23
- package/dist/src/utils/logger.js.map +1 -1
- package/dist/src/utils/storage.d.ts.map +1 -1
- package/dist/src/utils/storage.js +7 -6
- package/dist/src/utils/storage.js.map +1 -1
- package/dist/src/utils/util.d.ts +6 -15
- package/dist/src/utils/util.d.ts.map +1 -1
- package/dist/src/utils/util.js +8 -100
- package/dist/src/utils/util.js.map +1 -1
- package/package.json +26 -15
- package/dist/eslint.config.d.mts +0 -13
- package/dist/eslint.config.d.mts.map +0 -1
- package/dist/eslint.config.mjs +0 -28
- package/dist/eslint.config.mjs.map +0 -1
- package/dist/src/Modules/ShorePowerInput/ShorePowerInput.store.d.ts +0 -11
- package/dist/src/Modules/ShorePowerInput/ShorePowerInput.store.d.ts.map +0 -1
- package/dist/src/Modules/ShorePowerInput/ShorePowerInput.store.js +0 -37
- package/dist/src/Modules/ShorePowerInput/ShorePowerInput.store.js.map +0 -1
- package/dist/src/Modules/SwitchableOutputs/SwitchableOutput.provider.d.ts.map +0 -1
- package/dist/src/Modules/SwitchableOutputs/SwitchableOutput.provider.js +0 -67
- package/dist/src/Modules/SwitchableOutputs/SwitchableOutput.provider.js.map +0 -1
- package/dist/src/Modules/SwitchableOutputs/SwitchableOutputs.provider.d.ts +0 -2
- package/dist/src/Modules/SwitchableOutputs/SwitchableOutputs.provider.d.ts.map +0 -1
- package/dist/src/Modules/SwitchableOutputs/SwitchableOutputs.provider.js +0 -168
- package/dist/src/Modules/SwitchableOutputs/SwitchableOutputs.provider.js.map +0 -1
- package/dist/src/Modules/SwitchableOutputs/SwitchableOutputs.store.d.ts +0 -38
- package/dist/src/Modules/SwitchableOutputs/SwitchableOutputs.store.d.ts.map +0 -1
- package/dist/src/Modules/SwitchableOutputs/SwitchableOutputs.store.js.map +0 -1
- package/dist/src/Modules/SwitchableOutputs/SwitchingDevice.provider.d.ts.map +0 -1
- package/dist/src/Modules/SwitchableOutputs/SwitchingDevice.provider.js +0 -50
- package/dist/src/Modules/SwitchableOutputs/SwitchingDevice.provider.js.map +0 -1
- package/dist/src/Modules/SwitchableOutputs/SwitchingDevices.store.d.ts.map +0 -1
- package/dist/src/Modules/SwitchableOutputs/SwitchingDevices.store.js.map +0 -1
- package/dist/src/Modules/SwitchableOutputs/index.d.ts +0 -6
- package/dist/src/Modules/SwitchableOutputs/index.d.ts.map +0 -1
- package/dist/src/Modules/SwitchableOutputs/index.js +0 -6
- package/dist/src/Modules/SwitchableOutputs/index.js.map +0 -1
- /package/dist/src/Modules/{SwitchableOutputs → SwitchingPane}/SwitchingDevice.provider.d.ts +0 -0
- /package/dist/src/Modules/{SwitchableOutputs → SwitchingPane}/SwitchingDevices.store.d.ts +0 -0
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { action, makeAutoObservable } from "mobx";
|
|
2
2
|
import { useMemo } from "react";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var _this = this;
|
|
3
|
+
let store;
|
|
4
|
+
export class SwitchingPaneStore {
|
|
5
|
+
constructor() {
|
|
7
6
|
Object.defineProperty(this, "groups", {
|
|
8
7
|
enumerable: true,
|
|
9
8
|
configurable: true,
|
|
@@ -46,47 +45,95 @@ var SwitchableOutputsStore = /** @class */ (function () {
|
|
|
46
45
|
writable: true,
|
|
47
46
|
value: []
|
|
48
47
|
});
|
|
48
|
+
Object.defineProperty(this, "genericInputGroupAssignments", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
configurable: true,
|
|
51
|
+
writable: true,
|
|
52
|
+
value: []
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(this, "genericInputTypes", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
configurable: true,
|
|
57
|
+
writable: true,
|
|
58
|
+
value: []
|
|
59
|
+
});
|
|
60
|
+
Object.defineProperty(this, "genericInputNames", {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
configurable: true,
|
|
63
|
+
writable: true,
|
|
64
|
+
value: []
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(this, "genericInputVisibilityFlags", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
configurable: true,
|
|
69
|
+
writable: true,
|
|
70
|
+
value: []
|
|
71
|
+
});
|
|
49
72
|
Object.defineProperty(this, "setGroups", {
|
|
50
73
|
enumerable: true,
|
|
51
74
|
configurable: true,
|
|
52
75
|
writable: true,
|
|
53
|
-
value:
|
|
76
|
+
value: (groups) => (this.groups = groups)
|
|
54
77
|
});
|
|
55
78
|
Object.defineProperty(this, "setCustomGroupAssignments", {
|
|
56
79
|
enumerable: true,
|
|
57
80
|
configurable: true,
|
|
58
81
|
writable: true,
|
|
59
|
-
value:
|
|
82
|
+
value: (assignments) => (this.customGroupAssignments = assignments)
|
|
60
83
|
});
|
|
61
84
|
Object.defineProperty(this, "setOutputTypes", {
|
|
62
85
|
enumerable: true,
|
|
63
86
|
configurable: true,
|
|
64
87
|
writable: true,
|
|
65
|
-
value:
|
|
88
|
+
value: (outputTypes) => (this.outputTypes = outputTypes)
|
|
66
89
|
});
|
|
67
90
|
Object.defineProperty(this, "setOutputNames", {
|
|
68
91
|
enumerable: true,
|
|
69
92
|
configurable: true,
|
|
70
93
|
writable: true,
|
|
71
|
-
value:
|
|
94
|
+
value: (outputNames) => (this.outputNames = outputNames)
|
|
72
95
|
});
|
|
73
96
|
Object.defineProperty(this, "setOutputVisibilityFlags", {
|
|
74
97
|
enumerable: true,
|
|
75
98
|
configurable: true,
|
|
76
99
|
writable: true,
|
|
77
|
-
value:
|
|
100
|
+
value: (outputVisibilityFlags) => (this.outputVisibilityFlags = outputVisibilityFlags)
|
|
78
101
|
});
|
|
79
102
|
Object.defineProperty(this, "setSwitchingDevices", {
|
|
80
103
|
enumerable: true,
|
|
81
104
|
configurable: true,
|
|
82
105
|
writable: true,
|
|
83
|
-
value:
|
|
106
|
+
value: (switchingDevices) => (this.switchingDevices = switchingDevices)
|
|
84
107
|
});
|
|
85
108
|
Object.defineProperty(this, "setSwitchingDeviceNames", {
|
|
86
109
|
enumerable: true,
|
|
87
110
|
configurable: true,
|
|
88
111
|
writable: true,
|
|
89
|
-
value:
|
|
112
|
+
value: (switchingDeviceNames) => (this.switchingDeviceNames = switchingDeviceNames)
|
|
113
|
+
});
|
|
114
|
+
Object.defineProperty(this, "setGenericInputGroupAssignments", {
|
|
115
|
+
enumerable: true,
|
|
116
|
+
configurable: true,
|
|
117
|
+
writable: true,
|
|
118
|
+
value: (assignments) => (this.genericInputGroupAssignments = assignments)
|
|
119
|
+
});
|
|
120
|
+
Object.defineProperty(this, "setGenericInputTypes", {
|
|
121
|
+
enumerable: true,
|
|
122
|
+
configurable: true,
|
|
123
|
+
writable: true,
|
|
124
|
+
value: (types) => (this.genericInputTypes = types)
|
|
125
|
+
});
|
|
126
|
+
Object.defineProperty(this, "setGenericInputNames", {
|
|
127
|
+
enumerable: true,
|
|
128
|
+
configurable: true,
|
|
129
|
+
writable: true,
|
|
130
|
+
value: (names) => (this.genericInputNames = names)
|
|
131
|
+
});
|
|
132
|
+
Object.defineProperty(this, "setGenericInputVisibilityFlags", {
|
|
133
|
+
enumerable: true,
|
|
134
|
+
configurable: true,
|
|
135
|
+
writable: true,
|
|
136
|
+
value: (flags) => (this.genericInputVisibilityFlags = flags)
|
|
90
137
|
});
|
|
91
138
|
makeAutoObservable(this, {
|
|
92
139
|
setGroups: action,
|
|
@@ -95,13 +142,15 @@ var SwitchableOutputsStore = /** @class */ (function () {
|
|
|
95
142
|
setOutputVisibilityFlags: action,
|
|
96
143
|
setSwitchingDevices: action,
|
|
97
144
|
setSwitchingDeviceNames: action,
|
|
145
|
+
setGenericInputGroupAssignments: action,
|
|
146
|
+
setGenericInputTypes: action,
|
|
147
|
+
setGenericInputNames: action,
|
|
148
|
+
setGenericInputVisibilityFlags: action,
|
|
98
149
|
});
|
|
99
150
|
}
|
|
100
|
-
|
|
101
|
-
}());
|
|
102
|
-
export { SwitchableOutputsStore };
|
|
151
|
+
}
|
|
103
152
|
function initializeStore() {
|
|
104
|
-
|
|
153
|
+
const _store = store !== null && store !== void 0 ? store : new SwitchingPaneStore();
|
|
105
154
|
// For SSG and SSR always create a new store
|
|
106
155
|
if (typeof window === "undefined")
|
|
107
156
|
return _store;
|
|
@@ -110,7 +159,7 @@ function initializeStore() {
|
|
|
110
159
|
store = _store;
|
|
111
160
|
return _store;
|
|
112
161
|
}
|
|
113
|
-
export function
|
|
114
|
-
return useMemo(
|
|
162
|
+
export function useSwitchingPaneStore() {
|
|
163
|
+
return useMemo(() => initializeStore(), []);
|
|
115
164
|
}
|
|
116
|
-
//# sourceMappingURL=
|
|
165
|
+
//# sourceMappingURL=SwitchingPane.store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwitchingPane.store.js","sourceRoot":"/","sources":["src/Modules/SwitchingPane/SwitchingPane.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAI/B,IAAI,KAAyB,CAAA;AA0B7B,MAAM,OAAO,kBAAkB;IAa7B;QAZA;;;;mBAAiD,EAAE;WAAA;QACnD;;;;mBAAmC,EAAE;WAAA;QACrC;;;;mBAAsC,EAAE;WAAA;QACxC;;;;mBAAwB,EAAE;WAAA;QAC1B;;;;mBAAmC,EAAE;WAAA;QACrC;;;;mBAA6B,EAAE;WAAA;QAC/B;;;;mBAAiC,EAAE;WAAA;QACnC;;;;mBAAyC,EAAE;WAAA;QAC3C;;;;mBAAwC,EAAE;WAAA;QAC1C;;;;mBAA8B,EAAE;WAAA;QAChC;;;;mBAAyC,EAAE;WAAA;QAiB3C;;;;mBAAY,CAAC,MAA8C,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;WAAA;QACtF;;;;mBAA4B,CAAC,WAAqB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,GAAG,WAAW,CAAC;WAAA;QAClG;;;;mBAAiB,CAAC,WAAmC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;WAAA;QAC1F;;;;mBAAiB,CAAC,WAAqB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;WAAA;QAC5E;;;;mBAA2B,CAAC,qBAAgC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;WAAA;QACrH;;;;mBAAsB,CAAC,gBAA0B,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;WAAA;QAChG;;;;mBAA0B,CAAC,oBAA8B,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;WAAA;QAChH;;;;mBAAkC,CAAC,WAAqB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,4BAA4B,GAAG,WAAW,CAAC;WAAA;QAC9G;;;;mBAAuB,CAAC,KAAyB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;WAAA;QACtF;;;;mBAAuB,CAAC,KAAe,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;WAAA;QAC5E;;;;mBAAiC,CAAC,KAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;WAAA;QAxB/F,kBAAkB,CAAC,IAAI,EAAE;YACvB,SAAS,EAAE,MAAM;YACjB,yBAAyB,EAAE,MAAM;YACjC,cAAc,EAAE,MAAM;YACtB,wBAAwB,EAAE,MAAM;YAChC,mBAAmB,EAAE,MAAM;YAC3B,uBAAuB,EAAE,MAAM;YAC/B,+BAA+B,EAAE,MAAM;YACvC,oBAAoB,EAAE,MAAM;YAC5B,oBAAoB,EAAE,MAAM;YAC5B,8BAA8B,EAAE,MAAM;SACvC,CAAC,CAAA;IACJ,CAAC;CAaF;AAED,SAAS,eAAe;IACtB,MAAM,MAAM,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,kBAAkB,EAAE,CAAA;IAChD,4CAA4C;IAC5C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,MAAM,CAAA;IAChD,sCAAsC;IACtC,IAAI,CAAC,KAAK;QAAE,KAAK,GAAG,MAAM,CAAA;IAE1B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,EAAE,EAAE,CAAC,CAAA;AAC7C,CAAC","sourcesContent":["import { action, makeAutoObservable } from \"mobx\"\nimport { useMemo } from \"react\"\nimport { SwitchingPaneItem } from \"./SwitchableOutput.provider\"\nimport { GenericInputType, SwitchableOutputType } from \"../../utils/constants\"\n\nlet store: SwitchingPaneStore\n\nexport interface SwitchingPaneState {\n groups: { [key: string]: SwitchingPaneItem[] }\n // custom group assignments for available switchable outputs sorted by their topic path\n customGroupAssignments: string[]\n // types of switchable outputs sorted by their topic path\n outputTypes: SwitchableOutputType[]\n // custom names of switchable outputs sorted by their topic path\n outputNames: string[]\n // visibility status of switchable outputs sorted by their topic path\n outputVisibilityFlags: (0 | 1)[]\n // switching devices\n switchingDevices: string[]\n // switching devices custom names\n switchingDeviceNames: string[]\n // custom group assignments for available generic inputs sorted by their topic path\n genericInputGroupAssignments: string[]\n // types of generic inputs sorted by their topic path\n genericInputTypes: GenericInputType[]\n // custom names of generic inputs sorted by their topic path\n genericInputNames: string[]\n // visibility status of generic inputs sorted by their topic path\n genericInputVisibilityFlags: (0 | 1)[]\n}\n\nexport class SwitchingPaneStore {\n groups: { [key: string]: SwitchingPaneItem[] } = {}\n customGroupAssignments: string[] = []\n outputTypes: SwitchableOutputType[] = []\n outputNames: string[] = []\n outputVisibilityFlags: (0 | 1)[] = []\n switchingDevices: string[] = []\n switchingDeviceNames: string[] = []\n genericInputGroupAssignments: string[] = []\n genericInputTypes: GenericInputType[] = []\n genericInputNames: string[] = []\n genericInputVisibilityFlags: (0 | 1)[] = []\n\n constructor() {\n makeAutoObservable(this, {\n setGroups: action,\n setCustomGroupAssignments: action,\n setOutputTypes: action,\n setOutputVisibilityFlags: action,\n setSwitchingDevices: action,\n setSwitchingDeviceNames: action,\n setGenericInputGroupAssignments: action,\n setGenericInputTypes: action,\n setGenericInputNames: action,\n setGenericInputVisibilityFlags: action,\n })\n }\n\n setGroups = (groups: { [key: string]: SwitchingPaneItem[] }) => (this.groups = groups)\n setCustomGroupAssignments = (assignments: string[]) => (this.customGroupAssignments = assignments)\n setOutputTypes = (outputTypes: SwitchableOutputType[]) => (this.outputTypes = outputTypes)\n setOutputNames = (outputNames: string[]) => (this.outputNames = outputNames)\n setOutputVisibilityFlags = (outputVisibilityFlags: (0 | 1)[]) => (this.outputVisibilityFlags = outputVisibilityFlags)\n setSwitchingDevices = (switchingDevices: string[]) => (this.switchingDevices = switchingDevices)\n setSwitchingDeviceNames = (switchingDeviceNames: string[]) => (this.switchingDeviceNames = switchingDeviceNames)\n setGenericInputGroupAssignments = (assignments: string[]) => (this.genericInputGroupAssignments = assignments)\n setGenericInputTypes = (types: GenericInputType[]) => (this.genericInputTypes = types)\n setGenericInputNames = (names: string[]) => (this.genericInputNames = names)\n setGenericInputVisibilityFlags = (flags: (0 | 1)[]) => (this.genericInputVisibilityFlags = flags)\n}\n\nfunction initializeStore() {\n const _store = store ?? new SwitchingPaneStore()\n // For SSG and SSR always create a new store\n if (typeof window === \"undefined\") return _store\n // Create the store once in the client\n if (!store) store = _store\n\n return _store\n}\n\nexport function useSwitchingPaneStore() {\n return useMemo(() => initializeStore(), [])\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "./SwitchingDevice.provider";
|
|
2
|
+
export * from "./SwitchingDevices.store";
|
|
3
|
+
export * from "./SwitchableOutput.provider";
|
|
4
|
+
export * from "./SwitchingPane.provider";
|
|
5
|
+
export * from "./SwitchingPane.store";
|
|
6
|
+
export * from "./GenericInput.provider";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["src/Modules/SwitchingPane/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AACxC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "./SwitchingDevice.provider";
|
|
2
|
+
export * from "./SwitchingDevices.store";
|
|
3
|
+
export * from "./SwitchableOutput.provider";
|
|
4
|
+
export * from "./SwitchingPane.provider";
|
|
5
|
+
export * from "./SwitchingPane.store";
|
|
6
|
+
export * from "./GenericInput.provider";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["src/Modules/SwitchingPane/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AACxC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA","sourcesContent":["export * from \"./SwitchingDevice.provider\"\nexport * from \"./SwitchingDevices.store\"\nexport * from \"./SwitchableOutput.provider\"\nexport * from \"./SwitchingPane.provider\"\nexport * from \"./SwitchingPane.store\"\nexport * from \"./GenericInput.provider\"\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { useMqtt, useTopicsState } from "../Mqtt";
|
|
2
2
|
import { useMemo } from "react";
|
|
3
3
|
export function useSystemState() {
|
|
4
|
-
|
|
5
|
-
systemState:
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
const getTopics = (portalId) => ({
|
|
5
|
+
systemState: `N/${portalId}/system/0/SystemState/State`,
|
|
6
|
+
});
|
|
7
|
+
const { portalId } = useMqtt();
|
|
8
|
+
const topics = useMemo(() => getTopics(portalId), [portalId]);
|
|
9
9
|
return useTopicsState(topics);
|
|
10
10
|
}
|
|
11
11
|
//# sourceMappingURL=SystemState.provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemState.provider.js","sourceRoot":"/","sources":["src/Modules/SystemState/SystemState.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAU/B,MAAM,UAAU,cAAc;IAC5B,
|
|
1
|
+
{"version":3,"file":"SystemState.provider.js","sourceRoot":"/","sources":["src/Modules/SystemState/SystemState.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAU/B,MAAM,UAAU,cAAc;IAC5B,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAE,EAAE,CAAC,CAAC;QACzC,WAAW,EAAE,KAAK,QAAQ,6BAA6B;KACxD,CAAC,CAAA;IAEF,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAE7D,OAAO,cAAc,CAAmB,MAAM,CAAC,CAAA;AACjD,CAAC","sourcesContent":["import { PortalId, Topics, useMqtt, useTopicsState } from \"../Mqtt\"\nimport { useMemo } from \"react\"\n\nexport interface SystemStateState {\n systemState: number\n}\n\nexport interface SystemStateTopics extends Topics {\n systemState?: string\n}\n\nexport function useSystemState(): SystemStateState {\n const getTopics = (portalId: PortalId) => ({\n systemState: `N/${portalId}/system/0/SystemState/State`,\n })\n\n const { portalId } = useMqtt()\n const topics = useMemo(() => getTopics(portalId), [portalId])\n\n return useTopicsState<SystemStateState>(topics)\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tank.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Tanks/Tank.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAA2B,MAAM,SAAS,CAAA;AAGnE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEtD,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAW,SAAQ,MAAM;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,kBAAkB,GAAI,UAAU,QAAQ,EAAE,QAAQ,cAAc;;;;;;;;CAQ3E,CAAA;AAEF,wBAAgB,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"Tank.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Tanks/Tank.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAA2B,MAAM,SAAS,CAAA;AAGnE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEtD,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAW,SAAQ,MAAM;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,kBAAkB,GAAI,UAAU,QAAQ,EAAE,QAAQ,cAAc;;;;;;;;CAQ3E,CAAA;AAEF,wBAAgB,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAKzD"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { useMqtt, useTopicsState } from "../Mqtt";
|
|
2
2
|
import { useMemo } from "react";
|
|
3
|
-
export
|
|
4
|
-
capacity:
|
|
5
|
-
level:
|
|
6
|
-
remaining:
|
|
7
|
-
fluidType:
|
|
8
|
-
unit:
|
|
9
|
-
customName:
|
|
10
|
-
instance:
|
|
11
|
-
});
|
|
3
|
+
export const getTankStateTopics = (portalId, tankId) => ({
|
|
4
|
+
capacity: `N/${portalId}/tank/${tankId}/Capacity`,
|
|
5
|
+
level: `N/${portalId}/tank/${tankId}/Level`,
|
|
6
|
+
remaining: `N/${portalId}/tank/${tankId}/Remaining`,
|
|
7
|
+
fluidType: `N/${portalId}/tank/${tankId}/FluidType`,
|
|
8
|
+
unit: `N/${portalId}/settings/0/Settings/System/VolumeUnit`,
|
|
9
|
+
customName: `N/${portalId}/tank/${tankId}/CustomName`,
|
|
10
|
+
instance: `N/${portalId}/tank/${tankId}/DeviceInstance`,
|
|
11
|
+
});
|
|
12
12
|
export function useTank(tankId) {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
const { portalId } = useMqtt();
|
|
14
|
+
const topics = useMemo(() => getTankStateTopics(portalId, tankId), [portalId, tankId]);
|
|
15
15
|
return useTopicsState(topics);
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=Tank.provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tank.provider.js","sourceRoot":"/","sources":["src/Modules/Tanks/Tank.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAuB/B,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"Tank.provider.js","sourceRoot":"/","sources":["src/Modules/Tanks/Tank.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAuB/B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAkB,EAAE,MAAsB,EAAE,EAAE,CAAC,CAAC;IACjF,QAAQ,EAAE,KAAK,QAAQ,SAAS,MAAM,WAAW;IACjD,KAAK,EAAE,KAAK,QAAQ,SAAS,MAAM,QAAQ;IAC3C,SAAS,EAAE,KAAK,QAAQ,SAAS,MAAM,YAAY;IACnD,SAAS,EAAE,KAAK,QAAQ,SAAS,MAAM,YAAY;IACnD,IAAI,EAAE,KAAK,QAAQ,wCAAwC;IAC3D,UAAU,EAAE,KAAK,QAAQ,SAAS,MAAM,aAAa;IACrD,QAAQ,EAAE,KAAK,QAAQ,SAAS,MAAM,iBAAiB;CACxD,CAAC,CAAA;AAEF,MAAM,UAAU,OAAO,CAAC,MAAsB;IAC5C,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;IAEtF,OAAO,cAAc,CAAY,MAAM,CAAC,CAAA;AAC1C,CAAC","sourcesContent":["import { PortalId, Topics, useMqtt, useTopicsState } from \"../Mqtt\"\nimport { useMemo } from \"react\"\n\nexport type TankInstanceId = number | null | undefined\n\nexport interface TankState {\n capacity: number\n level: number\n remaining: number\n fluidType: number\n unit: string\n customName: string\n instance: number\n}\n\nexport interface TankTopics extends Topics {\n capacity?: string\n level?: string\n remaining?: string\n fluidType?: string\n unit?: string\n customName?: string\n}\n\nexport const getTankStateTopics = (portalId: PortalId, tankId: TankInstanceId) => ({\n capacity: `N/${portalId}/tank/${tankId}/Capacity`,\n level: `N/${portalId}/tank/${tankId}/Level`,\n remaining: `N/${portalId}/tank/${tankId}/Remaining`,\n fluidType: `N/${portalId}/tank/${tankId}/FluidType`,\n unit: `N/${portalId}/settings/0/Settings/System/VolumeUnit`,\n customName: `N/${portalId}/tank/${tankId}/CustomName`,\n instance: `N/${portalId}/tank/${tankId}/DeviceInstance`,\n})\n\nexport function useTank(tankId: TankInstanceId): TankState {\n const { portalId } = useMqtt()\n const topics = useMemo(() => getTankStateTopics(portalId, tankId), [portalId, tankId])\n\n return useTopicsState<TankState>(topics)\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tanks.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Tanks/Tanks.provider.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"Tanks.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Tanks/Tanks.provider.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,QAAQ,0CAsCpB,CAAA"}
|
|
@@ -4,34 +4,35 @@ import { useMqtt } from "../Mqtt";
|
|
|
4
4
|
import { getTankStateTopics } from "./Tank.provider";
|
|
5
5
|
import { useTanksStore } from "./Tanks.store";
|
|
6
6
|
import { useMemo, useEffect } from "react";
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
tanks:
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
useEffect(
|
|
7
|
+
export const useTanks = () => {
|
|
8
|
+
const tanksStore = useTanksStore();
|
|
9
|
+
const getTopics = (portalId) => ({
|
|
10
|
+
tanks: `N/${portalId}/tank/+/DeviceInstance`,
|
|
11
|
+
});
|
|
12
|
+
const mqtt = useMqtt();
|
|
13
|
+
const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId]);
|
|
14
|
+
const messages = mqtt.messagesByWildcard(topics.tanks);
|
|
15
|
+
useEffect(() => {
|
|
16
16
|
if (!messages || Object.entries(messages).length === 0) {
|
|
17
17
|
// Logger.log("Waiting for tanks...")
|
|
18
18
|
}
|
|
19
19
|
else {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
const deviceInstances = Object.values(messages);
|
|
21
|
+
const dispose = autorun(() => {
|
|
22
|
+
const oldTanks = tanksStore.tanks;
|
|
23
|
+
const newTanks = deviceInstances.map((tankInstanceId) => mqtt.messagesByTopics(getTankStateTopics(mqtt.portalId, tankInstanceId)));
|
|
24
24
|
// TODO: check unordered structural identify of old and new state
|
|
25
25
|
// TODO: to avoid unnecessary re-rendering: O(n^2) baby
|
|
26
|
-
if (!oldTanks ||
|
|
27
|
-
|
|
26
|
+
if (!oldTanks ||
|
|
27
|
+
oldTanks.length !== newTanks.length ||
|
|
28
|
+
!oldTanks.every((id) => deviceInstances.includes(id.instance))) {
|
|
29
|
+
Logger.log(`New tanks instances: ${JSON.stringify(deviceInstances)}`);
|
|
28
30
|
tanksStore.setTanks(newTanks);
|
|
29
31
|
}
|
|
30
32
|
});
|
|
31
|
-
return
|
|
33
|
+
return () => dispose();
|
|
32
34
|
}
|
|
33
|
-
}, [messages]);
|
|
34
|
-
var tanks = tanksStore.tanks;
|
|
35
|
+
}, [messages, mqtt, tanksStore]);
|
|
35
36
|
return tanksStore;
|
|
36
37
|
};
|
|
37
38
|
//# sourceMappingURL=Tanks.provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tanks.provider.js","sourceRoot":"/","sources":["src/Modules/Tanks/Tanks.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAA6B,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE1C,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"Tanks.provider.js","sourceRoot":"/","sources":["src/Modules/Tanks/Tanks.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAA6B,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE1C,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAElC,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAE,EAAE,CAAC,CAAC;QACzC,KAAK,EAAE,KAAK,QAAQ,wBAAwB;KAC7C,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAEtD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,qCAAqC;QACvC,CAAC;aAAM,CAAC;YACN,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAqB,CAAA;YACnE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;gBAC3B,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAA;gBACjC,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CACtD,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAC/C,CAAA;gBAC3B,iEAAiE;gBACjE,uDAAuD;gBACvD,IACE,CAAC,QAAQ;oBACT,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;oBACnC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAC9D,CAAC;oBACD,MAAM,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;oBACrE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;gBAC/B,CAAC;YACH,CAAC,CAAC,CAAA;YACF,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;QACxB,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;IAEhC,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA","sourcesContent":["import { autorun } from \"mobx\"\nimport Logger from \"../../utils/logger\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { getTankStateTopics, TankInstanceId, TankState } from \"./Tank.provider\"\nimport { useTanksStore } from \"./Tanks.store\"\nimport { useMemo, useEffect } from \"react\"\n\nexport const useTanks = () => {\n const tanksStore = useTanksStore()\n\n const getTopics = (portalId: PortalId) => ({\n tanks: `N/${portalId}/tank/+/DeviceInstance`,\n })\n\n const mqtt = useMqtt()\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const messages = mqtt.messagesByWildcard(topics.tanks)\n\n useEffect(() => {\n if (!messages || Object.entries(messages).length === 0) {\n // Logger.log(\"Waiting for tanks...\")\n } else {\n const deviceInstances = Object.values(messages) as TankInstanceId[]\n const dispose = autorun(() => {\n const oldTanks = tanksStore.tanks\n const newTanks = deviceInstances.map((tankInstanceId) =>\n mqtt.messagesByTopics(getTankStateTopics(mqtt.portalId, tankInstanceId))\n ) as unknown as TankState[]\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2) baby\n if (\n !oldTanks ||\n oldTanks.length !== newTanks.length ||\n !oldTanks.every((id) => deviceInstances.includes(id.instance))\n ) {\n Logger.log(`New tanks instances: ${JSON.stringify(deviceInstances)}`)\n tanksStore.setTanks(newTanks)\n }\n })\n return () => dispose()\n }\n }, [messages, mqtt, tanksStore])\n\n return tanksStore\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tanks.store.d.ts","sourceRoot":"/","sources":["src/Modules/Tanks/Tanks.store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAI3C,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,EAAE,CAAA;CACnB;AAED,qBAAa,UAAU;IACrB,KAAK,EAAE,SAAS,EAAE,CAAK;;IAMvB,QAAQ,GAAI,OAAO,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"Tanks.store.d.ts","sourceRoot":"/","sources":["src/Modules/Tanks/Tanks.store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAI3C,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,EAAE,CAAA;CACnB;AAED,qBAAa,UAAU;IACrB,KAAK,EAAE,SAAS,EAAE,CAAK;;IAMvB,QAAQ,GAAI,OAAO,SAAS,EAAE,iBAAyB;CACxD;AAYD,wBAAgB,aAAa,eAE5B"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { action, makeAutoObservable } from "mobx";
|
|
2
2
|
import { useMemo } from "react";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var _this = this;
|
|
3
|
+
let store;
|
|
4
|
+
export class TanksStore {
|
|
5
|
+
constructor() {
|
|
7
6
|
Object.defineProperty(this, "tanks", {
|
|
8
7
|
enumerable: true,
|
|
9
8
|
configurable: true,
|
|
@@ -14,15 +13,13 @@ var TanksStore = /** @class */ (function () {
|
|
|
14
13
|
enumerable: true,
|
|
15
14
|
configurable: true,
|
|
16
15
|
writable: true,
|
|
17
|
-
value:
|
|
16
|
+
value: (tanks) => (this.tanks = tanks)
|
|
18
17
|
});
|
|
19
18
|
makeAutoObservable(this, { setTanks: action });
|
|
20
19
|
}
|
|
21
|
-
|
|
22
|
-
}());
|
|
23
|
-
export { TanksStore };
|
|
20
|
+
}
|
|
24
21
|
function initializeStore() {
|
|
25
|
-
|
|
22
|
+
const _store = store !== null && store !== void 0 ? store : new TanksStore();
|
|
26
23
|
// For SSG and SSR always create a new store
|
|
27
24
|
if (typeof window === "undefined")
|
|
28
25
|
return _store;
|
|
@@ -32,6 +29,6 @@ function initializeStore() {
|
|
|
32
29
|
return _store;
|
|
33
30
|
}
|
|
34
31
|
export function useTanksStore() {
|
|
35
|
-
return useMemo(
|
|
32
|
+
return useMemo(() => initializeStore(), []);
|
|
36
33
|
}
|
|
37
34
|
//# sourceMappingURL=Tanks.store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tanks.store.js","sourceRoot":"/","sources":["src/Modules/Tanks/Tanks.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"Tanks.store.js","sourceRoot":"/","sources":["src/Modules/Tanks/Tanks.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAG/B,IAAI,KAAiB,CAAA;AAMrB,MAAM,OAAO,UAAU;IAGrB;QAFA;;;;mBAAqB,EAAE;WAAA;QAMvB;;;;mBAAW,CAAC,KAAkB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;WAAA;QAHrD,kBAAkB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAChD,CAAC;CAGF;AAED,SAAS,eAAe;IACtB,MAAM,MAAM,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,UAAU,EAAE,CAAA;IACxC,4CAA4C;IAC5C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,MAAM,CAAA;IAChD,sCAAsC;IACtC,IAAI,CAAC,KAAK;QAAE,KAAK,GAAG,MAAM,CAAA;IAE1B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,EAAE,EAAE,CAAC,CAAA;AAC7C,CAAC","sourcesContent":["import { action, makeAutoObservable } from \"mobx\"\nimport { useMemo } from \"react\"\nimport { TankState } from \"./Tank.provider\"\n\nlet store: TanksStore\n\nexport interface TanksState {\n tanks: TankState[]\n}\n\nexport class TanksStore {\n tanks: TankState[] = []\n\n constructor() {\n makeAutoObservable(this, { setTanks: action })\n }\n\n setTanks = (tanks: TankState[]) => (this.tanks = tanks)\n}\n\nfunction initializeStore() {\n const _store = store ?? new TanksStore()\n // For SSG and SSR always create a new store\n if (typeof window === \"undefined\") return _store\n // Create the store once in the client\n if (!store) store = _store\n\n return _store\n}\n\nexport function useTanksStore() {\n return useMemo(() => initializeStore(), [])\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Temperature.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperature.provider.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Temperature.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperature.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAA2B,MAAM,SAAS,CAAA;AAGnE,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAA;AAE1C,MAAM,WAAW,iBAAkB,SAAQ,MAAM;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,yBAAyB,GAAI,UAAU,QAAQ,EAAE,eAAe,qBAAqB;;;;;;;CAOhG,CAAA;AAEF,wBAAgB,cAAc,CAAC,aAAa,EAAE,qBAAqB,oBAWlE;AAED,wBAAgB,WAAW,CAAC,aAAa,EAAE,qBAAqB,oBAW/D;AAED,wBAAgB,WAAW,CAAC,aAAa,EAAE,qBAAqB,oBAW/D"}
|
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
import { useMqtt, useTopicsState } from "../Mqtt";
|
|
2
2
|
import { useMemo } from "react";
|
|
3
|
-
export
|
|
4
|
-
customName:
|
|
5
|
-
temperature:
|
|
6
|
-
temperatureType:
|
|
7
|
-
humidity:
|
|
8
|
-
pressure:
|
|
9
|
-
instance:
|
|
10
|
-
});
|
|
3
|
+
export const getTemperatureStateTopics = (portalId, temperatureId) => ({
|
|
4
|
+
customName: `N/${portalId}/temperature/${temperatureId}/CustomName`,
|
|
5
|
+
temperature: `N/${portalId}/temperature/${temperatureId}/Temperature`,
|
|
6
|
+
temperatureType: `N/${portalId}/temperature/${temperatureId}/TemperatureType`,
|
|
7
|
+
humidity: `N/${portalId}/temperature/${temperatureId}/Humidity`,
|
|
8
|
+
pressure: `N/${portalId}/temperature/${temperatureId}/Pressure`,
|
|
9
|
+
instance: `N/${portalId}/temperature/${temperatureId}/DeviceInstance`,
|
|
10
|
+
});
|
|
11
11
|
export function useTemperature(temperatureId) {
|
|
12
|
-
|
|
13
|
-
customName:
|
|
14
|
-
temperature:
|
|
15
|
-
temperatureType:
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
const getTopics = (portalId, temperatureInstanceId) => ({
|
|
13
|
+
customName: `N/${portalId}/temperature/${temperatureInstanceId}/CustomName`,
|
|
14
|
+
temperature: `N/${portalId}/temperature/${temperatureInstanceId}/Temperature`,
|
|
15
|
+
temperatureType: `N/${portalId}/temperature/${temperatureInstanceId}/TemperatureType`,
|
|
16
|
+
});
|
|
17
|
+
const { portalId } = useMqtt();
|
|
18
|
+
const topics = useMemo(() => getTopics(portalId, temperatureId), [portalId, temperatureId]);
|
|
19
19
|
return useTopicsState(topics);
|
|
20
20
|
}
|
|
21
21
|
export function useHumidity(temperatureId) {
|
|
22
|
-
|
|
23
|
-
customName:
|
|
24
|
-
humidity:
|
|
25
|
-
temperatureType:
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
const getTopics = (portalId, temperatureInstanceId) => ({
|
|
23
|
+
customName: `N/${portalId}/temperature/${temperatureInstanceId}/CustomName`,
|
|
24
|
+
humidity: `N/${portalId}/temperature/${temperatureInstanceId}/Humidity`,
|
|
25
|
+
temperatureType: `N/${portalId}/temperature/${temperatureInstanceId}/TemperatureType`,
|
|
26
|
+
});
|
|
27
|
+
const { portalId } = useMqtt();
|
|
28
|
+
const topics = useMemo(() => getTopics(portalId, temperatureId), [portalId, temperatureId]);
|
|
29
29
|
return useTopicsState(topics);
|
|
30
30
|
}
|
|
31
31
|
export function usePressure(temperatureId) {
|
|
32
|
-
|
|
33
|
-
customName:
|
|
34
|
-
pressure:
|
|
35
|
-
temperatureType:
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
const getTopics = (portalId, temperatureInstanceId) => ({
|
|
33
|
+
customName: `N/${portalId}/temperature/${temperatureInstanceId}/CustomName`,
|
|
34
|
+
pressure: `N/${portalId}/temperature/${temperatureInstanceId}/Pressure`,
|
|
35
|
+
temperatureType: `N/${portalId}/temperature/${temperatureInstanceId}/TemperatureType`,
|
|
36
|
+
});
|
|
37
|
+
const { portalId } = useMqtt();
|
|
38
|
+
const topics = useMemo(() => getTopics(portalId, temperatureId), [portalId, temperatureId]);
|
|
39
39
|
return useTopicsState(topics);
|
|
40
40
|
}
|
|
41
41
|
//# sourceMappingURL=Temperature.provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Temperature.provider.js","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperature.provider.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Temperature.provider.js","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperature.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAqB/B,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,QAAkB,EAAE,aAAoC,EAAE,EAAE,CAAC,CAAC;IACtG,UAAU,EAAE,KAAK,QAAQ,gBAAgB,aAAa,aAAa;IACnE,WAAW,EAAE,KAAK,QAAQ,gBAAgB,aAAa,cAAc;IACrE,eAAe,EAAE,KAAK,QAAQ,gBAAgB,aAAa,kBAAkB;IAC7E,QAAQ,EAAE,KAAK,QAAQ,gBAAgB,aAAa,WAAW;IAC/D,QAAQ,EAAE,KAAK,QAAQ,gBAAgB,aAAa,WAAW;IAC/D,QAAQ,EAAE,KAAK,QAAQ,gBAAgB,aAAa,iBAAiB;CACtE,CAAC,CAAA;AAEF,MAAM,UAAU,cAAc,CAAC,aAAoC;IACjE,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAE,qBAA4C,EAAE,EAAE,CAAC,CAAC;QACvF,UAAU,EAAE,KAAK,QAAQ,gBAAgB,qBAAqB,aAAa;QAC3E,WAAW,EAAE,KAAK,QAAQ,gBAAgB,qBAAqB,cAAc;QAC7E,eAAe,EAAE,KAAK,QAAQ,gBAAgB,qBAAqB,kBAAkB;KACtF,CAAC,CAAA;IAEF,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAA;IAE3F,OAAO,cAAc,CAAmB,MAAM,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,aAAoC;IAC9D,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAE,qBAA4C,EAAE,EAAE,CAAC,CAAC;QACvF,UAAU,EAAE,KAAK,QAAQ,gBAAgB,qBAAqB,aAAa;QAC3E,QAAQ,EAAE,KAAK,QAAQ,gBAAgB,qBAAqB,WAAW;QACvE,eAAe,EAAE,KAAK,QAAQ,gBAAgB,qBAAqB,kBAAkB;KACtF,CAAC,CAAA;IAEF,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAA;IAE3F,OAAO,cAAc,CAAmB,MAAM,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,aAAoC;IAC9D,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAE,qBAA4C,EAAE,EAAE,CAAC,CAAC;QACvF,UAAU,EAAE,KAAK,QAAQ,gBAAgB,qBAAqB,aAAa;QAC3E,QAAQ,EAAE,KAAK,QAAQ,gBAAgB,qBAAqB,WAAW;QACvE,eAAe,EAAE,KAAK,QAAQ,gBAAgB,qBAAqB,kBAAkB;KACtF,CAAC,CAAA;IAEF,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAA;IAE3F,OAAO,cAAc,CAAmB,MAAM,CAAC,CAAA;AACjD,CAAC","sourcesContent":["import { PortalId, Topics, useMqtt, useTopicsState } from \"../Mqtt\"\nimport { useMemo } from \"react\"\n\nexport type TemperatureInstanceId = number\n\nexport interface TemperatureTopics extends Topics {\n customName?: string\n temperature?: string\n temperatureType?: string\n humidity?: string\n pressure?: string\n}\n\nexport interface TemperatureState {\n customName: string\n temperature?: number\n temperatureType?: number\n humidity?: number | undefined\n pressure?: number | undefined\n instance: number\n}\n\nexport const getTemperatureStateTopics = (portalId: PortalId, temperatureId: TemperatureInstanceId) => ({\n customName: `N/${portalId}/temperature/${temperatureId}/CustomName`,\n temperature: `N/${portalId}/temperature/${temperatureId}/Temperature`,\n temperatureType: `N/${portalId}/temperature/${temperatureId}/TemperatureType`,\n humidity: `N/${portalId}/temperature/${temperatureId}/Humidity`,\n pressure: `N/${portalId}/temperature/${temperatureId}/Pressure`,\n instance: `N/${portalId}/temperature/${temperatureId}/DeviceInstance`,\n})\n\nexport function useTemperature(temperatureId: TemperatureInstanceId) {\n const getTopics = (portalId: PortalId, temperatureInstanceId: TemperatureInstanceId) => ({\n customName: `N/${portalId}/temperature/${temperatureInstanceId}/CustomName`,\n temperature: `N/${portalId}/temperature/${temperatureInstanceId}/Temperature`,\n temperatureType: `N/${portalId}/temperature/${temperatureInstanceId}/TemperatureType`,\n })\n\n const { portalId } = useMqtt()\n const topics = useMemo(() => getTopics(portalId, temperatureId), [portalId, temperatureId])\n\n return useTopicsState<TemperatureState>(topics)\n}\n\nexport function useHumidity(temperatureId: TemperatureInstanceId) {\n const getTopics = (portalId: PortalId, temperatureInstanceId: TemperatureInstanceId) => ({\n customName: `N/${portalId}/temperature/${temperatureInstanceId}/CustomName`,\n humidity: `N/${portalId}/temperature/${temperatureInstanceId}/Humidity`,\n temperatureType: `N/${portalId}/temperature/${temperatureInstanceId}/TemperatureType`,\n })\n\n const { portalId } = useMqtt()\n const topics = useMemo(() => getTopics(portalId, temperatureId), [portalId, temperatureId])\n\n return useTopicsState<TemperatureState>(topics)\n}\n\nexport function usePressure(temperatureId: TemperatureInstanceId) {\n const getTopics = (portalId: PortalId, temperatureInstanceId: TemperatureInstanceId) => ({\n customName: `N/${portalId}/temperature/${temperatureInstanceId}/CustomName`,\n pressure: `N/${portalId}/temperature/${temperatureInstanceId}/Pressure`,\n temperatureType: `N/${portalId}/temperature/${temperatureInstanceId}/TemperatureType`,\n })\n\n const { portalId } = useMqtt()\n const topics = useMemo(() => getTopics(portalId, temperatureId), [portalId, temperatureId])\n\n return useTopicsState<TemperatureState>(topics)\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Temperatures.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperatures.provider.ts"],"names":[],"mappings":"AAOA,wBAAgB,eAAe,
|
|
1
|
+
{"version":3,"file":"Temperatures.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperatures.provider.ts"],"names":[],"mappings":"AAOA,wBAAgB,eAAe,qDAsC9B"}
|
|
@@ -5,33 +5,34 @@ import Logger from "../../utils/logger";
|
|
|
5
5
|
import { getTemperatureStateTopics } from "./Temperature.provider";
|
|
6
6
|
import { autorun } from "mobx";
|
|
7
7
|
export function useTemperatures() {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
temperatureInstances:
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
useEffect(function () {
|
|
8
|
+
const temperaturesStore = useTemperaturesStore();
|
|
9
|
+
const mqtt = useMqtt();
|
|
10
|
+
const getTopics = (portalId) => ({
|
|
11
|
+
temperatureInstances: `N/${portalId}/temperature/+/DeviceInstance`,
|
|
12
|
+
});
|
|
13
|
+
const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId]);
|
|
14
|
+
const messages = mqtt.messagesByWildcard(topics.temperatureInstances);
|
|
15
|
+
useEffect(() => {
|
|
17
16
|
if (!messages || Object.entries(messages).length === 0) {
|
|
18
17
|
// Logger.log("Waiting for temperatures...");
|
|
19
18
|
}
|
|
20
19
|
else {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
const deviceInstances = Object.values(messages);
|
|
21
|
+
const dispose = autorun(() => {
|
|
22
|
+
const oldTemperatures = temperaturesStore.temperatures;
|
|
23
|
+
const newTemperatures = deviceInstances.map((temperatureInstanceId) => mqtt.messagesByTopics(getTemperatureStateTopics(mqtt.portalId, temperatureInstanceId)));
|
|
25
24
|
// TODO: check unordered structural identify of old and new state
|
|
26
25
|
// TODO: to avoid unnecessary re-rendering: O(n^2) baby
|
|
27
|
-
if (!oldTemperatures ||
|
|
28
|
-
|
|
26
|
+
if (!oldTemperatures ||
|
|
27
|
+
oldTemperatures.length !== newTemperatures.length ||
|
|
28
|
+
!oldTemperatures.every((id) => deviceInstances.includes(id.instance))) {
|
|
29
|
+
Logger.log(`New temperatures instances: ${JSON.stringify(deviceInstances)}`);
|
|
29
30
|
temperaturesStore.setTemperatures(newTemperatures);
|
|
30
31
|
}
|
|
31
32
|
});
|
|
32
|
-
return
|
|
33
|
+
return () => dispose();
|
|
33
34
|
}
|
|
34
|
-
}, [messages]);
|
|
35
|
+
}, [messages, mqtt, temperaturesStore]);
|
|
35
36
|
return temperaturesStore;
|
|
36
37
|
}
|
|
37
38
|
//# sourceMappingURL=Temperatures.provider.js.map
|