diff --git a/src/routes/ws/websocketRoute.ts b/src/routes/ws/websocketRoute.ts index a375684..44b0d08 100644 --- a/src/routes/ws/websocketRoute.ts +++ b/src/routes/ws/websocketRoute.ts @@ -159,29 +159,35 @@ router.ws('/', async (ws, req, next) => { break; } case RequestType.CHECK: { + let conf = msg.data as { + "led_enabled": boolean, + "remote_enabled": boolean, + "hotspot_enabled": boolean, + "arduino_proxy_enabled": boolean, + "led_gpio": number, + "ambient_color": string + } + await SensorHelper.clearAllRawMeasurements(); - let content : {error: boolean, msg: string} = { + let content: { error: boolean, msg: string } = { error: false, msg: "" }; // Check config /// Check Proxy - if( Settings.get("arduino_proxy_enabled") == true ) - { + if (Settings.get("arduino_proxy_enabled") == true) { } // Check measurements await SensorHelper.measureAllRaw(); - for( let c of await Container.find() ) - { - if( c.sensorType != SensorType.NONE && c.rawData == -1 ) - { + for (let c of await Container.find()) { + if (c.sensorType != SensorType.NONE && c.rawData == -1) { content.error = true; - content.msg = "Container " + (c.slot+1) + " weist Fehler im Sensor auf.
Überprüfe die Einstellungen der Sensoren-Pins."; + content.msg = "Container " + (c.slot + 1) + " weist Fehler im Sensor auf.
Überprüfe die Einstellungen der Sensoren-Pins."; return WebSocketHandler.answerRequest(msg.data["type"] as RequestType, content); } } diff --git a/src/web/Setup.ts b/src/web/Setup.ts index 5d72e1c..d45c737 100644 --- a/src/web/Setup.ts +++ b/src/web/Setup.ts @@ -90,7 +90,7 @@ Dort werden die Behälter definiert, welche in den iTender gestellt werden.
D const setupSaveBtn = document.getElementById("setup_saveBtn") as HTMLButtonElement; - setupSaveBtn.onclick = () => { + setupSaveBtn.onclick = async () => { const containers = document.getElementById("setupContainers") as HTMLDivElement; let errorModal = new Modal("setup", "Fehler!"); @@ -104,7 +104,7 @@ Dort werden die Behälter definiert, welche in den iTender gestellt werden.
D if (containers.childNodes.length == 0) { ele.innerHTML += `Es muss mindestens ein Behälter hinzugefügt worden sein.`; - errorModal.open(); + await errorModal.open(); return; } @@ -112,7 +112,7 @@ Dort werden die Behälter definiert, welche in den iTender gestellt werden.
D let selects = c.getElementsByTagName("select"); if (selects[0].value == "-1") { ele.innerHTML += `Es müssen alle Pumpen-Pins gesetzt sein.`; - errorModal.open(); + await errorModal.open(); c.classList.add("error"); setTimeout(() => { c.classList.remove("error"); @@ -122,13 +122,13 @@ Dort werden die Behälter definiert, welche in den iTender gestellt werden.
D if (selects[1].value == "0") { ele.innerHTML += `Die Sensorart Ultraschall wird nicht mehr unterstützt.
Sollten Sie diese Funktion wünschen wenden Sie sich an den Kundensupport.`; - errorModal.open(); + await errorModal.open(); return; } if (selects[1].value != "-1" && (selects[2].value == "-1" || selects[3].value == "-1")) { ele.innerHTML += `Wenn ein Sensor-Typ definiert ist, müssen alle Sensor-Pins gesetzt sein.`; - errorModal.open(); + await errorModal.open(); c.classList.add("error"); setTimeout(() => { c.classList.remove("error"); @@ -140,18 +140,14 @@ Dort werden die Behälter definiert, welche in den iTender gestellt werden.
D if (!Setup.checkContainers()) { ele.innerHTML = `Einige Pins sind doppelt belegt.
Jeder GPIO-Pin kann nur einmal belegt werden!`; - errorModal.open(); + await errorModal.open(); return; } setupSaveBtn.disabled = true; - let saveModal = new Modal("setup", "Setup"); - let txt = document.createElement("p"); - txt.innerHTML = `Die Einstellungen werden gespeichert...
-
`; - saveModal.addContent(txt); - saveModal.open(); + + const ledCheckbox = document.getElementById("ledCheckbox") as HTMLInputElement; const ledGPIO = document.getElementById("ledGPIO") as HTMLInputElement; @@ -181,36 +177,54 @@ Dort werden die Behälter definiert, welche in den iTender gestellt werden.
D "sensor2": parseInt(c.getElementsByTagName("select")[3].value) }); } - - let payload = new WebSocketPayload(WebSocketEvent.CONTAINERS, cons); - WebWebSocketHandler.send(payload); - - payload = new WebSocketPayload(WebSocketEvent.CONFIG, { + let newConf = { "led_enabled": ledCheckbox.checked, "remote_enabled": allowRemoteCheckbox.checked, "hotspot_enabled": hotspotCheckbox.checked, "arduino_proxy_enabled": proxyCheckbox.checked, "led_gpio": parseInt(ledGPIO.value), "ambient_color": ambientColor.value - }); + } - WebWebSocketHandler.send(payload).then(() => { + // Check + let answer = await WebWebSocketHandler.request(RequestType.CHECK, newConf); + if( !(answer.data["success"] as boolean) ) + { + ele.innerHTML = `Die Konfiguration weist Fehler auf!
${answer.data["msg"]}`; + await errorModal.open(); + return; + } + + let saveModal = new Modal("setup", "Setup"); + let txt = document.createElement("p"); + txt.innerHTML = `Die Einstellungen werden gespeichert...
+
`; + saveModal.addContent(txt); + await saveModal.open(); + + // Push + let configPayload = new WebSocketPayload(WebSocketEvent.CONFIG, newConf); + + + setupSaveBtn.disabled = false; + + WebWebSocketHandler.send(configPayload).then(() => { + let containerPayload = new WebSocketPayload(WebSocketEvent.CONTAINERS, cons); + WebWebSocketHandler.send(containerPayload); setTimeout(() => { saveModal.close(); - setupSaveBtn.disabled = false; - this.startTare(); }, 1000); }).catch(() => { - setupSaveBtn.disabled = false; txt.innerHTML = `Fehler beim Speichern.
iTender hat nicht reagiert.`; - setTimeout(() => saveModal.close(), 2500); + setTimeout(() => saveModal.close(), 2000); }); - menuBtn.disabled = false; + menuBtn.disabled = false; + } } @@ -232,7 +246,7 @@ Dort werden die Behälter definiert, welche in den iTender gestellt werden.
D let txt = document.createElement("p"); txt.innerHTML = `Kalibrierung
-Bitte den alle Behälter von den Sensoren entfernen.
+Bitte alle Behälter von den Sensoren entfernen.
Die Gewichtssensoren werden beim Bestätigen austariert

Zum fortfahren Tarieren drücken.
`; modal.addContent(txt);