diff --git a/pumpingStation.html b/pumpingStation.html index 749ad8c..1dc7bca 100644 --- a/pumpingStation.html +++ b/pumpingStation.html @@ -53,7 +53,16 @@ hasDistance: { value: false }, distance: { value: 0 }, distanceUnit: { value: "m" }, - distanceDescription: { value: "" } + distanceDescription: { value: "" }, + + // control strategy + controlMode: { value: "none" }, + startLevel: { value: null }, + stopLevel: { value: null }, + minFlowLevel: { value: null }, + maxFlowLevel: { value: null }, + flowSetpoint: { value: null }, + flowDeadband: { value: null } }, @@ -129,6 +138,32 @@ : 0; } + // control mode toggle UI + const toggleModeSections = (val) => { + document.querySelectorAll('.ps-mode-section').forEach((el) => el.style.display = 'none'); + const active = document.getElementById(`ps-mode-${val}`); + if (active) active.style.display = ''; + }; + + const modeSelect = document.getElementById('node-input-controlMode'); + if (modeSelect) { + modeSelect.value = this.controlMode || 'none'; + toggleModeSections(modeSelect.value); + modeSelect.addEventListener('change', (e) => toggleModeSections(e.target.value)); + } + + const setNumberField = (id, val) => { + const el = document.getElementById(id); + if (el) el.value = Number.isFinite(val) ? val : ''; + }; + + setNumberField('node-input-startLevel', this.startLevel); + setNumberField('node-input-stopLevel', this.stopLevel); + setNumberField('node-input-minFlowLevel', this.minFlowLevel); + setNumberField('node-input-maxFlowLevel', this.maxFlowLevel); + setNumberField('node-input-flowSetpoint', this.flowSetpoint); + setNumberField('node-input-flowDeadband', this.flowDeadband); + //------------------- END OF CUSTOM config UI ELEMENTS ------------------- // }, oneditsave: function () { @@ -151,6 +186,18 @@ node.refHeight = document.getElementById("node-input-refHeight").value || ""; node.enableDryRunProtection = document.getElementById("node-input-enableDryRunProtection").checked; node.enableOverfillProtection = document.getElementById("node-input-enableOverfillProtection").checked; + + // control strategy + node.controlMode = document.getElementById('node-input-controlMode').value || 'none'; + + const parseNum = (id) => parseFloat(document.getElementById(id)?.value); + node.startLevel = parseNum('node-input-startLevel'); + node.stopLevel = parseNum('node-input-stopLevel'); + node.minFlowLevel = parseNum('node-input-minFlowLevel'); + node.maxFlowLevel = parseNum('node-input-maxFlowLevel'); + node.flowSetpoint = parseNum('node-input-flowSetpoint'); + node.flowDeadband = parseNum('node-input-flowDeadband'); + }, }); @@ -160,7 +207,7 @@