@victronenergy/mfd-modules 8.1.1 → 9.1.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/dist/src/Modules/Alternators/Alternators.provider.js +1 -1
- 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/App/App.store.d.ts.map +1 -1
- package/dist/src/Modules/Battery/Batteries.provider.js +1 -1
- 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/Chargers/Charger.provider.d.ts.map +1 -1
- package/dist/src/Modules/Chargers/Chargers.provider.js +1 -1
- 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/Generators/ConnectedGensets.provider.d.ts.map +1 -1
- package/dist/src/Modules/Generators/ConnectedGensets.provider.js +1 -1
- 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/InverterCharger/InputLimit.provider.d.ts +2 -1
- package/dist/src/Modules/InverterCharger/InputLimit.provider.d.ts.map +1 -1
- package/dist/src/Modules/InverterCharger/InputLimit.provider.js +5 -7
- package/dist/src/Modules/InverterCharger/InputLimit.provider.js.map +1 -1
- package/dist/src/Modules/InverterCharger/InputLimitSelector.provider.d.ts +2 -1
- package/dist/src/Modules/InverterCharger/InputLimitSelector.provider.d.ts.map +1 -1
- package/dist/src/Modules/InverterCharger/InputLimitSelector.provider.js +6 -8
- package/dist/src/Modules/InverterCharger/InputLimitSelector.provider.js.map +1 -1
- package/dist/src/Modules/InverterCharger/InverterCharger.provider.d.ts +4 -1
- package/dist/src/Modules/InverterCharger/InverterCharger.provider.d.ts.map +1 -1
- package/dist/src/Modules/InverterCharger/InverterCharger.provider.js +3 -4
- package/dist/src/Modules/InverterCharger/InverterCharger.provider.js.map +1 -1
- package/dist/src/Modules/Inverters/Inverters.provider.js +2 -2
- 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/Language/Language.provider.d.ts.map +1 -1
- package/dist/src/Modules/Mqtt/Mqtt.provider.d.ts.map +1 -1
- package/dist/src/Modules/Mqtt/Mqtt.store.d.ts.map +1 -1
- package/dist/src/Modules/ShorePowerInput/ShorePowerInput.store.d.ts.map +1 -1
- package/dist/src/Modules/SystemState/SystemState.provider.d.ts +2 -2
- package/dist/src/Modules/SystemState/SystemState.provider.d.ts.map +1 -1
- package/dist/src/Modules/SystemState/SystemState.provider.js +1 -1
- 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/Tanks.provider.js +1 -1
- 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/Temperatures/Temperature.provider.d.ts.map +1 -1
- package/dist/src/Modules/Temperatures/Temperatures.provider.js +1 -1
- 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/Theme/Theme.provider.d.ts +1 -0
- package/dist/src/Modules/Theme/Theme.provider.d.ts.map +1 -1
- package/dist/src/Modules/Theme/Theme.provider.js +2 -1
- package/dist/src/Modules/Theme/Theme.provider.js.map +1 -1
- package/dist/src/Modules/Theme/Theme.store.d.ts +3 -0
- package/dist/src/Modules/Theme/Theme.store.d.ts.map +1 -1
- package/dist/src/Modules/Theme/Theme.store.js +14 -2
- 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 +58 -49
- package/dist/src/Modules/Vebus/Vebus.provider.js.map +1 -1
- package/dist/src/Modules/Vebus/Vebus.store.d.ts +10 -9
- package/dist/src/Modules/Vebus/Vebus.store.d.ts.map +1 -1
- package/dist/src/Modules/Vebus/Vebus.store.js +20 -6
- 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/WindGenerators/WindGenerators.provider.js +1 -1
- package/dist/src/Modules/WindGenerators/WindGenerators.provider.js.map +1 -1
- package/dist/src/Modules/WindGenerators/WindGenerators.store.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -18,7 +18,7 @@ export var useAlternators = function () {
|
|
|
18
18
|
var alternators_1 = alternatorsStore.alternators;
|
|
19
19
|
var deviceInstances = Object.values(messages).sort();
|
|
20
20
|
// TODO: check unordered structural identify of old and new state
|
|
21
|
-
// TODO: to avoid unnecessary re-rendering: O(n^2 baby
|
|
21
|
+
// TODO: to avoid unnecessary re-rendering: O(n^2) baby
|
|
22
22
|
if (!alternators_1 || alternators_1.length != deviceInstances.length || !deviceInstances.every(function (id) { return alternators_1.includes(id); })) {
|
|
23
23
|
Logger.log("New alternators instances: ".concat(JSON.stringify(deviceInstances)));
|
|
24
24
|
alternatorsStore.setAlternators(deviceInstances);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alternators.provider.js","sourceRoot":"/","sources":["src/Modules/Alternators/Alternators.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAgB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAExE,MAAM,CAAC,IAAM,cAAc,GAAG;IAC5B,IAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAA;IAC9C,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,mBAAmB,EAAE,YAAK,QAAQ,iCAA8B;KACjE,CAAC,EAFwC,CAExC,CAAA;IAEF,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAEpE,SAAS,CAAC;QACR,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,4CAA4C;QAC9C,CAAC;aAAM,CAAC;YACN,IAAM,aAAW,GAAG,gBAAgB,CAAC,WAAW,CAAA;YAChD,IAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAoB,CAAA;YACxE,iEAAiE;YACjE,uDAAuD;YACvD,IAAI,CAAC,aAAW,IAAI,aAAW,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,aAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAxB,CAAwB,CAAC,EAAE,CAAC;gBAC7H,MAAM,CAAC,GAAG,CAAC,qCAA8B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAE,CAAC,CAAC;gBAC5E,gBAAgB,CAAC,cAAc,CAAC,eAAe,CAAC,CAAA;YAClD,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,gBAAgB,CAAA;AACzB,CAAC,CAAA","sourcesContent":["import Logger from \"../../utils/logger\"\nimport { useEffect, useMemo } from \"react\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { AlternatorId, useAlternatorsStore } from \"./Alternators.store\";\n\nexport const useAlternators = () => {\n const alternatorsStore = useAlternatorsStore()\n const mqtt = useMqtt()\n\n const getTopics = (portalId: PortalId) => ({\n alternatorInstances: `N/${portalId}/alternator/+/DeviceInstance`,\n })\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const messages = mqtt.messagesByWildcard(topics.alternatorInstances)\n\n useEffect(() => {\n if (!messages || Object.entries(messages).length === 0) {\n // Logger.log(\"Waiting for alternators...\");\n } else {\n const alternators = alternatorsStore.alternators\n const deviceInstances = Object.values(messages).sort() as AlternatorId[]\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2 baby
|
|
1
|
+
{"version":3,"file":"Alternators.provider.js","sourceRoot":"/","sources":["src/Modules/Alternators/Alternators.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAgB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAExE,MAAM,CAAC,IAAM,cAAc,GAAG;IAC5B,IAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAA;IAC9C,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,mBAAmB,EAAE,YAAK,QAAQ,iCAA8B;KACjE,CAAC,EAFwC,CAExC,CAAA;IAEF,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAEpE,SAAS,CAAC;QACR,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,4CAA4C;QAC9C,CAAC;aAAM,CAAC;YACN,IAAM,aAAW,GAAG,gBAAgB,CAAC,WAAW,CAAA;YAChD,IAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAoB,CAAA;YACxE,iEAAiE;YACjE,uDAAuD;YACvD,IAAI,CAAC,aAAW,IAAI,aAAW,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,aAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAxB,CAAwB,CAAC,EAAE,CAAC;gBAC7H,MAAM,CAAC,GAAG,CAAC,qCAA8B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAE,CAAC,CAAC;gBAC5E,gBAAgB,CAAC,cAAc,CAAC,eAAe,CAAC,CAAA;YAClD,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,gBAAgB,CAAA;AACzB,CAAC,CAAA","sourcesContent":["import Logger from \"../../utils/logger\"\nimport { useEffect, useMemo } from \"react\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { AlternatorId, useAlternatorsStore } from \"./Alternators.store\";\n\nexport const useAlternators = () => {\n const alternatorsStore = useAlternatorsStore()\n const mqtt = useMqtt()\n\n const getTopics = (portalId: PortalId) => ({\n alternatorInstances: `N/${portalId}/alternator/+/DeviceInstance`,\n })\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const messages = mqtt.messagesByWildcard(topics.alternatorInstances)\n\n useEffect(() => {\n if (!messages || Object.entries(messages).length === 0) {\n // Logger.log(\"Waiting for alternators...\");\n } else {\n const alternators = alternatorsStore.alternators\n const deviceInstances = Object.values(messages).sort() as AlternatorId[]\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2) baby\n if (!alternators || alternators.length != deviceInstances.length || !deviceInstances.every((id) => alternators.includes(id))) {\n Logger.log(`New alternators instances: ${JSON.stringify(deviceInstances)}`);\n alternatorsStore.setAlternators(deviceInstances)\n }\n }\n }, [messages])\n\n return alternatorsStore\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alternators.store.d.ts","sourceRoot":"/","sources":["src/Modules/Alternators/Alternators.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEpD,qBAAa,WAAW;IACtB,WAAW,EAAE,YAAY,EAAE,CAAK;;IAMhC,cAAc,
|
|
1
|
+
{"version":3,"file":"Alternators.store.d.ts","sourceRoot":"/","sources":["src/Modules/Alternators/Alternators.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEpD,qBAAa,WAAW;IACtB,WAAW,EAAE,YAAY,EAAE,CAAK;;IAMhC,cAAc,GAAI,aAAa,YAAY,EAAE,oBAAmC;CACjF;AAYD,wBAAgB,mBAAmB,gBAElC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.store.d.ts","sourceRoot":"/","sources":["src/Modules/App/App.store.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAW,MAAM,SAAS,CAAA;AAE5C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,UAAU,KAAK;IACb,WAAW,EAAE,eAAe,CAAA;CAC7B;AAED,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,SAAS,CAAA;AAItD,qBAAa,QAAQ;IACnB,IAAI,EAAE,MAAM,CAAgB;IAC5B,MAAM,EAAE,OAAO,CAAQ;IAGvB,MAAM,EAAE,OAAO,CACoF;IACnG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,wBAAwB,EAAE,MAAM,CAAA;gBAEpB,SAAS,EAAE,SAAS;IAWhC,IAAI,4BAA4B,QAE/B;IAED,IAAI,8BAA8B,gBAMjC;IAED,IAAI,eAAe,oBAElB;IAED,OAAO,
|
|
1
|
+
{"version":3,"file":"App.store.d.ts","sourceRoot":"/","sources":["src/Modules/App/App.store.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAW,MAAM,SAAS,CAAA;AAE5C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,UAAU,KAAK;IACb,WAAW,EAAE,eAAe,CAAA;CAC7B;AAED,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,SAAS,CAAA;AAItD,qBAAa,QAAQ;IACnB,IAAI,EAAE,MAAM,CAAgB;IAC5B,MAAM,EAAE,OAAO,CAAQ;IAGvB,MAAM,EAAE,OAAO,CACoF;IACnG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,wBAAwB,EAAE,MAAM,CAAA;gBAEpB,SAAS,EAAE,SAAS;IAWhC,IAAI,4BAA4B,QAE/B;IAED,IAAI,8BAA8B,gBAMjC;IAED,IAAI,eAAe,oBAElB;IAED,OAAO,GAAI,MAAM,MAAM,YAAqB;IAC5C,2BAA2B,GAAI,QAAQ,OAAO,aAAyB;IACvE,SAAS,GAAI,QAAQ,OAAO,UAa3B;IACD,YAAY,aAAqC;IACjD,YAAY,aAGX;IACD,WAAW,GAAI,UAAU,MAAM,YAA6B;IAC5D,kBAAkB,GAAI,iBAAiB,MAAM,YAA2C;IACxF,OAAO,GAAI,MAAM,MAAM,KAAK,EAAE,OAAO,eAAe;;MAGlD;IACF,aAAa,GAAI,YAAY,MAAM,YAAiC;IACpE,2BAA2B,GAAI,0BAA0B,MAAM,YAA6D;CAC7H;AAYD,wBAAgB,WAAW,aAG1B"}
|
|
@@ -18,7 +18,7 @@ export var useBatteries = function () {
|
|
|
18
18
|
var batteries_1 = batteriesStore.batteries;
|
|
19
19
|
var deviceInstances = Object.values(messages).sort();
|
|
20
20
|
// TODO: check unordered structural identify of old and new state
|
|
21
|
-
// TODO: to avoid unnecessary re-rendering: O(n^2 baby
|
|
21
|
+
// TODO: to avoid unnecessary re-rendering: O(n^2) baby
|
|
22
22
|
if (!batteries_1 || batteries_1.length != deviceInstances.length || !deviceInstances.every(function (id) { return batteries_1.includes(id); })) {
|
|
23
23
|
Logger.log("New batteries instances: ".concat(JSON.stringify(deviceInstances)));
|
|
24
24
|
batteriesStore.setBatteries(deviceInstances);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Batteries.provider.js","sourceRoot":"/","sources":["src/Modules/Battery/Batteries.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAa,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEhE,MAAM,CAAC,IAAM,YAAY,GAAG;IAC1B,IAAM,cAAc,GAAG,iBAAiB,EAAE,CAAA;IAC1C,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,gBAAgB,EAAE,YAAK,QAAQ,8BAA2B;KAC3D,CAAC,EAFwC,CAExC,CAAA;IAEF,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;IAEjE,SAAS,CAAC;QACR,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,yCAAyC;QAC3C,CAAC;aAAM,CAAC;YACN,IAAM,WAAS,GAAG,cAAc,CAAC,SAAS,CAAA;YAC1C,IAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAiB,CAAA;YACrE,iEAAiE;YACjE,uDAAuD;YACvD,IAAI,CAAC,WAAS,IAAI,WAAS,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,WAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAtB,CAAsB,CAAC,EAAE,CAAC;gBACvH,MAAM,CAAC,GAAG,CAAC,mCAA4B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAE,CAAC,CAAC;gBAC1E,cAAc,CAAC,YAAY,CAAC,eAAe,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,cAAc,CAAA;AACvB,CAAC,CAAA","sourcesContent":["import Logger from \"../../utils/logger\"\nimport { useEffect, useMemo } from \"react\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { BatteryId, useBatteriesStore } from \"./Batteries.store\"\n\nexport const useBatteries = () => {\n const batteriesStore = useBatteriesStore()\n const mqtt = useMqtt()\n\n const getTopics = (portalId: PortalId) => ({\n batteryInstances: `N/${portalId}/battery/+/DeviceInstance`,\n })\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const messages = mqtt.messagesByWildcard(topics.batteryInstances)\n\n useEffect(() => {\n if (!messages || Object.entries(messages).length === 0) {\n // Logger.log(\"Waiting for batteries...\")\n } else {\n const batteries = batteriesStore.batteries\n const deviceInstances = Object.values(messages).sort() as BatteryId[]\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2 baby
|
|
1
|
+
{"version":3,"file":"Batteries.provider.js","sourceRoot":"/","sources":["src/Modules/Battery/Batteries.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAa,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEhE,MAAM,CAAC,IAAM,YAAY,GAAG;IAC1B,IAAM,cAAc,GAAG,iBAAiB,EAAE,CAAA;IAC1C,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,gBAAgB,EAAE,YAAK,QAAQ,8BAA2B;KAC3D,CAAC,EAFwC,CAExC,CAAA;IAEF,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;IAEjE,SAAS,CAAC;QACR,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,yCAAyC;QAC3C,CAAC;aAAM,CAAC;YACN,IAAM,WAAS,GAAG,cAAc,CAAC,SAAS,CAAA;YAC1C,IAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAiB,CAAA;YACrE,iEAAiE;YACjE,uDAAuD;YACvD,IAAI,CAAC,WAAS,IAAI,WAAS,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,WAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAtB,CAAsB,CAAC,EAAE,CAAC;gBACvH,MAAM,CAAC,GAAG,CAAC,mCAA4B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAE,CAAC,CAAC;gBAC1E,cAAc,CAAC,YAAY,CAAC,eAAe,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,cAAc,CAAA;AACvB,CAAC,CAAA","sourcesContent":["import Logger from \"../../utils/logger\"\nimport { useEffect, useMemo } from \"react\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { BatteryId, useBatteriesStore } from \"./Batteries.store\"\n\nexport const useBatteries = () => {\n const batteriesStore = useBatteriesStore()\n const mqtt = useMqtt()\n\n const getTopics = (portalId: PortalId) => ({\n batteryInstances: `N/${portalId}/battery/+/DeviceInstance`,\n })\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const messages = mqtt.messagesByWildcard(topics.batteryInstances)\n\n useEffect(() => {\n if (!messages || Object.entries(messages).length === 0) {\n // Logger.log(\"Waiting for batteries...\")\n } else {\n const batteries = batteriesStore.batteries\n const deviceInstances = Object.values(messages).sort() as BatteryId[]\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2) baby\n if (!batteries || batteries.length != deviceInstances.length || !deviceInstances.every((id) => batteries.includes(id))) {\n Logger.log(`New batteries instances: ${JSON.stringify(deviceInstances)}`);\n batteriesStore.setBatteries(deviceInstances)\n }\n }\n }, [messages])\n\n return batteriesStore\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Batteries.store.d.ts","sourceRoot":"/","sources":["src/Modules/Battery/Batteries.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEjD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,EAAE,CAAA;CACvB;AAED,qBAAa,cAAc;IACzB,SAAS,EAAE,SAAS,EAAE,CAAK;;IAM3B,YAAY,
|
|
1
|
+
{"version":3,"file":"Batteries.store.d.ts","sourceRoot":"/","sources":["src/Modules/Battery/Batteries.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEjD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,EAAE,CAAA;CACvB;AAED,qBAAa,cAAc;IACzB,SAAS,EAAE,SAAS,EAAE,CAAK;;IAM3B,YAAY,GAAI,WAAW,SAAS,EAAE,iBAA+B;CACtE;AAYD,wBAAgB,iBAAiB,mBAEhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Charger.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Chargers/Charger.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAA2B,MAAM,SAAS,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGpD,MAAM,WAAW,aAAc,SAAQ,MAAM;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C;AAED,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"Charger.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Chargers/Charger.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAA2B,MAAM,SAAS,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGpD,MAAM,WAAW,aAAc,SAAQ,MAAM;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C;AAED,eAAO,MAAM,UAAU,GAAI,WAAW,iBAAiB,KAgChD,eACN,CAAA"}
|
|
@@ -19,7 +19,7 @@ export var useChargers = function () {
|
|
|
19
19
|
var chargers_1 = chargersStore.chargers;
|
|
20
20
|
var deviceInstances = Object.values(messages);
|
|
21
21
|
// TODO: check unordered structural identify of old and new state
|
|
22
|
-
// TODO: to avoid unnecessary re-rendering: O(n^2 baby
|
|
22
|
+
// TODO: to avoid unnecessary re-rendering: O(n^2) baby
|
|
23
23
|
if (!chargers_1 || chargers_1.length != deviceInstances.length || !deviceInstances.every(function (id) { return chargers_1.includes(id); })) {
|
|
24
24
|
Logger.log("New chargers instances: ".concat(JSON.stringify(deviceInstances)));
|
|
25
25
|
chargersStore.setChargers(deviceInstances);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chargers.provider.js","sourceRoot":"/","sources":["src/Modules/Chargers/Chargers.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAqB,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEtE,MAAM,CAAC,IAAM,WAAW,GAAG;IACzB,IAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IACxC,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,gBAAgB,EAAE,YAAK,QAAQ,8BAA2B;KAC3D,CAAC,EAFwC,CAExC,CAAA;IAEF,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,IAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAA;IAEvC,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;IAEjE,SAAS,CAAC;QACR,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,wCAAwC;QAC1C,CAAC;aAAM,CAAC;YACN,IAAM,UAAQ,GAAG,aAAa,CAAC,QAAQ,CAAA;YACvC,IAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAwB,CAAA;YACtE,iEAAiE;YACjE,uDAAuD;YACvD,IAAI,CAAC,UAAQ,IAAI,UAAQ,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,UAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAArB,CAAqB,CAAC,EAAE,CAAC;gBACpH,MAAM,CAAC,GAAG,CAAC,kCAA2B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAE,CAAC,CAAC;gBACzE,aAAa,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA","sourcesContent":["import Logger from \"../../utils/logger\";\nimport { useEffect, useMemo } from \"react\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { ChargerInstanceId, useChargersStore } from \"./Chargers.store\"\n\nexport const useChargers = () => {\n const chargersStore = useChargersStore()\n const mqtt = useMqtt()\n\n const getTopics = (portalId: PortalId) => ({\n chargerInstances: `N/${portalId}/charger/+/DeviceInstance`,\n })\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const chargers = chargersStore.chargers\n\n const messages = mqtt.messagesByWildcard(topics.chargerInstances)\n\n useEffect(() => {\n if (!messages || Object.entries(messages).length === 0) {\n // Logger.log(\"Waiting for chargers...\")\n } else {\n const chargers = chargersStore.chargers\n const deviceInstances = Object.values(messages) as ChargerInstanceId[]\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2 baby
|
|
1
|
+
{"version":3,"file":"Chargers.provider.js","sourceRoot":"/","sources":["src/Modules/Chargers/Chargers.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAqB,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEtE,MAAM,CAAC,IAAM,WAAW,GAAG;IACzB,IAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IACxC,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,gBAAgB,EAAE,YAAK,QAAQ,8BAA2B;KAC3D,CAAC,EAFwC,CAExC,CAAA;IAEF,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,IAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAA;IAEvC,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;IAEjE,SAAS,CAAC;QACR,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,wCAAwC;QAC1C,CAAC;aAAM,CAAC;YACN,IAAM,UAAQ,GAAG,aAAa,CAAC,QAAQ,CAAA;YACvC,IAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAwB,CAAA;YACtE,iEAAiE;YACjE,uDAAuD;YACvD,IAAI,CAAC,UAAQ,IAAI,UAAQ,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,UAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAArB,CAAqB,CAAC,EAAE,CAAC;gBACpH,MAAM,CAAC,GAAG,CAAC,kCAA2B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAE,CAAC,CAAC;gBACzE,aAAa,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA","sourcesContent":["import Logger from \"../../utils/logger\";\nimport { useEffect, useMemo } from \"react\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { ChargerInstanceId, useChargersStore } from \"./Chargers.store\"\n\nexport const useChargers = () => {\n const chargersStore = useChargersStore()\n const mqtt = useMqtt()\n\n const getTopics = (portalId: PortalId) => ({\n chargerInstances: `N/${portalId}/charger/+/DeviceInstance`,\n })\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const chargers = chargersStore.chargers\n\n const messages = mqtt.messagesByWildcard(topics.chargerInstances)\n\n useEffect(() => {\n if (!messages || Object.entries(messages).length === 0) {\n // Logger.log(\"Waiting for chargers...\")\n } else {\n const chargers = chargersStore.chargers\n const deviceInstances = Object.values(messages) as ChargerInstanceId[]\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2) baby\n if (!chargers || chargers.length != deviceInstances.length || !deviceInstances.every((id) => chargers.includes(id))) {\n Logger.log(`New chargers instances: ${JSON.stringify(deviceInstances)}`);\n chargersStore.setChargers(deviceInstances)\n }\n }\n }, [messages])\n\n return chargersStore\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chargers.store.d.ts","sourceRoot":"/","sources":["src/Modules/Chargers/Chargers.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEzD,qBAAa,aAAa;IACxB,QAAQ,EAAE,iBAAiB,EAAE,CAAK;;IAMlC,WAAW,
|
|
1
|
+
{"version":3,"file":"Chargers.store.d.ts","sourceRoot":"/","sources":["src/Modules/Chargers/Chargers.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEzD,qBAAa,aAAa;IACxB,QAAQ,EAAE,iBAAiB,EAAE,CAAK;;IAMlC,WAAW,GAAI,UAAU,iBAAiB,EAAE,yBAA6B;CAC1E;AAYD,wBAAgB,gBAAgB,kBAE/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectedGensets.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Generators/ConnectedGensets.provider.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEpF,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"ConnectedGensets.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Generators/ConnectedGensets.provider.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEpF,eAAO,MAAM,mBAAmB,GAAI,YAAY,mBAAmB,wDAmClE,CAAA"}
|
|
@@ -19,7 +19,7 @@ export var useConnectedGensets = function (gensetType) {
|
|
|
19
19
|
var gensets_1 = gensetType === ConnectedGensetType.ACGENSET ? store.acGensets : store.dcGensets;
|
|
20
20
|
var deviceInstances = Object.values(messages).sort();
|
|
21
21
|
// TODO: check unordered structural identify of old and new state
|
|
22
|
-
// TODO: to avoid unnecessary re-rendering: O(n^2 baby
|
|
22
|
+
// TODO: to avoid unnecessary re-rendering: O(n^2) baby
|
|
23
23
|
if (!gensets_1 || gensets_1.length != deviceInstances.length || !deviceInstances.every(function (id) { return gensets_1.includes(id); })) {
|
|
24
24
|
Logger.log("New ".concat(gensetType, "s instances: ").concat(JSON.stringify(deviceInstances)));
|
|
25
25
|
switch (gensetType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectedGensets.provider.js","sourceRoot":"/","sources":["src/Modules/Generators/ConnectedGensets.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAqB,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEpF,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,UAA+B;IACjE,IAAM,KAAK,GAAG,wBAAwB,EAAE,CAAA;IACxC,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,IAAM,SAAS,GAAG,UAAC,QAAkB,EAAE,UAA+B,IAAK,OAAA,CAAC;QAC1E,eAAe,EAAE,YAAK,QAAQ,cAAI,UAAU,sBAAmB;KAChE,CAAC,EAFyE,CAEzE,CAAA;IAEF,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAApC,CAAoC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;IAE/F,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IAEhE,SAAS,CAAC;QACR,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,+CAA+C;QACjD,CAAC;aAAM,CAAC;YACN,IAAM,SAAO,GAAG,UAAU,KAAK,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAA;YAC/F,IAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAyB,CAAA;YAC7E,iEAAiE;YACjE,uDAAuD;YACvD,IAAI,CAAC,SAAO,IAAI,SAAO,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,SAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAApB,CAAoB,CAAC,EAAE,CAAC;gBACjH,MAAM,CAAC,GAAG,CAAC,cAAO,UAAU,0BAAgB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAE,CAAC,CAAC;gBAC/E,QAAQ,UAAU,EAAE,CAAC;oBACnB,KAAK,mBAAmB,CAAC,QAAQ;wBAC/B,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAA;wBACnC,MAAK;oBACP,KAAK,mBAAmB,CAAC,QAAQ;wBAC/B,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAA;wBACnC,MAAK;gBACT,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,KAAK,CAAA;AACd,CAAC,CAAA","sourcesContent":["import Logger from \"../../utils/logger\"\nimport { useEffect, useMemo } from \"react\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { useConnectedGensetsStore } from \"./ConnectedGensets.store\";\nimport { ConnectedGensetId, ConnectedGensetType } from \"./ConnectedGenset.provider\";\n\nexport const useConnectedGensets = (gensetType: ConnectedGensetType) => {\n const store = useConnectedGensetsStore()\n const mqtt = useMqtt()\n\n const getTopics = (portalId: PortalId, gensetType: ConnectedGensetType) => ({\n gensetInstances: `N/${portalId}/${gensetType}/+/DeviceInstance`,\n })\n\n const topics = useMemo(() => getTopics(mqtt.portalId, gensetType), [mqtt.portalId, gensetType])\n\n const messages = mqtt.messagesByWildcard(topics.gensetInstances)\n\n useEffect(() => {\n if (!messages || Object.entries(messages).length === 0) {\n // Logger.log(`Waiting for ${gensetType}s...`);\n } else {\n const gensets = gensetType === ConnectedGensetType.ACGENSET ? store.acGensets : store.dcGensets\n const deviceInstances = Object.values(messages).sort() as ConnectedGensetId[]\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2 baby
|
|
1
|
+
{"version":3,"file":"ConnectedGensets.provider.js","sourceRoot":"/","sources":["src/Modules/Generators/ConnectedGensets.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAqB,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEpF,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,UAA+B;IACjE,IAAM,KAAK,GAAG,wBAAwB,EAAE,CAAA;IACxC,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,IAAM,SAAS,GAAG,UAAC,QAAkB,EAAE,UAA+B,IAAK,OAAA,CAAC;QAC1E,eAAe,EAAE,YAAK,QAAQ,cAAI,UAAU,sBAAmB;KAChE,CAAC,EAFyE,CAEzE,CAAA;IAEF,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAApC,CAAoC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;IAE/F,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IAEhE,SAAS,CAAC;QACR,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,+CAA+C;QACjD,CAAC;aAAM,CAAC;YACN,IAAM,SAAO,GAAG,UAAU,KAAK,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAA;YAC/F,IAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAyB,CAAA;YAC7E,iEAAiE;YACjE,uDAAuD;YACvD,IAAI,CAAC,SAAO,IAAI,SAAO,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,SAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAApB,CAAoB,CAAC,EAAE,CAAC;gBACjH,MAAM,CAAC,GAAG,CAAC,cAAO,UAAU,0BAAgB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAE,CAAC,CAAC;gBAC/E,QAAQ,UAAU,EAAE,CAAC;oBACnB,KAAK,mBAAmB,CAAC,QAAQ;wBAC/B,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAA;wBACnC,MAAK;oBACP,KAAK,mBAAmB,CAAC,QAAQ;wBAC/B,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAA;wBACnC,MAAK;gBACT,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,KAAK,CAAA;AACd,CAAC,CAAA","sourcesContent":["import Logger from \"../../utils/logger\"\nimport { useEffect, useMemo } from \"react\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { useConnectedGensetsStore } from \"./ConnectedGensets.store\";\nimport { ConnectedGensetId, ConnectedGensetType } from \"./ConnectedGenset.provider\";\n\nexport const useConnectedGensets = (gensetType: ConnectedGensetType) => {\n const store = useConnectedGensetsStore()\n const mqtt = useMqtt()\n\n const getTopics = (portalId: PortalId, gensetType: ConnectedGensetType) => ({\n gensetInstances: `N/${portalId}/${gensetType}/+/DeviceInstance`,\n })\n\n const topics = useMemo(() => getTopics(mqtt.portalId, gensetType), [mqtt.portalId, gensetType])\n\n const messages = mqtt.messagesByWildcard(topics.gensetInstances)\n\n useEffect(() => {\n if (!messages || Object.entries(messages).length === 0) {\n // Logger.log(`Waiting for ${gensetType}s...`);\n } else {\n const gensets = gensetType === ConnectedGensetType.ACGENSET ? store.acGensets : store.dcGensets\n const deviceInstances = Object.values(messages).sort() as ConnectedGensetId[]\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2) baby\n if (!gensets || gensets.length != deviceInstances.length || !deviceInstances.every((id) => gensets.includes(id))) {\n Logger.log(`New ${gensetType}s instances: ${JSON.stringify(deviceInstances)}`);\n switch (gensetType) {\n case ConnectedGensetType.ACGENSET:\n store.setACGensets(deviceInstances)\n break\n case ConnectedGensetType.DCGENSET:\n store.setDCGensets(deviceInstances)\n break\n }\n }\n }\n }, [messages])\n\n return store\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectedGensets.store.d.ts","sourceRoot":"/","sources":["src/Modules/Generators/ConnectedGensets.store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAI9D,qBAAa,gBAAgB;IAC3B,SAAS,EAAE,iBAAiB,EAAE,CAAK;IACnC,SAAS,EAAE,iBAAiB,EAAE,CAAK;;IAMnC,YAAY,
|
|
1
|
+
{"version":3,"file":"ConnectedGensets.store.d.ts","sourceRoot":"/","sources":["src/Modules/Generators/ConnectedGensets.store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAI9D,qBAAa,gBAAgB;IAC3B,SAAS,EAAE,iBAAiB,EAAE,CAAK;IACnC,SAAS,EAAE,iBAAiB,EAAE,CAAK;;IAMnC,YAAY,GAAI,SAAS,iBAAiB,EAAE,yBAA6B;IAEzE,YAAY,GAAI,SAAS,iBAAiB,EAAE,yBAA6B;CAC1E;AAYD,wBAAgB,wBAAwB,qBAEvC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Topics } from "../Mqtt";
|
|
2
|
+
import { InstanceId } from "../Vebus";
|
|
2
3
|
export interface InputLimitState {
|
|
3
4
|
currentLimit: string;
|
|
4
5
|
currentLimitIsAdjustable: boolean;
|
|
@@ -7,5 +8,5 @@ export interface InputLimitTopics extends Topics {
|
|
|
7
8
|
currentLimit?: string;
|
|
8
9
|
currentLimitIsAdjustable?: string;
|
|
9
10
|
}
|
|
10
|
-
export declare function useInputLimit(
|
|
11
|
+
export declare function useInputLimit(instanceId: InstanceId, inputId: number): InputLimitState;
|
|
11
12
|
//# sourceMappingURL=InputLimit.provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputLimit.provider.d.ts","sourceRoot":"/","sources":["src/Modules/InverterCharger/InputLimit.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAA2B,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"InputLimit.provider.d.ts","sourceRoot":"/","sources":["src/Modules/InverterCharger/InputLimit.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAA2B,MAAM,SAAS,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAGrC,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAA;IACpB,wBAAwB,EAAE,OAAO,CAAA;CAClC;AAED,MAAM,WAAW,gBAAiB,SAAQ,MAAM;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,CAYtF"}
|
|
@@ -10,18 +10,16 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
12
|
import { useMqtt, useTopicsState } from "../Mqtt";
|
|
13
|
-
import { useVebusStore } from "../Vebus";
|
|
14
13
|
import { useMemo } from "react";
|
|
15
|
-
export function useInputLimit(
|
|
16
|
-
var getTopics = function (portalId, deviceInstanceId,
|
|
14
|
+
export function useInputLimit(instanceId, inputId) {
|
|
15
|
+
var getTopics = function (portalId, deviceInstanceId, inputId) {
|
|
17
16
|
return {
|
|
18
|
-
currentLimit: "N/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/Ac/In/").concat(
|
|
19
|
-
currentLimitIsAdjustable: "N/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/Ac/In/").concat(
|
|
17
|
+
currentLimit: "N/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/Ac/In/").concat(inputId, "/CurrentLimit"),
|
|
18
|
+
currentLimitIsAdjustable: "N/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/Ac/In/").concat(inputId, "/CurrentLimitIsAdjustable"),
|
|
20
19
|
};
|
|
21
20
|
};
|
|
22
21
|
var mqtt = useMqtt();
|
|
23
|
-
var
|
|
24
|
-
var topics = useMemo(function () { return getTopics(mqtt.portalId, instanceId, shorePowerInput); }, [mqtt.portalId, instanceId, shorePowerInput]);
|
|
22
|
+
var topics = useMemo(function () { return getTopics(mqtt.portalId, instanceId, inputId); }, [mqtt.portalId, instanceId, inputId]);
|
|
25
23
|
return __assign({}, useTopicsState(topics));
|
|
26
24
|
}
|
|
27
25
|
//# sourceMappingURL=InputLimit.provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputLimit.provider.js","sourceRoot":"/","sources":["src/Modules/InverterCharger/InputLimit.provider.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAoB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"InputLimit.provider.js","sourceRoot":"/","sources":["src/Modules/InverterCharger/InputLimit.provider.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAoB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAY/B,MAAM,UAAU,aAAa,CAAC,UAAsB,EAAE,OAAe;IACnE,IAAM,SAAS,GAAG,UAAC,QAAkB,EAAE,gBAA4B,EAAE,OAAe;QAClF,OAAO;YACL,YAAY,EAAE,YAAK,QAAQ,oBAAU,gBAAgB,oBAAU,OAAO,kBAAe;YACrF,wBAAwB,EAAE,YAAK,QAAQ,oBAAU,gBAAgB,oBAAU,OAAO,8BAA2B;SAC9G,CAAA;IACH,CAAC,CAAA;IAED,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,EAA7C,CAA6C,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;IAEjH,oBAAY,cAAc,CAAkB,MAAM,CAAC,EAAE;AACvD,CAAC","sourcesContent":["import { PortalId, Topics, useMqtt, useTopicsState } from \"../Mqtt\"\nimport { InstanceId } from \"../Vebus\"\nimport { useMemo } from \"react\"\n\nexport interface InputLimitState {\n currentLimit: string\n currentLimitIsAdjustable: boolean\n}\n\nexport interface InputLimitTopics extends Topics {\n currentLimit?: string\n currentLimitIsAdjustable?: string\n}\n\nexport function useInputLimit(instanceId: InstanceId, inputId: number): InputLimitState {\n const getTopics = (portalId: PortalId, deviceInstanceId: InstanceId, inputId: number) => {\n return {\n currentLimit: `N/${portalId}/vebus/${deviceInstanceId}/Ac/In/${inputId}/CurrentLimit`,\n currentLimitIsAdjustable: `N/${portalId}/vebus/${deviceInstanceId}/Ac/In/${inputId}/CurrentLimitIsAdjustable`,\n }\n }\n\n const mqtt = useMqtt()\n const topics = useMemo(() => getTopics(mqtt.portalId, instanceId, inputId), [mqtt.portalId, instanceId, inputId])\n\n return { ...useTopicsState<InputLimitState>(topics) }\n}\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Topics } from "../Mqtt";
|
|
2
|
+
import { InstanceId } from "../Vebus";
|
|
2
3
|
export interface InputLimitSelectorState {
|
|
3
4
|
currentLimit: number;
|
|
4
5
|
currentLimitMax: number;
|
|
@@ -12,5 +13,5 @@ export interface InputLimitSelectorTopics extends Topics {
|
|
|
12
13
|
export interface InputLimitSelectorProvider extends InputLimitSelectorState {
|
|
13
14
|
updateLimit: (limit: number) => void;
|
|
14
15
|
}
|
|
15
|
-
export declare function useInputLimitSelector(
|
|
16
|
+
export declare function useInputLimitSelector(instanceId: InstanceId, inputId: number): InputLimitSelectorProvider;
|
|
16
17
|
//# sourceMappingURL=InputLimitSelector.provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputLimitSelector.provider.d.ts","sourceRoot":"/","sources":["src/Modules/InverterCharger/InputLimitSelector.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAA2B,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"InputLimitSelector.provider.d.ts","sourceRoot":"/","sources":["src/Modules/InverterCharger/InputLimitSelector.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAA2B,MAAM,SAAS,CAAA;AACnE,OAAO,EAAE,UAAU,EAAiB,MAAM,UAAU,CAAA;AAGpD,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,wBAAyB,SAAQ,MAAM;IACtD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,0BAA2B,SAAQ,uBAAuB;IACzE,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACrC;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,0BAA0B,CAqBzG"}
|
|
@@ -10,23 +10,21 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
12
|
import { useMqtt, useTopicsState } from "../Mqtt";
|
|
13
|
-
import { useVebusStore } from "../Vebus";
|
|
14
13
|
import { useMemo } from "react";
|
|
15
|
-
export function useInputLimitSelector(
|
|
14
|
+
export function useInputLimitSelector(instanceId, inputId) {
|
|
16
15
|
var getTopics = function (portalId, deviceInstanceId) {
|
|
17
16
|
return {
|
|
18
|
-
currentLimit: "N/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/Ac/In/").concat(
|
|
19
|
-
currentLimitMax: "N/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/Ac/In/").concat(
|
|
17
|
+
currentLimit: "N/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/Ac/In/").concat(inputId, "/CurrentLimit"),
|
|
18
|
+
currentLimitMax: "N/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/Ac/In/").concat(inputId, "/CurrentLimitGetMax"),
|
|
20
19
|
productId: "N/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/ProductId"),
|
|
21
20
|
};
|
|
22
21
|
};
|
|
23
22
|
var mqtt = useMqtt();
|
|
24
|
-
var instanceId = useVebusStore().instanceId;
|
|
25
23
|
var topics = useMemo(function () { return getTopics(mqtt.portalId, instanceId); }, [mqtt.portalId, instanceId]);
|
|
26
|
-
var getWriteTopics = function (portalId, deviceInstanceId,
|
|
27
|
-
limit: "W/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/Ac/In/").concat(
|
|
24
|
+
var getWriteTopics = function (portalId, deviceInstanceId, inputId) { return ({
|
|
25
|
+
limit: "W/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/Ac/In/").concat(inputId, "/CurrentLimit"),
|
|
28
26
|
}); };
|
|
29
|
-
var writeTopics = useMemo(function () { return getWriteTopics(mqtt.portalId, instanceId,
|
|
27
|
+
var writeTopics = useMemo(function () { return getWriteTopics(mqtt.portalId, instanceId, inputId); }, [mqtt.portalId, instanceId, inputId]);
|
|
30
28
|
var updateLimit = function (limit) { return mqtt.publish(writeTopics.limit, limit); };
|
|
31
29
|
return __assign(__assign({}, useTopicsState(topics)), { updateLimit: updateLimit });
|
|
32
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputLimitSelector.provider.js","sourceRoot":"/","sources":["src/Modules/InverterCharger/InputLimitSelector.provider.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAoB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"InputLimitSelector.provider.js","sourceRoot":"/","sources":["src/Modules/InverterCharger/InputLimitSelector.provider.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAoB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAkB/B,MAAM,UAAU,qBAAqB,CAAC,UAAsB,EAAE,OAAe;IAC3E,IAAM,SAAS,GAAG,UAAC,QAAkB,EAAE,gBAA4B;QACjE,OAAO;YACL,YAAY,EAAE,YAAK,QAAQ,oBAAU,gBAAgB,oBAAU,OAAO,kBAAe;YACrF,eAAe,EAAE,YAAK,QAAQ,oBAAU,gBAAgB,oBAAU,OAAO,wBAAqB;YAC9F,SAAS,EAAE,YAAK,QAAQ,oBAAU,gBAAgB,eAAY;SAC/D,CAAA;IACH,CAAC,CAAA;IAED,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAApC,CAAoC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;IAE/F,IAAM,cAAc,GAAG,UAAC,QAAkB,EAAE,gBAA4B,EAAE,OAAe,IAAK,OAAA,CAAC;QAC7F,KAAK,EAAE,YAAK,QAAQ,oBAAU,gBAAgB,oBAAU,OAAO,kBAAe;KAC/E,CAAC,EAF4F,CAE5F,CAAA;IAEF,IAAM,WAAW,GAAG,OAAO,CAAC,cAAM,OAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,EAAlD,CAAkD,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;IAE3H,IAAM,WAAW,GAAG,UAAC,KAAa,IAAK,OAAA,IAAI,CAAC,OAAO,CAAC,WAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAvC,CAAuC,CAAA;IAE9E,OAAO,sBAAK,cAAc,CAA0B,MAAM,CAAC,KAAE,WAAW,aAAA,GAAgC,CAAA;AAC1G,CAAC","sourcesContent":["import { PortalId, Topics, useMqtt, useTopicsState } from \"../Mqtt\"\nimport { InstanceId, useVebusStore } from \"../Vebus\"\nimport { useMemo } from \"react\"\n\nexport interface InputLimitSelectorState {\n currentLimit: number\n currentLimitMax: number\n productId: number\n}\n\nexport interface InputLimitSelectorTopics extends Topics {\n currentLimit?: string\n currentLimitMax?: string\n productId?: string\n}\n\nexport interface InputLimitSelectorProvider extends InputLimitSelectorState {\n updateLimit: (limit: number) => void\n}\n\nexport function useInputLimitSelector(instanceId: InstanceId, inputId: number): InputLimitSelectorProvider {\n const getTopics = (portalId: PortalId, deviceInstanceId: InstanceId) => {\n return {\n currentLimit: `N/${portalId}/vebus/${deviceInstanceId}/Ac/In/${inputId}/CurrentLimit`,\n currentLimitMax: `N/${portalId}/vebus/${deviceInstanceId}/Ac/In/${inputId}/CurrentLimitGetMax`,\n productId: `N/${portalId}/vebus/${deviceInstanceId}/ProductId`,\n }\n }\n\n const mqtt = useMqtt()\n const topics = useMemo(() => getTopics(mqtt.portalId, instanceId), [mqtt.portalId, instanceId])\n\n const getWriteTopics = (portalId: PortalId, deviceInstanceId: InstanceId, inputId: number) => ({\n limit: `W/${portalId}/vebus/${deviceInstanceId}/Ac/In/${inputId}/CurrentLimit`,\n })\n\n const writeTopics = useMemo(() => getWriteTopics(mqtt.portalId, instanceId, inputId), [mqtt.portalId, instanceId, inputId])\n\n const updateLimit = (limit: number) => mqtt.publish(writeTopics!.limit, limit)\n\n return { ...useTopicsState<InputLimitSelectorState>(topics), updateLimit } as InputLimitSelectorProvider\n}\n"]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Topics } from "../Mqtt";
|
|
2
|
+
import { InstanceId } from "../Vebus";
|
|
2
3
|
export interface InverterChargerState {
|
|
3
4
|
state: string;
|
|
4
5
|
mode: string;
|
|
6
|
+
numberOfAcInputs: number;
|
|
5
7
|
customName: string;
|
|
6
8
|
productName: string;
|
|
7
9
|
modeIsAdjustable: number;
|
|
@@ -9,6 +11,7 @@ export interface InverterChargerState {
|
|
|
9
11
|
export interface InverterChargerTopics extends Topics {
|
|
10
12
|
state?: string;
|
|
11
13
|
mode?: string;
|
|
14
|
+
numberOfAcInputs?: string;
|
|
12
15
|
customName?: string;
|
|
13
16
|
productName?: string;
|
|
14
17
|
modeIsAdjustable?: string;
|
|
@@ -16,5 +19,5 @@ export interface InverterChargerTopics extends Topics {
|
|
|
16
19
|
export interface InverterChargerProvider extends InverterChargerState {
|
|
17
20
|
updateMode: (mode: number) => void;
|
|
18
21
|
}
|
|
19
|
-
export declare function useInverterCharger(): InverterChargerProvider;
|
|
22
|
+
export declare function useInverterCharger(instanceId: InstanceId): InverterChargerProvider;
|
|
20
23
|
//# sourceMappingURL=InverterCharger.provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InverterCharger.provider.d.ts","sourceRoot":"/","sources":["src/Modules/InverterCharger/InverterCharger.provider.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,MAAM,EAGP,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"InverterCharger.provider.d.ts","sourceRoot":"/","sources":["src/Modules/InverterCharger/InverterCharger.provider.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,MAAM,EAGP,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAGrC,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,gBAAgB,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,qBAAsB,SAAQ,MAAM;IACnD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,uBAAwB,SAAQ,oBAAoB;IACnE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,uBAAuB,CA2BlF"}
|
|
@@ -11,12 +11,12 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
};
|
|
12
12
|
import { useMemo } from "react";
|
|
13
13
|
import { useMqtt, useTopicsState, } from "../Mqtt";
|
|
14
|
-
|
|
15
|
-
export function useInverterCharger() {
|
|
14
|
+
export function useInverterCharger(instanceId) {
|
|
16
15
|
var getTopics = function (portalId, deviceInstanceId) {
|
|
17
16
|
return {
|
|
18
|
-
state: "N/".concat(portalId, "/
|
|
17
|
+
state: "N/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/State"),
|
|
19
18
|
mode: "N/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/Mode"),
|
|
19
|
+
numberOfAcInputs: "N/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/Ac/NumberOfAcInputs"),
|
|
20
20
|
customName: "N/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/CustomName"),
|
|
21
21
|
productName: "N/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/ProductName"),
|
|
22
22
|
modeIsAdjustable: "N/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/ModeIsAdjustable"),
|
|
@@ -26,7 +26,6 @@ export function useInverterCharger() {
|
|
|
26
26
|
mode: "W/".concat(portalId, "/vebus/").concat(deviceInstanceId, "/Mode")
|
|
27
27
|
}); };
|
|
28
28
|
var mqtt = useMqtt();
|
|
29
|
-
var instanceId = useVebusStore().instanceId;
|
|
30
29
|
var topics = useMemo(function () { return getTopics(mqtt.portalId, instanceId); }, [mqtt.portalId, instanceId]);
|
|
31
30
|
var writeTopics = useMemo(function () { return getWriteTopics(mqtt.portalId, instanceId); }, [mqtt.portalId, instanceId]);
|
|
32
31
|
var updateMode = function (mode) { return mqtt.publish(writeTopics.mode, mode); };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InverterCharger.provider.js","sourceRoot":"/","sources":["src/Modules/InverterCharger/InverterCharger.provider.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAGL,OAAO,EACP,cAAc,GACf,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"InverterCharger.provider.js","sourceRoot":"/","sources":["src/Modules/InverterCharger/InverterCharger.provider.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAGL,OAAO,EACP,cAAc,GACf,MAAM,SAAS,CAAA;AA0BhB,MAAM,UAAU,kBAAkB,CAAC,UAAsB;IACvD,IAAM,SAAS,GAAG,UAAC,QAAkB,EAAE,gBAA4B;QACjE,OAAO;YACL,KAAK,EAAE,YAAK,QAAQ,oBAAU,gBAAgB,WAAQ;YACtD,IAAI,EAAE,YAAK,QAAQ,oBAAU,gBAAgB,UAAO;YACpD,gBAAgB,EAAE,YAAK,QAAQ,oBAAU,gBAAgB,yBAAsB;YAC/E,UAAU,EAAE,YAAK,QAAQ,oBAAU,gBAAgB,gBAAa;YAChE,WAAW,EAAE,YAAK,QAAQ,oBAAU,gBAAgB,iBAAc;YAClE,gBAAgB,EAAE,YAAK,QAAQ,oBAAU,gBAAgB,sBAAmB;SAC7E,CAAC;IACJ,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG,UAAC,QAAkB,EAAE,gBAA4B,IAAK,OAAA,CAAC;QAC5E,IAAI,EAAE,YAAK,QAAQ,oBAAU,gBAAgB,UAAO;KACrD,CAAC,EAF2E,CAE3E,CAAC;IAEH,IAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAApC,CAAoC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAChG,IAAM,WAAW,GAAG,OAAO,CAAC,cAAM,OAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAzC,CAAyC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE1G,IAAM,UAAU,GAAG,UAAC,IAAY,IAAK,OAAA,IAAI,CAAC,OAAO,CAAC,WAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAArC,CAAqC,CAAC;IAE3E,6BACK,cAAc,CAAuB,MAAM,CAAC,KAC/C,UAAU,YAAA,IACX;AACH,CAAC","sourcesContent":["import { useMemo } from \"react\"\nimport {\n PortalId,\n Topics,\n useMqtt,\n useTopicsState,\n} from \"../Mqtt\"\nimport { InstanceId } from \"../Vebus\"\n\n\nexport interface InverterChargerState {\n state: string\n mode: string\n numberOfAcInputs: number\n customName: string\n productName: string\n modeIsAdjustable: number\n}\n\nexport interface InverterChargerTopics extends Topics {\n state?: string\n mode?: string\n numberOfAcInputs?: string,\n customName?: string\n productName?: string\n modeIsAdjustable?: string\n}\n\nexport interface InverterChargerProvider extends InverterChargerState {\n updateMode: (mode: number) => void;\n}\n\nexport function useInverterCharger(instanceId: InstanceId): InverterChargerProvider {\n const getTopics = (portalId: PortalId, deviceInstanceId: InstanceId) => {\n return {\n state: `N/${portalId}/vebus/${deviceInstanceId}/State`,\n mode: `N/${portalId}/vebus/${deviceInstanceId}/Mode`,\n numberOfAcInputs: `N/${portalId}/vebus/${deviceInstanceId}/Ac/NumberOfAcInputs`,\n customName: `N/${portalId}/vebus/${deviceInstanceId}/CustomName`,\n productName: `N/${portalId}/vebus/${deviceInstanceId}/ProductName`,\n modeIsAdjustable: `N/${portalId}/vebus/${deviceInstanceId}/ModeIsAdjustable`,\n };\n };\n\n const getWriteTopics = (portalId: PortalId, deviceInstanceId: InstanceId) => ({\n mode: `W/${portalId}/vebus/${deviceInstanceId}/Mode`\n });\n\n const mqtt = useMqtt();\n\n const topics = useMemo(() => getTopics(mqtt.portalId, instanceId), [mqtt.portalId, instanceId]);\n const writeTopics = useMemo(() => getWriteTopics(mqtt.portalId, instanceId), [mqtt.portalId, instanceId]);\n\n const updateMode = (mode: number) => mqtt.publish(writeTopics!.mode, mode);\n\n return {\n ...useTopicsState<InverterChargerState>(topics),\n updateMode,\n }\n}\n"]}
|
|
@@ -15,13 +15,13 @@ export function useInverters() {
|
|
|
15
15
|
var messages = mqtt.messagesByWildcard(topics.inverters);
|
|
16
16
|
useEffect(function () {
|
|
17
17
|
if (!messages || Object.entries(messages).length === 0) {
|
|
18
|
-
// Logger.log("Waiting for
|
|
18
|
+
// Logger.log("Waiting for inverters...");
|
|
19
19
|
}
|
|
20
20
|
else {
|
|
21
21
|
var inverters_1 = invertersStore.inverters;
|
|
22
22
|
var deviceInstances = Object.values(messages);
|
|
23
23
|
// TODO: check unordered structural identify of old and new state
|
|
24
|
-
// TODO: to avoid unnecessary re-rendering: O(n^2 baby
|
|
24
|
+
// TODO: to avoid unnecessary re-rendering: O(n^2) baby
|
|
25
25
|
if (!inverters_1 || inverters_1.length != deviceInstances.length || !deviceInstances.every(function (id) { return inverters_1.includes(id); })) {
|
|
26
26
|
Logger.log("New inverters instances: ".concat(JSON.stringify(deviceInstances)));
|
|
27
27
|
invertersStore.setInverters(deviceInstances);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Inverters.provider.js","sourceRoot":"/","sources":["src/Modules/Inverters/Inverters.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAoB,OAAO,EAAE,MAAM,SAAS,CAAA;AACnD,OAAO,EAAsB,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACzE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAU1C,MAAM,UAAU,YAAY;IAC1B,IAAM,cAAc,GAAG,iBAAiB,EAAE,CAAA;IAE1C,IAAM,SAAS,GAAG,UAAC,QAAkB;QACnC,OAAO;YACL,SAAS,EAAE,YAAK,QAAQ,+BAA4B;SACrD,CAAA;IACH,CAAC,CAAA;IAED,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,IAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAA;IAE1C,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAE1D,SAAS,CAAC;QACR,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,
|
|
1
|
+
{"version":3,"file":"Inverters.provider.js","sourceRoot":"/","sources":["src/Modules/Inverters/Inverters.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAoB,OAAO,EAAE,MAAM,SAAS,CAAA;AACnD,OAAO,EAAsB,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACzE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAU1C,MAAM,UAAU,YAAY;IAC1B,IAAM,cAAc,GAAG,iBAAiB,EAAE,CAAA;IAE1C,IAAM,SAAS,GAAG,UAAC,QAAkB;QACnC,OAAO;YACL,SAAS,EAAE,YAAK,QAAQ,+BAA4B;SACrD,CAAA;IACH,CAAC,CAAA;IAED,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,IAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAA;IAE1C,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAE1D,SAAS,CAAC;QACR,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,0CAA0C;QAC5C,CAAC;aAAM,CAAC;YACN,IAAM,WAAS,GAAG,cAAc,CAAC,SAAS,CAAA;YAC1C,IAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAyB,CAAA;YACvE,iEAAiE;YACjE,uDAAuD;YACvD,IAAI,CAAC,WAAS,IAAI,WAAS,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,WAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAtB,CAAsB,CAAC,EAAE,CAAC;gBACvH,MAAM,CAAC,GAAG,CAAC,mCAA4B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAE,CAAC,CAAC;gBAC1E,cAAc,CAAC,YAAY,CAAC,eAAe,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,cAAc,CAAA;AACvB,CAAC","sourcesContent":["import Logger from \"../../utils/logger\"\nimport { PortalId, Topics, useMqtt } from \"../Mqtt\"\nimport { InverterInstanceId, useInvertersStore } from \"./Inverters.store\"\nimport { useEffect, useMemo } from \"react\"\n\nexport interface InvertersState {\n inverters: InverterInstanceId[]\n}\n\nexport interface InvertersTopics extends Topics {\n inverters?: string\n}\n\nexport function useInverters(): InvertersState {\n const invertersStore = useInvertersStore()\n\n const getTopics = (portalId: PortalId) => {\n return {\n inverters: `N/${portalId}/inverter/+/DeviceInstance`\n }\n }\n\n const mqtt = useMqtt()\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const inverters = invertersStore.inverters\n\n const messages = mqtt.messagesByWildcard(topics.inverters)\n\n useEffect(() => {\n if (!messages || Object.entries(messages).length === 0) {\n // Logger.log(\"Waiting for inverters...\");\n } else {\n const inverters = invertersStore.inverters\n const deviceInstances = Object.values(messages) as InverterInstanceId[]\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2) baby\n if (!inverters || inverters.length != deviceInstances.length || !deviceInstances.every((id) => inverters.includes(id))) {\n Logger.log(`New inverters instances: ${JSON.stringify(deviceInstances)}`);\n invertersStore.setInverters(deviceInstances)\n }\n }\n }, [messages])\n\n return invertersStore\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Inverters.store.d.ts","sourceRoot":"/","sources":["src/Modules/Inverters/Inverters.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAE1D,qBAAa,cAAc;IACzB,SAAS,EAAE,kBAAkB,EAAE,CAAK;;IAMpC,YAAY,
|
|
1
|
+
{"version":3,"file":"Inverters.store.d.ts","sourceRoot":"/","sources":["src/Modules/Inverters/Inverters.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAE1D,qBAAa,cAAc;IACzB,SAAS,EAAE,kBAAkB,EAAE,CAAK;;IAMpC,YAAY,GAAI,WAAW,kBAAkB,EAAE,0BAA+B;CAC/E;AAYD,wBAAgB,iBAAiB,mBAEhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Language.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Language/Language.provider.ts"],"names":[],"mappings":"AAMA,UAAU,eAAe;IACvB,kBAAkB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,QAAQ,CAAA;CACvB;AAED,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"Language.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Language/Language.provider.ts"],"names":[],"mappings":"AAMA,UAAU,eAAe;IACvB,kBAAkB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,QAAQ,CAAA;CACvB;AAED,eAAO,MAAM,eAAe,GAAU,0DAA0D,eAAe,oBAM9G,CAAA;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,sBAgCnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mqtt.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Mqtt/Mqtt.provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,MAAM,EAAC,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,aAAa,GAAI,QAAQ,
|
|
1
|
+
{"version":3,"file":"Mqtt.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Mqtt/Mqtt.provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,MAAM,EAAC,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,aAAa,GAAI,QAAQ,GAAG,WAAW,EAAE,QAAQ,MAAM,KAAG,QAAQ,GAAG,SAGjF,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,SAAS,GAAG,GAAG,EAAE,QAAQ,MAAM,KAAG,SAGhE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mqtt.store.d.ts","sourceRoot":"/","sources":["src/Modules/Mqtt/Mqtt.store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,qBAAqB,EAAE,UAAU,EAAC,MAAM,MAAM,CAAA;AACtD,OAAO,EAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAU,MAAM,EAAC,MAAM,SAAS,CAAA;AAQ3E,qBAAa,SAAS;IAClB,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAA;IAC/B,MAAM,EAAE,MAAM,CAAoB;IAClC,QAAQ,EAAE,YAAY,CAAK;IAC3B,YAAY,EAAE,YAAY,CAAK;IAC/B,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAoB;IACjD,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,MAAM,CAA0C;IAC1D,mBAAmB,EAAE,GAAG,CAAA;IACxB,WAAW,EAAE,GAAG,CAAA;IAChB,2BAA2B,EAAE,MAAM,CAAI;IAMvC,gBAAgB,WAAuB,MAAM,iBAIyB;IAMtE,gBAAgB,YAAwB,MAAM;;MAoBwB;IAYtE,kBAAkB,cAA0B,MAAM,SAiBsB;;IAkBxE,IAAI,WAAW,YAEd;IAED,gBAAgB,
|
|
1
|
+
{"version":3,"file":"Mqtt.store.d.ts","sourceRoot":"/","sources":["src/Modules/Mqtt/Mqtt.store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,qBAAqB,EAAE,UAAU,EAAC,MAAM,MAAM,CAAA;AACtD,OAAO,EAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAU,MAAM,EAAC,MAAM,SAAS,CAAA;AAQ3E,qBAAa,SAAS;IAClB,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAA;IAC/B,MAAM,EAAE,MAAM,CAAoB;IAClC,QAAQ,EAAE,YAAY,CAAK;IAC3B,YAAY,EAAE,YAAY,CAAK;IAC/B,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAoB;IACjD,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,MAAM,CAA0C;IAC1D,mBAAmB,EAAE,GAAG,CAAA;IACxB,WAAW,EAAE,GAAG,CAAA;IAChB,2BAA2B,EAAE,MAAM,CAAI;IAMvC,gBAAgB,WAAuB,MAAM,iBAIyB;IAMtE,gBAAgB,YAAwB,MAAM;;MAoBwB;IAYtE,kBAAkB,cAA0B,MAAM,SAiBsB;;IAkBxE,IAAI,WAAW,YAEd;IAED,gBAAgB,GAAI,QAAQ,MAAM,UAmBjC;IAED,qBAAqB;IAKrB,UAAU,GAAU,OAAO,MAAM,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,mBAEnE;IAED,oBAAoB,sBAOnB;IAED,2BAA2B,GAAI,SAAS,MAAM,UAW7C;IAED,gBAAgB,aAKf;IAED,iBAAiB,aAKhB;IAED,WAAW,GAAI,UAAU,MAAM,UAE9B;IAED,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAIvC,IAAI,GACA,UAAU,MAAM,EAChB,MAAM,MAAM,YAAc,EAC1B,MAAM,MAAM,GAAG,IAAI,EACnB,OAAM,MAAyB,EAC/B,SAAQ,OAAe,EACvB,WAAW,MAAM,UAgGpB;IAED,oBAAoB,aA2BnB;IAED,uBAAuB,aAStB;IAED,iBAAiB,aAQhB;IAED,mBAAmB,aAMlB;IAED,mBAAmB,aAMlB;IAED,OAAO,GAAI,OAAO,MAAM,EAAE,MAAM,MAAM,GAAG,MAAM,EAAE,UAAU,qBAAqB,UAS/E;CACJ;AA2BD,wBAAgB,OAAO,cAEtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShorePowerInput.store.d.ts","sourceRoot":"/","sources":["src/Modules/ShorePowerInput/ShorePowerInput.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEzD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,iBAAiB,CAAA;CAC3B;AAED,qBAAa,oBAAoB;IAC/B,OAAO,EAAE,iBAAiB,CAAA;;IAM1B,UAAU,
|
|
1
|
+
{"version":3,"file":"ShorePowerInput.store.d.ts","sourceRoot":"/","sources":["src/Modules/ShorePowerInput/ShorePowerInput.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEzD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,iBAAiB,CAAA;CAC3B;AAED,qBAAa,oBAAoB;IAC/B,OAAO,EAAE,iBAAiB,CAAA;;IAM1B,UAAU,GAAI,SAAS,iBAAiB,uBAA2B;CACpE;AAYD,wBAAgB,uBAAuB,yBAEtC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Topics } from "../Mqtt";
|
|
2
2
|
export interface SystemStateState {
|
|
3
|
-
|
|
3
|
+
systemState: number;
|
|
4
4
|
}
|
|
5
5
|
export interface SystemStateTopics extends Topics {
|
|
6
|
-
|
|
6
|
+
systemState?: string;
|
|
7
7
|
}
|
|
8
8
|
export declare function useSystemState(): SystemStateState;
|
|
9
9
|
//# sourceMappingURL=SystemState.provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemState.provider.d.ts","sourceRoot":"/","sources":["src/Modules/SystemState/SystemState.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAA2B,MAAM,SAAS,CAAA;AAGnE,MAAM,WAAW,gBAAgB;IAC/B,
|
|
1
|
+
{"version":3,"file":"SystemState.provider.d.ts","sourceRoot":"/","sources":["src/Modules/SystemState/SystemState.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAA2B,MAAM,SAAS,CAAA;AAGnE,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,MAAM;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,cAAc,IAAI,gBAAgB,CASjD"}
|
|
@@ -2,7 +2,7 @@ import { useMqtt, useTopicsState } from "../Mqtt";
|
|
|
2
2
|
import { useMemo } from "react";
|
|
3
3
|
export function useSystemState() {
|
|
4
4
|
var getTopics = function (portalId) { return ({
|
|
5
|
-
|
|
5
|
+
systemState: "N/".concat(portalId, "/system/0/SystemState/State"),
|
|
6
6
|
}); };
|
|
7
7
|
var portalId = useMqtt().portalId;
|
|
8
8
|
var topics = useMemo(function () { return getTopics(portalId); }, [portalId]);
|
|
@@ -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,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,
|
|
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,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,WAAW,EAAE,YAAK,QAAQ,gCAA6B;KACxD,CAAC,EAFwC,CAExC,CAAA;IAEM,IAAA,QAAQ,GAAK,OAAO,EAAE,SAAd,CAAc;IAC9B,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,QAAQ,CAAC,EAAnB,CAAmB,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,
|
|
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,CAMzD"}
|
|
@@ -22,7 +22,7 @@ export var useTanks = function () {
|
|
|
22
22
|
var oldTanks = tanksStore.tanks;
|
|
23
23
|
var newTanks = deviceInstances_1.map(function (tankInstanceId) { return mqtt.messagesByTopics(getTankStateTopics(mqtt.portalId, tankInstanceId)); });
|
|
24
24
|
// TODO: check unordered structural identify of old and new state
|
|
25
|
-
// TODO: to avoid unnecessary re-rendering: O(n^2 baby
|
|
25
|
+
// TODO: to avoid unnecessary re-rendering: O(n^2) baby
|
|
26
26
|
if (!oldTanks || oldTanks.length != newTanks.length || !oldTanks.every(function (id) { return deviceInstances_1.includes(id.instance); })) {
|
|
27
27
|
Logger.log("New tanks instances: ".concat(JSON.stringify(deviceInstances_1)));
|
|
28
28
|
tanksStore.setTanks(newTanks);
|
|
@@ -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,IAAM,QAAQ,GAAG;IACtB,IAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAElC,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,KAAK,EAAE,YAAK,QAAQ,2BAAwB;KAC7C,CAAC,EAFwC,CAExC,CAAA;IAEF,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAEtD,SAAS,CAAC;QACR,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,qCAAqC;QACvC,CAAC;aAAM,CAAC;YACN,IAAM,iBAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAqB,CAAA;YACnE,IAAM,SAAO,GAAG,OAAO,CAAC;gBACtB,IAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAA;gBACjC,IAAM,QAAQ,GAAG,iBAAe,CAAC,GAAG,CAAC,UAAC,cAAc,IAAK,OAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,EAAxE,CAAwE,CAA2B,CAAA;gBAC5J,iEAAiE;gBACjE,uDAAuD;gBACvD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,iBAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAArC,CAAqC,CAAC,EAAE,CAAC;oBACtH,MAAM,CAAC,GAAG,CAAC,+BAAwB,IAAI,CAAC,SAAS,CAAC,iBAAe,CAAC,CAAE,CAAC,CAAC;oBACtE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;gBAC/B,CAAC;YACH,CAAC,CAAC,CAAA;YACF,OAAO,cAAM,OAAA,SAAO,EAAE,EAAT,CAAS,CAAA;QACxB,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,IAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAA;IAE9B,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) => mqtt.messagesByTopics(getTankStateTopics(mqtt.portalId, tankInstanceId))) 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
|
|
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,IAAM,QAAQ,GAAG;IACtB,IAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAElC,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,KAAK,EAAE,YAAK,QAAQ,2BAAwB;KAC7C,CAAC,EAFwC,CAExC,CAAA;IAEF,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAEtD,SAAS,CAAC;QACR,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,qCAAqC;QACvC,CAAC;aAAM,CAAC;YACN,IAAM,iBAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAqB,CAAA;YACnE,IAAM,SAAO,GAAG,OAAO,CAAC;gBACtB,IAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAA;gBACjC,IAAM,QAAQ,GAAG,iBAAe,CAAC,GAAG,CAAC,UAAC,cAAc,IAAK,OAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,EAAxE,CAAwE,CAA2B,CAAA;gBAC5J,iEAAiE;gBACjE,uDAAuD;gBACvD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,iBAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAArC,CAAqC,CAAC,EAAE,CAAC;oBACtH,MAAM,CAAC,GAAG,CAAC,+BAAwB,IAAI,CAAC,SAAS,CAAC,iBAAe,CAAC,CAAE,CAAC,CAAC;oBACtE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;gBAC/B,CAAC;YACH,CAAC,CAAC,CAAA;YACF,OAAO,cAAM,OAAA,SAAO,EAAE,EAAT,CAAS,CAAA;QACxB,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,IAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAA;IAE9B,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) => mqtt.messagesByTopics(getTankStateTopics(mqtt.portalId, tankInstanceId))) 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 (!oldTanks || oldTanks.length != newTanks.length || !oldTanks.every((id) => deviceInstances.includes(id.instance))) {\n Logger.log(`New tanks instances: ${JSON.stringify(deviceInstances)}`);\n tanksStore.setTanks(newTanks)\n }\n })\n return () => dispose()\n }\n }, [messages])\n\n const tanks = tanksStore.tanks\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,
|
|
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,iBAAuB;CACtD;AAYD,wBAAgB,aAAa,eAE5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Temperature.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperature.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,MAAM,EAGP,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAA;AAE1C,MAAM,WAAW,iBAAkB,SAAQ,MAAM;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"Temperature.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperature.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,MAAM,EAGP,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAA;AAE1C,MAAM,WAAW,iBAAkB,SAAQ,MAAM;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,yBAAyB,GAAI,UAAU,QAAQ,EAAE,eAAe,qBAAqB;;;;;;;CAOhG,CAAA;AAEF,wBAAgB,cAAc,CAAC,aAAa,EAAE,qBAAqB,oBAiBlE;AAED,wBAAgB,WAAW,CAAC,aAAa,EAAE,qBAAqB,oBAiB/D;AAED,wBAAgB,WAAW,CAAC,aAAa,EAAE,qBAAqB,oBAiB/D"}
|
|
@@ -23,7 +23,7 @@ export function useTemperatures() {
|
|
|
23
23
|
var oldTemperatures = temperaturesStore.temperatures;
|
|
24
24
|
var newTemperatures = deviceInstances_1.map(function (temperatureInstanceId) { return mqtt.messagesByTopics(getTemperatureStateTopics(mqtt.portalId, temperatureInstanceId)); });
|
|
25
25
|
// TODO: check unordered structural identify of old and new state
|
|
26
|
-
// TODO: to avoid unnecessary re-rendering: O(n^2 baby
|
|
26
|
+
// TODO: to avoid unnecessary re-rendering: O(n^2) baby
|
|
27
27
|
if (!oldTemperatures || oldTemperatures.length != newTemperatures.length || !oldTemperatures.every(function (id) { return deviceInstances_1.includes(id.instance); })) {
|
|
28
28
|
Logger.log("New temperatures instances: ".concat(JSON.stringify(deviceInstances_1)));
|
|
29
29
|
temperaturesStore.setTemperatures(newTemperatures);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Temperatures.provider.js","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperatures.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAA2C,MAAM,wBAAwB,CAAC;AAC5G,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,UAAU,eAAe;IAC7B,IAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,IAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,oBAAoB,EAAE,YAAK,QAAQ,kCAA+B;KACnE,CAAC,EAFwC,CAExC,CAAC;IAEH,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAExE,IAAM,YAAY,GAAG,iBAAiB,CAAC,YAAY,CAAC;IAEpD,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAEtE,SAAS,CAAC;QACR,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,6CAA6C;QAC/C,CAAC;aAAM,CAAC;YACN,IAAM,iBAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAA4B,CAAC;YAC3E,IAAM,SAAO,GAAG,OAAO,CAAC;gBACtB,IAAM,eAAe,GAAG,iBAAiB,CAAC,YAAY,CAAA;gBACtD,IAAM,eAAe,GAAG,iBAAe,CAAC,GAAG,CAAC,UAAC,qBAAqB,IAAK,OAAA,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC,EAAtF,CAAsF,CAAkC,CAAA;gBAC/L,iEAAiE;gBACjE,uDAAuD;gBACvD,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,iBAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAArC,CAAqC,CAAC,EAAE,CAAC;oBAClJ,MAAM,CAAC,GAAG,CAAC,sCAA+B,IAAI,CAAC,SAAS,CAAC,iBAAe,CAAC,CAAE,CAAC,CAAC;oBAC7E,iBAAiB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC,CAAC,CAAA;YACF,OAAO,cAAM,OAAA,SAAO,EAAE,EAAT,CAAS,CAAA;QACxB,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,iBAAiB,CAAA;AAC1B,CAAC","sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { PortalId, useMqtt } from \"../Mqtt\";\nimport { useTemperaturesStore } from \"./Temperatures.store\";\nimport Logger from \"../../utils/logger\";\nimport { getTemperatureStateTopics, TemperatureInstanceId, TemperatureState } from \"./Temperature.provider\";\nimport { autorun } from \"mobx\";\n\nexport function useTemperatures() {\n const temperaturesStore = useTemperaturesStore();\n const mqtt = useMqtt();\n\n const getTopics = (portalId: PortalId) => ({\n temperatureInstances: `N/${portalId}/temperature/+/DeviceInstance`,\n });\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId]);\n\n const temperatures = temperaturesStore.temperatures;\n\n const messages = mqtt.messagesByWildcard(topics.temperatureInstances);\n\n useEffect(() => {\n if (!messages || Object.entries(messages).length === 0) {\n // Logger.log(\"Waiting for temperatures...\");\n } else {\n const deviceInstances = Object.values(messages) as TemperatureInstanceId[];\n const dispose = autorun(() => {\n const oldTemperatures = temperaturesStore.temperatures\n const newTemperatures = deviceInstances.map((temperatureInstanceId) => mqtt.messagesByTopics(getTemperatureStateTopics(mqtt.portalId, temperatureInstanceId))) as unknown as TemperatureState[]\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2 baby
|
|
1
|
+
{"version":3,"file":"Temperatures.provider.js","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperatures.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAA2C,MAAM,wBAAwB,CAAC;AAC5G,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,UAAU,eAAe;IAC7B,IAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,IAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,oBAAoB,EAAE,YAAK,QAAQ,kCAA+B;KACnE,CAAC,EAFwC,CAExC,CAAC;IAEH,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAExE,IAAM,YAAY,GAAG,iBAAiB,CAAC,YAAY,CAAC;IAEpD,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAEtE,SAAS,CAAC;QACR,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,6CAA6C;QAC/C,CAAC;aAAM,CAAC;YACN,IAAM,iBAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAA4B,CAAC;YAC3E,IAAM,SAAO,GAAG,OAAO,CAAC;gBACtB,IAAM,eAAe,GAAG,iBAAiB,CAAC,YAAY,CAAA;gBACtD,IAAM,eAAe,GAAG,iBAAe,CAAC,GAAG,CAAC,UAAC,qBAAqB,IAAK,OAAA,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC,EAAtF,CAAsF,CAAkC,CAAA;gBAC/L,iEAAiE;gBACjE,uDAAuD;gBACvD,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,iBAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAArC,CAAqC,CAAC,EAAE,CAAC;oBAClJ,MAAM,CAAC,GAAG,CAAC,sCAA+B,IAAI,CAAC,SAAS,CAAC,iBAAe,CAAC,CAAE,CAAC,CAAC;oBAC7E,iBAAiB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC,CAAC,CAAA;YACF,OAAO,cAAM,OAAA,SAAO,EAAE,EAAT,CAAS,CAAA;QACxB,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,iBAAiB,CAAA;AAC1B,CAAC","sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { PortalId, useMqtt } from \"../Mqtt\";\nimport { useTemperaturesStore } from \"./Temperatures.store\";\nimport Logger from \"../../utils/logger\";\nimport { getTemperatureStateTopics, TemperatureInstanceId, TemperatureState } from \"./Temperature.provider\";\nimport { autorun } from \"mobx\";\n\nexport function useTemperatures() {\n const temperaturesStore = useTemperaturesStore();\n const mqtt = useMqtt();\n\n const getTopics = (portalId: PortalId) => ({\n temperatureInstances: `N/${portalId}/temperature/+/DeviceInstance`,\n });\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId]);\n\n const temperatures = temperaturesStore.temperatures;\n\n const messages = mqtt.messagesByWildcard(topics.temperatureInstances);\n\n useEffect(() => {\n if (!messages || Object.entries(messages).length === 0) {\n // Logger.log(\"Waiting for temperatures...\");\n } else {\n const deviceInstances = Object.values(messages) as TemperatureInstanceId[];\n const dispose = autorun(() => {\n const oldTemperatures = temperaturesStore.temperatures\n const newTemperatures = deviceInstances.map((temperatureInstanceId) => mqtt.messagesByTopics(getTemperatureStateTopics(mqtt.portalId, temperatureInstanceId))) as unknown as TemperatureState[]\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2) baby\n if (!oldTemperatures || oldTemperatures.length != newTemperatures.length || !oldTemperatures.every((id) => deviceInstances.includes(id.instance))) {\n Logger.log(`New temperatures instances: ${JSON.stringify(deviceInstances)}`);\n temperaturesStore.setTemperatures(newTemperatures);\n }\n })\n return () => dispose()\n }\n }, [messages])\n\n return temperaturesStore\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Temperatures.store.d.ts","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperatures.store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAIzD,qBAAa,iBAAiB;IAC5B,YAAY,EAAE,gBAAgB,EAAE,CAAK;;IAMrC,eAAe,
|
|
1
|
+
{"version":3,"file":"Temperatures.store.d.ts","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperatures.store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAIzD,qBAAa,iBAAiB;IAC5B,YAAY,EAAE,gBAAgB,EAAE,CAAK;;IAMrC,eAAe,GAAI,cAAc,gBAAgB,EAAE,wBAAqC;CACzF;AAYD,wBAAgB,oBAAoB,sBAEnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Theme.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Theme/Theme.provider.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"Theme.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Theme/Theme.provider.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;;CAMpB,CAAA"}
|
|
@@ -2,6 +2,7 @@ import { useThemeStore } from "./Theme.store";
|
|
|
2
2
|
export var useTheme = function () {
|
|
3
3
|
var themeStore = useThemeStore();
|
|
4
4
|
var darkMode = themeStore.darkMode;
|
|
5
|
-
|
|
5
|
+
var nightMode = themeStore.nightMode;
|
|
6
|
+
return { darkMode: darkMode, nightMode: nightMode, themeStore: themeStore };
|
|
6
7
|
};
|
|
7
8
|
//# sourceMappingURL=Theme.provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Theme.provider.js","sourceRoot":"/","sources":["src/Modules/Theme/Theme.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,CAAC,IAAM,QAAQ,GAAG;IACtB,IAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,IAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"Theme.provider.js","sourceRoot":"/","sources":["src/Modules/Theme/Theme.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,CAAC,IAAM,QAAQ,GAAG;IACtB,IAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,IAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;IACpC,IAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAA;IAEtC,OAAO,EAAE,QAAQ,UAAA,EAAE,SAAS,WAAA,EAAE,UAAU,YAAA,EAAE,CAAA;AAC5C,CAAC,CAAA","sourcesContent":["import { useThemeStore } from \"./Theme.store\"\n\nexport const useTheme = () => {\n const themeStore = useThemeStore()\n const darkMode = themeStore.darkMode\n const nightMode = themeStore.nightMode\n\n return { darkMode, nightMode, themeStore }\n}\n"]}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
export interface ThemeState {
|
|
2
2
|
darkMode: boolean;
|
|
3
|
+
nightMode: boolean;
|
|
3
4
|
}
|
|
4
5
|
export declare class ThemeStore {
|
|
5
6
|
darkMode: boolean;
|
|
7
|
+
nightMode: boolean;
|
|
6
8
|
constructor();
|
|
7
9
|
setDarkMode: (darkMode: boolean) => boolean;
|
|
10
|
+
setNightMode: (nightMode: boolean) => boolean;
|
|
8
11
|
}
|
|
9
12
|
export declare function useThemeStore(): ThemeStore;
|
|
10
13
|
//# sourceMappingURL=Theme.store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Theme.store.d.ts","sourceRoot":"/","sources":["src/Modules/Theme/Theme.store.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Theme.store.d.ts","sourceRoot":"/","sources":["src/Modules/Theme/Theme.store.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,qBAAa,UAAU;IACrB,QAAQ,EAAE,OAAO,CAAO;IACxB,SAAS,EAAE,OAAO,CAAQ;;IAW1B,WAAW,GAAI,UAAU,OAAO,aAA6B;IAC7D,YAAY,GAAI,WAAW,OAAO,aAA+B;CAClE;AAYD,wBAAgB,aAAa,eAE5B"}
|
|
@@ -12,16 +12,28 @@ var ThemeStore = /** @class */ (function () {
|
|
|
12
12
|
writable: true,
|
|
13
13
|
value: true
|
|
14
14
|
});
|
|
15
|
+
Object.defineProperty(this, "nightMode", {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
configurable: true,
|
|
18
|
+
writable: true,
|
|
19
|
+
value: false
|
|
20
|
+
});
|
|
15
21
|
Object.defineProperty(this, "setDarkMode", {
|
|
16
22
|
enumerable: true,
|
|
17
23
|
configurable: true,
|
|
18
24
|
writable: true,
|
|
19
25
|
value: function (darkMode) { return _this.darkMode = darkMode; }
|
|
20
26
|
});
|
|
21
|
-
|
|
27
|
+
Object.defineProperty(this, "setNightMode", {
|
|
28
|
+
enumerable: true,
|
|
29
|
+
configurable: true,
|
|
30
|
+
writable: true,
|
|
31
|
+
value: function (nightMode) { return _this.nightMode = nightMode; }
|
|
32
|
+
});
|
|
33
|
+
makeAutoObservable(this, { setDarkMode: action, setNightMode: action });
|
|
22
34
|
makePersistable(this, {
|
|
23
35
|
name: "ThemeStore",
|
|
24
|
-
properties: ["darkMode"],
|
|
36
|
+
properties: ["darkMode", "nightMode"],
|
|
25
37
|
storage: Storage,
|
|
26
38
|
});
|
|
27
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Theme.store.js","sourceRoot":"/","sources":["src/Modules/Theme/Theme.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE7C,IAAI,KAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"Theme.store.js","sourceRoot":"/","sources":["src/Modules/Theme/Theme.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE7C,IAAI,KAAiB,CAAA;AAOrB;IAIE;QAAA,iBAOC;QAVD;;;;mBAAoB,IAAI;WAAA;QACxB;;;;mBAAqB,KAAK;WAAA;QAW1B;;;;mBAAc,UAAC,QAAiB,IAAK,OAAA,KAAI,CAAC,QAAQ,GAAG,QAAQ,EAAxB,CAAwB;WAAA;QAC7D;;;;mBAAe,UAAC,SAAkB,IAAK,OAAA,KAAI,CAAC,SAAS,GAAG,SAAS,EAA1B,CAA0B;WAAA;QAT/D,kBAAkB,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAA;QACvE,eAAe,CAAC,IAAI,EAAE;YACpB,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;YACrC,OAAO,EAAE,OAAO;SACjB,CAAC,CAAA;IACJ,CAAC;IAIH,iBAAC;AAAD,CAAC,AAfD,IAeC;;AAED,SAAS,eAAe;IACtB,IAAM,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,cAAM,OAAA,eAAe,EAAE,EAAjB,CAAiB,EAAE,EAAE,CAAC,CAAA;AAC7C,CAAC","sourcesContent":["import { action, makeAutoObservable } from \"mobx\"\nimport { makePersistable } from \"mobx-persist-store\"\nimport { useMemo } from \"react\"\nimport { Storage } from \"../../utils/storage\"\n\nlet store: ThemeStore\n\nexport interface ThemeState {\n darkMode: boolean\n nightMode: boolean\n}\n\nexport class ThemeStore {\n darkMode: boolean = true\n nightMode: boolean = false\n\n constructor() {\n makeAutoObservable(this, { setDarkMode: action, setNightMode: action })\n makePersistable(this, {\n name: \"ThemeStore\",\n properties: [\"darkMode\", \"nightMode\"],\n storage: Storage,\n })\n }\n\n setDarkMode = (darkMode: boolean) => this.darkMode = darkMode\n setNightMode = (nightMode: boolean) => this.nightMode = nightMode\n}\n\nfunction initializeStore() {\n const _store = store ?? new ThemeStore()\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 useThemeStore() {\n return useMemo(() => initializeStore(), [])\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vebus.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Vebus.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.provider.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,UAAU,EACX,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,QAAQ,QAAO,UAuE3B,CAAC"}
|
|
@@ -1,68 +1,77 @@
|
|
|
1
1
|
import { useEffect, useMemo } from "react";
|
|
2
|
-
import { toJS } from "mobx";
|
|
3
|
-
import { isEqual } from "lodash-es";
|
|
4
2
|
import Logger from "../../utils/logger";
|
|
5
|
-
import { useMqtt,
|
|
3
|
+
import { useMqtt, useTopicState } from "../Mqtt";
|
|
6
4
|
import { useVebusStore, } from "./Vebus.store";
|
|
7
5
|
export var useVebus = function () {
|
|
8
6
|
var mqtt = useMqtt();
|
|
9
7
|
var vebusStore = useVebusStore();
|
|
10
8
|
var portalId = mqtt.portalId;
|
|
11
9
|
var getTopics = function (portalId) { return ({
|
|
10
|
+
vebusInstanceId: "N/".concat(portalId, "/system/0/VebusInstance"),
|
|
12
11
|
deviceInstances: "N/".concat(portalId, "/vebus/+/DeviceInstance"),
|
|
13
12
|
}); };
|
|
14
13
|
var topics = useMemo(function () { return getTopics(portalId); }, [portalId]);
|
|
14
|
+
var vebusInstanceId = useTopicState(topics.vebusInstanceId);
|
|
15
15
|
var messages = mqtt.messagesByWildcard(topics.deviceInstances);
|
|
16
|
-
// Checks for old inverter paths, if not equal, set new path.
|
|
17
16
|
useEffect(function () {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return acc;
|
|
22
|
-
}, {});
|
|
23
|
-
var oldInvertersPaths = toJS(vebusStore.possibleInvertersPaths);
|
|
24
|
-
if (!isEqual(possibleInvertersPaths, oldInvertersPaths)) {
|
|
25
|
-
Logger.log("Saving vebus inverters paths");
|
|
26
|
-
vebusStore.setPossibleInvertersPaths(possibleInvertersPaths);
|
|
27
|
-
}
|
|
28
|
-
}, [messages]);
|
|
29
|
-
var subsMessages = useTopicsState(vebusStore.possibleInvertersPaths);
|
|
30
|
-
// set vebus instanceId (system with multiple inputs)
|
|
31
|
-
useEffect(function () {
|
|
32
|
-
// Logger.log("Setting vebus device instance");
|
|
33
|
-
// Sometimes "ghost" instances of devices linger in MQTT, so we need to select the highest (i.e. latest) instance ID
|
|
34
|
-
var multiInstances = Object.entries(subsMessages)
|
|
35
|
-
// Take only "Multi" devices -> must have more than one AcInput
|
|
36
|
-
.filter(function (_a) {
|
|
37
|
-
var _ = _a[0], nAcInputs = _a[1];
|
|
38
|
-
return nAcInputs && parseInt(nAcInputs) !== 0;
|
|
39
|
-
})
|
|
40
|
-
.map(function (instance) { return parseInt(instance[0]); })
|
|
41
|
-
.sort(function (a, b) { return b - a; });
|
|
42
|
-
var newInstanceId = multiInstances && multiInstances.length && multiInstances[0];
|
|
43
|
-
if (newInstanceId && newInstanceId !== vebusStore.instanceId) {
|
|
44
|
-
Logger.log("New VE.Bus instance ID: ".concat(newInstanceId));
|
|
45
|
-
vebusStore.setInstanceId(newInstanceId);
|
|
17
|
+
if (vebusInstanceId && vebusInstanceId !== vebusStore.instanceId) {
|
|
18
|
+
Logger.log("New VE.Bus instance ID: ".concat(vebusInstanceId));
|
|
19
|
+
vebusStore.setInstanceId(vebusInstanceId);
|
|
46
20
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
-
.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
21
|
+
var oldDevices = vebusStore.vebusInstanceIds;
|
|
22
|
+
var deviceInstances = Object.values(messages);
|
|
23
|
+
// TODO: check unordered structural identify of old and new state
|
|
24
|
+
// TODO: to avoid unnecessary re-rendering: O(n^2) baby
|
|
25
|
+
if (!oldDevices || oldDevices.length != deviceInstances.length || !deviceInstances.every(function (id) { return oldDevices.includes(id); })) {
|
|
26
|
+
Logger.log("New VE.Bus devices: ".concat(JSON.stringify(deviceInstances)));
|
|
27
|
+
vebusStore.setVebusInstanceIds(deviceInstances);
|
|
28
|
+
var possibleInvertersPaths = deviceInstances.reduce(function (acc, id) {
|
|
29
|
+
acc["".concat(id)] = "N/".concat(portalId, "/vebus/").concat(id, "/Ac/NumberOfAcInputs");
|
|
30
|
+
return acc;
|
|
31
|
+
}, {});
|
|
32
|
+
var vebusDevices = mqtt.messagesByTopics(possibleInvertersPaths);
|
|
33
|
+
// extract devices with no ac input -> pure inverters
|
|
34
|
+
var vebusInverters = Object.entries(vebusDevices)
|
|
35
|
+
.filter(function (_a) {
|
|
36
|
+
var _ = _a[0], nAcInputs = _a[1];
|
|
37
|
+
return parseInt(nAcInputs) === 0;
|
|
38
|
+
})
|
|
39
|
+
.map(function (_a) {
|
|
40
|
+
var instance = _a[0];
|
|
41
|
+
return parseInt(instance);
|
|
42
|
+
})
|
|
43
|
+
// make sure vebusInstanceId is always listed first, then ascending
|
|
44
|
+
.sort(function (a, b) {
|
|
45
|
+
if (a == vebusInstanceId)
|
|
46
|
+
return -1;
|
|
47
|
+
if (b == vebusInstanceId)
|
|
48
|
+
return 1;
|
|
49
|
+
return a - b;
|
|
50
|
+
});
|
|
51
|
+
// extract devices with at least one ac input -> inverters + chargers
|
|
52
|
+
var vebusInverterChargers = Object.entries(vebusDevices)
|
|
53
|
+
.filter(function (_a) {
|
|
54
|
+
var _ = _a[0], nAcInputs = _a[1];
|
|
55
|
+
return parseInt(nAcInputs) > 0;
|
|
56
|
+
})
|
|
57
|
+
.map(function (_a) {
|
|
58
|
+
var instance = _a[0];
|
|
59
|
+
return parseInt(instance);
|
|
60
|
+
})
|
|
61
|
+
// make sure vebusInstanceId is always listed first, then ascending
|
|
62
|
+
.sort(function (a, b) {
|
|
63
|
+
if (a == vebusInstanceId)
|
|
64
|
+
return -1;
|
|
65
|
+
if (b == vebusInstanceId)
|
|
66
|
+
return 1;
|
|
67
|
+
return a - b;
|
|
68
|
+
});
|
|
69
|
+
Logger.log("New VE.Bus inverters: ".concat(JSON.stringify(vebusInverters)));
|
|
63
70
|
vebusStore.setVebusInverters(vebusInverters);
|
|
71
|
+
Logger.log("New VE.Bus inverter/chargers: ".concat(JSON.stringify(vebusInverterChargers)));
|
|
72
|
+
vebusStore.setVebusInverterChargers(vebusInverterChargers);
|
|
64
73
|
}
|
|
65
|
-
}, [
|
|
74
|
+
}, [vebusInstanceId, messages]);
|
|
66
75
|
return vebusStore;
|
|
67
76
|
};
|
|
68
77
|
//# sourceMappingURL=Vebus.provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vebus.provider.js","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"Vebus.provider.js","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAEL,OAAO,EACP,aAAa,EACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAEL,aAAa,GAGd,MAAM,eAAe,CAAC;AAEvB,MAAM,CAAC,IAAM,QAAQ,GAAG;IACtB,IAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,IAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE/B,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,eAAe,EAAE,YAAK,QAAQ,4BAAyB;QACvD,eAAe,EAAE,YAAK,QAAQ,4BAAyB;KACxD,CAAC,EAHwC,CAGxC,CAAC;IAEH,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,QAAQ,CAAC,EAAnB,CAAmB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,IAAM,eAAe,GAAG,aAAa,CAAa,MAAM,CAAC,eAAe,CAAC,CAAA;IACzE,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAEjE,SAAS,CAAC;QACR,IAAI,eAAe,IAAI,eAAe,KAAK,UAAU,CAAC,UAAU,EAAE,CAAC;YACjE,MAAM,CAAC,GAAG,CAAC,kCAA2B,eAAe,CAAE,CAAC,CAAC;YACzD,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAC5C,CAAC;QAED,IAAM,UAAU,GAAG,UAAU,CAAC,gBAAgB,CAAA;QAC9C,IAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAiB,CAAC;QAEhE,iEAAiE;QACjE,uDAAuD;QACvD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAvB,CAAuB,CAAC,EAAE,CAAC;YAE1H,MAAM,CAAC,GAAG,CAAC,8BAAuB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAE,CAAC,CAAC;YACrE,UAAU,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAA;YAE/C,IAAM,sBAAsB,GAAG,eAAe,CAAC,MAAM,CACnD,UAAC,GAA8B,EAAE,EAAE;gBACjC,GAAG,CAAC,UAAG,EAAE,CAAE,CAAC,GAAG,YAAK,QAAQ,oBAAU,EAAE,yBAAsB,CAAC;gBAC/D,OAAO,GAAG,CAAC;YACb,CAAC,EACD,EAAE,CACH,CAAC;YAEF,IAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAwC,CAAA;YAEzG,qDAAqD;YACrD,IAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;iBAChD,MAAM,CAAC,UAAC,EAAc;oBAAb,CAAC,QAAA,EAAE,SAAS,QAAA;gBAAM,OAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;YAAzB,CAAyB,CAAC;iBACrD,GAAG,CAAC,UAAC,EAAU;oBAAT,QAAQ,QAAA;gBAAM,OAAA,QAAQ,CAAC,QAAQ,CAAC;YAAlB,CAAkB,CAAC;gBACxC,mEAAmE;iBAClE,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;gBACT,IAAI,CAAC,IAAI,eAAe;oBAAE,OAAO,CAAC,CAAC,CAAA;gBACnC,IAAI,CAAC,IAAI,eAAe;oBAAE,OAAO,CAAC,CAAA;gBAClC,OAAO,CAAC,GAAG,CAAC,CAAA;YACd,CAAC,CAAC,CAAA;YAEJ,qEAAqE;YACrE,IAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;iBACvD,MAAM,CAAC,UAAC,EAAc;oBAAb,CAAC,QAAA,EAAE,SAAS,QAAA;gBAAM,OAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC;YAAvB,CAAuB,CAAC;iBACnD,GAAG,CAAC,UAAC,EAAU;oBAAT,QAAQ,QAAA;gBAAM,OAAA,QAAQ,CAAC,QAAQ,CAAC;YAAlB,CAAkB,CAAC;gBACxC,mEAAmE;iBAClE,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;gBACT,IAAI,CAAC,IAAI,eAAe;oBAAE,OAAO,CAAC,CAAC,CAAA;gBACnC,IAAI,CAAC,IAAI,eAAe;oBAAE,OAAO,CAAC,CAAA;gBAClC,OAAO,CAAC,GAAG,CAAC,CAAA;YACd,CAAC,CAAC,CAAA;YAEJ,MAAM,CAAC,GAAG,CAAC,gCAAyB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAE,CAAC,CAAC;YACtE,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAE7C,MAAM,CAAC,GAAG,CAAC,wCAAiC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAE,CAAC,CAAC;YACrF,UAAU,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE/B,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC","sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport Logger from \"../../utils/logger\";\nimport {\n PortalId,\n useMqtt,\n useTopicState\n} from \"../Mqtt\";\nimport {\n InstanceId,\n useVebusStore,\n VebusDevices,\n VebusState,\n} from \"./Vebus.store\";\n\nexport const useVebus = (): VebusState => {\n const mqtt = useMqtt();\n const vebusStore = useVebusStore();\n const portalId = mqtt.portalId;\n\n const getTopics = (portalId: PortalId) => ({\n vebusInstanceId: `N/${portalId}/system/0/VebusInstance`,\n deviceInstances: `N/${portalId}/vebus/+/DeviceInstance`,\n });\n\n const topics = useMemo(() => getTopics(portalId), [portalId]);\n const vebusInstanceId = useTopicState<InstanceId>(topics.vebusInstanceId)\n const messages = mqtt.messagesByWildcard(topics.deviceInstances);\n\n useEffect(() => {\n if (vebusInstanceId && vebusInstanceId !== vebusStore.instanceId) {\n Logger.log(`New VE.Bus instance ID: ${vebusInstanceId}`);\n vebusStore.setInstanceId(vebusInstanceId);\n }\n\n const oldDevices = vebusStore.vebusInstanceIds\n const deviceInstances = Object.values(messages) as VebusDevices;\n\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2) baby\n if (!oldDevices || oldDevices.length != deviceInstances.length || !deviceInstances.every((id) => oldDevices.includes(id))) {\n\n Logger.log(`New VE.Bus devices: ${JSON.stringify(deviceInstances)}`);\n vebusStore.setVebusInstanceIds(deviceInstances)\n\n const possibleInvertersPaths = deviceInstances.reduce(\n (acc: { [key: string]: string }, id) => {\n acc[`${id}`] = `N/${portalId}/vebus/${id}/Ac/NumberOfAcInputs`;\n return acc;\n },\n {}\n );\n\n const vebusDevices = mqtt.messagesByTopics(possibleInvertersPaths) as unknown as { [key: string]: string}\n\n // extract devices with no ac input -> pure inverters\n const vebusInverters = Object.entries(vebusDevices)\n .filter(([_, nAcInputs]) => parseInt(nAcInputs) === 0)\n .map(([instance]) => parseInt(instance))\n // make sure vebusInstanceId is always listed first, then ascending\n .sort((a, b) => {\n if (a == vebusInstanceId) return -1\n if (b == vebusInstanceId) return 1\n return a - b\n })\n\n // extract devices with at least one ac input -> inverters + chargers\n const vebusInverterChargers = Object.entries(vebusDevices)\n .filter(([_, nAcInputs]) => parseInt(nAcInputs) > 0)\n .map(([instance]) => parseInt(instance))\n // make sure vebusInstanceId is always listed first, then ascending\n .sort((a, b) => {\n if (a == vebusInstanceId) return -1\n if (b == vebusInstanceId) return 1\n return a - b\n })\n\n Logger.log(`New VE.Bus inverters: ${JSON.stringify(vebusInverters)}`);\n vebusStore.setVebusInverters(vebusInverters);\n\n Logger.log(`New VE.Bus inverter/chargers: ${JSON.stringify(vebusInverterChargers)}`);\n vebusStore.setVebusInverterChargers(vebusInverterChargers);\n }\n }, [vebusInstanceId, messages])\n\n return vebusStore;\n};\n"]}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
export type InstanceId = number | null | undefined;
|
|
2
|
-
export type
|
|
3
|
-
[key: string]: string;
|
|
4
|
-
};
|
|
5
|
-
export type VebusInverters = Array<number>;
|
|
2
|
+
export type VebusDevices = Array<number>;
|
|
6
3
|
export interface VebusState {
|
|
7
4
|
instanceId: InstanceId;
|
|
8
|
-
|
|
5
|
+
vebusInstanceIds: VebusDevices;
|
|
6
|
+
vebusInverters: VebusDevices;
|
|
7
|
+
vebusInverterChargers: VebusDevices;
|
|
9
8
|
}
|
|
10
9
|
export declare class VebusStore {
|
|
11
10
|
instanceId: InstanceId;
|
|
12
|
-
|
|
13
|
-
vebusInverters:
|
|
11
|
+
vebusInstanceIds: VebusDevices;
|
|
12
|
+
vebusInverters: VebusDevices;
|
|
13
|
+
vebusInverterChargers: VebusDevices;
|
|
14
14
|
constructor();
|
|
15
|
-
|
|
16
|
-
setVebusInverters: (
|
|
15
|
+
setVebusInstanceIds: (devices: VebusDevices) => VebusDevices;
|
|
16
|
+
setVebusInverters: (devices: VebusDevices) => VebusDevices;
|
|
17
|
+
setVebusInverterChargers: (devices: VebusDevices) => VebusDevices;
|
|
17
18
|
setInstanceId: (instanceId: InstanceId) => InstanceId;
|
|
18
19
|
}
|
|
19
20
|
export declare function useVebusStore(): VebusStore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vebus.store.d.ts","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"Vebus.store.d.ts","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAElD,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;AAExC,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,gBAAgB,EAAE,YAAY,CAAA;IAC9B,cAAc,EAAE,YAAY,CAAA;IAC5B,qBAAqB,EAAE,YAAY,CAAA;CACpC;AAED,qBAAa,UAAU;IACrB,UAAU,EAAE,UAAU,CAAA;IACtB,gBAAgB,EAAE,YAAY,CAAA;IAC9B,cAAc,EAAE,YAAY,CAAA;IAC5B,qBAAqB,EAAE,YAAY,CAAA;;IAcnC,mBAAmB,GAAI,SAAS,YAAY,kBAAqC;IAEjF,iBAAiB,GAAI,SAAS,YAAY,kBAAmC;IAE7E,wBAAwB,GAAI,SAAS,YAAY,kBAA0C;IAE3F,aAAa,GAAI,YAAY,UAAU,gBAAiC;CACzE;AAYD,wBAAgB,aAAa,eAE5B"}
|
|
@@ -10,7 +10,7 @@ var VebusStore = /** @class */ (function () {
|
|
|
10
10
|
writable: true,
|
|
11
11
|
value: void 0
|
|
12
12
|
});
|
|
13
|
-
Object.defineProperty(this, "
|
|
13
|
+
Object.defineProperty(this, "vebusInstanceIds", {
|
|
14
14
|
enumerable: true,
|
|
15
15
|
configurable: true,
|
|
16
16
|
writable: true,
|
|
@@ -22,17 +22,29 @@ var VebusStore = /** @class */ (function () {
|
|
|
22
22
|
writable: true,
|
|
23
23
|
value: void 0
|
|
24
24
|
});
|
|
25
|
-
Object.defineProperty(this, "
|
|
25
|
+
Object.defineProperty(this, "vebusInverterChargers", {
|
|
26
26
|
enumerable: true,
|
|
27
27
|
configurable: true,
|
|
28
28
|
writable: true,
|
|
29
|
-
value:
|
|
29
|
+
value: void 0
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(this, "setVebusInstanceIds", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
configurable: true,
|
|
34
|
+
writable: true,
|
|
35
|
+
value: function (devices) { return _this.vebusInstanceIds = devices; }
|
|
30
36
|
});
|
|
31
37
|
Object.defineProperty(this, "setVebusInverters", {
|
|
32
38
|
enumerable: true,
|
|
33
39
|
configurable: true,
|
|
34
40
|
writable: true,
|
|
35
|
-
value: function (
|
|
41
|
+
value: function (devices) { return _this.vebusInverters = devices; }
|
|
42
|
+
});
|
|
43
|
+
Object.defineProperty(this, "setVebusInverterChargers", {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
configurable: true,
|
|
46
|
+
writable: true,
|
|
47
|
+
value: function (devices) { return _this.vebusInverterChargers = devices; }
|
|
36
48
|
});
|
|
37
49
|
Object.defineProperty(this, "setInstanceId", {
|
|
38
50
|
enumerable: true,
|
|
@@ -41,12 +53,14 @@ var VebusStore = /** @class */ (function () {
|
|
|
41
53
|
value: function (instanceId) { return _this.instanceId = instanceId; }
|
|
42
54
|
});
|
|
43
55
|
makeAutoObservable(this, {
|
|
44
|
-
|
|
56
|
+
setVebusInstanceIds: action,
|
|
45
57
|
setVebusInverters: action,
|
|
58
|
+
setVebusInverterChargers: action,
|
|
46
59
|
setInstanceId: action
|
|
47
60
|
});
|
|
48
|
-
this.
|
|
61
|
+
this.vebusInstanceIds = [];
|
|
49
62
|
this.vebusInverters = [];
|
|
63
|
+
this.vebusInverterChargers = [];
|
|
50
64
|
}
|
|
51
65
|
return VebusStore;
|
|
52
66
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vebus.store.js","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAe,MAAM,MAAM,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,IAAI,KAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"Vebus.store.js","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAe,MAAM,MAAM,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,IAAI,KAAiB,CAAA;AAarB;IAME;QAAA,iBAUC;QAfD;;;;;WAAsB;QACtB;;;;;WAA8B;QAC9B;;;;;WAA4B;QAC5B;;;;;WAAmC;QAcnC;;;;mBAAsB,UAAC,OAAqB,IAAK,OAAA,KAAI,CAAC,gBAAgB,GAAG,OAAO,EAA/B,CAA+B;WAAC;QAEjF;;;;mBAAoB,UAAC,OAAqB,IAAK,OAAA,KAAI,CAAC,cAAc,GAAG,OAAO,EAA7B,CAA6B;WAAC;QAE7E;;;;mBAA2B,UAAC,OAAqB,IAAK,OAAA,KAAI,CAAC,qBAAqB,GAAG,OAAO,EAApC,CAAoC;WAAC;QAE3F;;;;mBAAgB,UAAC,UAAsB,IAAK,OAAA,KAAI,CAAC,UAAU,GAAG,UAAU,EAA5B,CAA4B;WAAA;QAjBtE,kBAAkB,CAAC,IAAI,EAAE;YACvB,mBAAmB,EAAE,MAAM;YAC3B,iBAAiB,EAAE,MAAM;YACzB,wBAAwB,EAAE,MAAM;YAChC,aAAa,EAAE,MAAM;SACtB,CAAC,CAAA;QACF,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAA;QAC1B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAA;IACjC,CAAC;IASH,iBAAC;AAAD,CAAC,AAzBD,IAyBC;;AAED,SAAS,eAAe;IACtB,IAAM,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,cAAM,OAAA,eAAe,EAAE,EAAjB,CAAiB,EAAE,EAAE,CAAC,CAAA;AAC7C,CAAC","sourcesContent":["import { action, makeAutoObservable, runInAction } from \"mobx\"\nimport { useMemo } from \"react\"\n\nlet store: VebusStore\n\nexport type InstanceId = number | null | undefined\n\nexport type VebusDevices = Array<number>\n\nexport interface VebusState {\n instanceId: InstanceId\n vebusInstanceIds: VebusDevices\n vebusInverters: VebusDevices\n vebusInverterChargers: VebusDevices\n}\n\nexport class VebusStore {\n instanceId: InstanceId\n vebusInstanceIds: VebusDevices\n vebusInverters: VebusDevices\n vebusInverterChargers: VebusDevices\n\n constructor() {\n makeAutoObservable(this, {\n setVebusInstanceIds: action,\n setVebusInverters: action,\n setVebusInverterChargers: action,\n setInstanceId: action\n })\n this.vebusInstanceIds = []\n this.vebusInverters = []\n this.vebusInverterChargers = []\n }\n\n setVebusInstanceIds = (devices: VebusDevices) => this.vebusInstanceIds = devices;\n\n setVebusInverters = (devices: VebusDevices) => this.vebusInverters = devices;\n\n setVebusInverterChargers = (devices: VebusDevices) => this.vebusInverterChargers = devices;\n\n setInstanceId = (instanceId: InstanceId) => this.instanceId = instanceId\n}\n\nfunction initializeStore() {\n const _store = store ?? new VebusStore()\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 useVebusStore() {\n return useMemo(() => initializeStore(), [])\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vrm.store.d.ts","sourceRoot":"/","sources":["src/Modules/Vrm/Vrm.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAyB,aAAa,EAAE,MAAM,aAAa,CAAA;AAIhF,OAAO,EAAE,QAAQ,EAAe,MAAM,QAAQ,CAAA;AAM9C,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,WAAW,EAAE,MAAM,GAAG,YAAY,CAAA;CACnC;AAED,qBAAa,QAAQ;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,GAAG,YAAY,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;gBAEvD,QAAQ,EAAE,QAAQ;IAY9B,IAAI,QAAQ,uBAEX;IAED,KAAK,
|
|
1
|
+
{"version":3,"file":"Vrm.store.d.ts","sourceRoot":"/","sources":["src/Modules/Vrm/Vrm.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAyB,aAAa,EAAE,MAAM,aAAa,CAAA;AAIhF,OAAO,EAAE,QAAQ,EAAe,MAAM,QAAQ,CAAA;AAM9C,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,WAAW,EAAE,MAAM,GAAG,YAAY,CAAA;CACnC;AAED,qBAAa,QAAQ;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,GAAG,YAAY,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;gBAEvD,QAAQ,EAAE,QAAQ;IAY9B,IAAI,QAAQ,uBAEX;IAED,KAAK,GAAU,UAAU,MAAM,EAAE,UAAU,MAAM,EAAE,oBAAiB,EAAE,oBAAoB,MAAM,KAAG,OAAO,CAAC,aAAa,CAAC,CA8BxH;IAED,MAAM,aAcL;IAED,qBAAqB,QAAa,OAAO,CAAC,IAAI,CAAC,CAoC9C;IAED,qBAAqB,GAAI,QAAQ,MAAM,UAiBtC;CAEF;AAYD,wBAAgB,WAAW,aAG1B"}
|
|
@@ -25,7 +25,7 @@ export var useWindGenerators = function () {
|
|
|
25
25
|
}
|
|
26
26
|
});
|
|
27
27
|
// TODO: check unordered structural identify of old and new state
|
|
28
|
-
// TODO: to avoid unnecessary re-rendering: O(n^2 baby
|
|
28
|
+
// TODO: to avoid unnecessary re-rendering: O(n^2) baby
|
|
29
29
|
if (!windGenerators_1 || windGenerators_1.length != deviceInstances_1.length || !deviceInstances_1.every(function (id) { return windGenerators_1.includes(id); })) {
|
|
30
30
|
Logger.log("New wind generators instances: ".concat(JSON.stringify(deviceInstances_1)));
|
|
31
31
|
windGeneratorsStore.setWindGenerators(deviceInstances_1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WindGenerators.provider.js","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAmB,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,CAAC,IAAM,iBAAiB,GAAG;IAC/B,IAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAA;IACpD,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,oBAAoB,EAAE,YAAK,QAAQ,qCAAkC;KACtE,CAAC,EAFwC,CAExC,CAAA;IAEF,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAErE,SAAS,CAAC;QACR,IAAI,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,IAAM,gBAAc,GAAG,mBAAmB,CAAC,cAAc,CAAA;YACzD,IAAM,iBAAe,GAAsB,EAAE,CAAA;YAE7C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI;;gBAChC,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,sBAAsB,CAAC,cAAc,EAAE,CAAC;oBAC7D,IAAM,UAAU,GAAG,IAAI,MAAM,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACvE,IAAM,QAAQ,GAAG,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,0CAAE,QAAQ,mCAAI,EAAE,CAAA;oBACnD,IAAI,QAAQ,KAAK,EAAE;wBAAE,iBAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAA;gBACtD,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,iEAAiE;YACjE,uDAAuD;YACvD,IAAI,CAAC,gBAAc,IAAI,gBAAc,CAAC,MAAM,IAAI,iBAAe,CAAC,MAAM,IAAI,CAAC,iBAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,gBAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,EAA3B,CAA2B,CAAC,EAAE,CAAC;gBACtI,MAAM,CAAC,GAAG,CAAC,yCAAkC,IAAI,CAAC,SAAS,CAAC,iBAAe,CAAC,CAAE,CAAC,CAAC;gBAChF,mBAAmB,CAAC,iBAAiB,CAAC,iBAAe,CAAC,CAAA;YACxD,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,mBAAmB,CAAA;AAC5B,CAAC,CAAA","sourcesContent":["import Logger from \"../../utils/logger\";\nimport { useEffect, useMemo } from \"react\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { WindGeneratorId, useWindGeneratorsStore } from \"./WindGenerators.store\"\nimport { DC_SOURCE_MONITOR_MODE } from \"../../utils/constants\";\n\nexport const useWindGenerators = () => {\n const windGeneratorsStore = useWindGeneratorsStore()\n const mqtt = useMqtt()\n\n const getTopics = (portalId: PortalId) => ({\n dcSourceMonitorModes: `N/${portalId}/dcsource/+/Settings/MonitorMode`,\n })\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const messages = mqtt.messagesByWildcard(topics.dcSourceMonitorModes)\n\n useEffect(() => {\n if (messages && Object.entries(messages).length !== 0) {\n const windGenerators = windGeneratorsStore.windGenerators\n const deviceInstances: WindGeneratorId[] = []\n\n Object.keys(messages).forEach(path => {\n if (messages[path] === DC_SOURCE_MONITOR_MODE.WIND_GENERATOR) {\n const regExpExec = new RegExp('dcsource\\/(?<instance>\\\\d*)').exec(path)\n const instance = regExpExec?.groups?.instance ?? \"\"\n if (instance !== \"\") deviceInstances.push(+instance)\n }\n })\n\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2 baby
|
|
1
|
+
{"version":3,"file":"WindGenerators.provider.js","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAmB,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,CAAC,IAAM,iBAAiB,GAAG;IAC/B,IAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAA;IACpD,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,oBAAoB,EAAE,YAAK,QAAQ,qCAAkC;KACtE,CAAC,EAFwC,CAExC,CAAA;IAEF,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAErE,SAAS,CAAC;QACR,IAAI,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,IAAM,gBAAc,GAAG,mBAAmB,CAAC,cAAc,CAAA;YACzD,IAAM,iBAAe,GAAsB,EAAE,CAAA;YAE7C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI;;gBAChC,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,sBAAsB,CAAC,cAAc,EAAE,CAAC;oBAC7D,IAAM,UAAU,GAAG,IAAI,MAAM,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACvE,IAAM,QAAQ,GAAG,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,0CAAE,QAAQ,mCAAI,EAAE,CAAA;oBACnD,IAAI,QAAQ,KAAK,EAAE;wBAAE,iBAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAA;gBACtD,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,iEAAiE;YACjE,uDAAuD;YACvD,IAAI,CAAC,gBAAc,IAAI,gBAAc,CAAC,MAAM,IAAI,iBAAe,CAAC,MAAM,IAAI,CAAC,iBAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,gBAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,EAA3B,CAA2B,CAAC,EAAE,CAAC;gBACtI,MAAM,CAAC,GAAG,CAAC,yCAAkC,IAAI,CAAC,SAAS,CAAC,iBAAe,CAAC,CAAE,CAAC,CAAC;gBAChF,mBAAmB,CAAC,iBAAiB,CAAC,iBAAe,CAAC,CAAA;YACxD,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,mBAAmB,CAAA;AAC5B,CAAC,CAAA","sourcesContent":["import Logger from \"../../utils/logger\";\nimport { useEffect, useMemo } from \"react\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { WindGeneratorId, useWindGeneratorsStore } from \"./WindGenerators.store\"\nimport { DC_SOURCE_MONITOR_MODE } from \"../../utils/constants\";\n\nexport const useWindGenerators = () => {\n const windGeneratorsStore = useWindGeneratorsStore()\n const mqtt = useMqtt()\n\n const getTopics = (portalId: PortalId) => ({\n dcSourceMonitorModes: `N/${portalId}/dcsource/+/Settings/MonitorMode`,\n })\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const messages = mqtt.messagesByWildcard(topics.dcSourceMonitorModes)\n\n useEffect(() => {\n if (messages && Object.entries(messages).length !== 0) {\n const windGenerators = windGeneratorsStore.windGenerators\n const deviceInstances: WindGeneratorId[] = []\n\n Object.keys(messages).forEach(path => {\n if (messages[path] === DC_SOURCE_MONITOR_MODE.WIND_GENERATOR) {\n const regExpExec = new RegExp('dcsource\\/(?<instance>\\\\d*)').exec(path)\n const instance = regExpExec?.groups?.instance ?? \"\"\n if (instance !== \"\") deviceInstances.push(+instance)\n }\n })\n\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2) baby\n if (!windGenerators || windGenerators.length != deviceInstances.length || !deviceInstances.every((id) => windGenerators.includes(id))) {\n Logger.log(`New wind generators instances: ${JSON.stringify(deviceInstances)}`);\n windGeneratorsStore.setWindGenerators(deviceInstances)\n }\n }\n }, [messages])\n\n return windGeneratorsStore\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WindGenerators.store.d.ts","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEvD,qBAAa,cAAc;IACzB,cAAc,EAAE,eAAe,EAAE,CAAK;;IAMtC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"WindGenerators.store.d.ts","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEvD,qBAAa,cAAc;IACzB,cAAc,EAAE,eAAe,EAAE,CAAK;;IAMtC,iBAAiB,GAAI,gBAAgB,eAAe,EAAE,uBAAyC;CAChG;AAYD,wBAAgB,sBAAsB,mBAErC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@victronenergy/mfd-modules",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "9.1.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
"js-cookie": "^3.0.5",
|
|
23
23
|
"localforage": "^1.10.0",
|
|
24
24
|
"lodash-es": "^4.17.21",
|
|
25
|
-
"mobx": "^6.13.
|
|
25
|
+
"mobx": "^6.13.6",
|
|
26
26
|
"mobx-persist-store": "^1.1.5",
|
|
27
|
-
"mobx-utils": "^6.0
|
|
27
|
+
"mobx-utils": "^6.1.0",
|
|
28
28
|
"mqtt": "^4.3.8"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"@types/js-cookie": "^3.0.6",
|
|
34
34
|
"@types/lodash-es": "^4.17.12",
|
|
35
35
|
"@types/react": "^18.3.11",
|
|
36
|
-
"semantic-release": "^24.
|
|
37
|
-
"typescript": "^5.
|
|
36
|
+
"semantic-release": "^24.2.3",
|
|
37
|
+
"typescript": "^5.8.2"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
40
|
"react": "17 || 18"
|