Took 27 minutes
This commit is contained in:
Tobias Hopp 2023-01-28 17:34:35 +01:00
parent 333ffd1f94
commit 78f1277ab0
2 changed files with 53 additions and 33 deletions

View File

@ -159,29 +159,35 @@ router.ws('/', async (ws, req, next) => {
break; break;
} }
case RequestType.CHECK: { 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(); await SensorHelper.clearAllRawMeasurements();
let content : {error: boolean, msg: string} = { let content: { error: boolean, msg: string } = {
error: false, error: false,
msg: "" msg: ""
}; };
// Check config // Check config
/// Check Proxy /// Check Proxy
if( Settings.get("arduino_proxy_enabled") == true ) if (Settings.get("arduino_proxy_enabled") == true) {
{
} }
// Check measurements // Check measurements
await SensorHelper.measureAllRaw(); await SensorHelper.measureAllRaw();
for( let c of await Container.find() ) for (let c of await Container.find()) {
{ if (c.sensorType != SensorType.NONE && c.rawData == -1) {
if( c.sensorType != SensorType.NONE && c.rawData == -1 )
{
content.error = true; content.error = true;
content.msg = "Container " + (c.slot+1) + " weist Fehler im Sensor auf.<br>Überprüfe die Einstellungen der Sensoren-Pins."; content.msg = "Container " + (c.slot + 1) + " weist Fehler im Sensor auf.<br>Überprüfe die Einstellungen der Sensoren-Pins.";
return WebSocketHandler.answerRequest(msg.data["type"] as RequestType, content); return WebSocketHandler.answerRequest(msg.data["type"] as RequestType, content);
} }
} }

View File

@ -90,7 +90,7 @@ Dort werden die Behälter definiert, welche in den iTender gestellt werden.<br>D
const setupSaveBtn = document.getElementById("setup_saveBtn") as HTMLButtonElement; const setupSaveBtn = document.getElementById("setup_saveBtn") as HTMLButtonElement;
setupSaveBtn.onclick = () => { setupSaveBtn.onclick = async () => {
const containers = document.getElementById("setupContainers") as HTMLDivElement; const containers = document.getElementById("setupContainers") as HTMLDivElement;
let errorModal = new Modal("setup", "Fehler!"); let errorModal = new Modal("setup", "Fehler!");
@ -104,7 +104,7 @@ Dort werden die Behälter definiert, welche in den iTender gestellt werden.<br>D
if (containers.childNodes.length == 0) { if (containers.childNodes.length == 0) {
ele.innerHTML += `Es muss mindestens ein Behälter hinzugefügt worden sein.`; ele.innerHTML += `Es muss mindestens ein Behälter hinzugefügt worden sein.`;
errorModal.open(); await errorModal.open();
return; return;
} }
@ -112,7 +112,7 @@ Dort werden die Behälter definiert, welche in den iTender gestellt werden.<br>D
let selects = c.getElementsByTagName("select"); let selects = c.getElementsByTagName("select");
if (selects[0].value == "-1") { if (selects[0].value == "-1") {
ele.innerHTML += `Es müssen alle Pumpen-Pins gesetzt sein.`; ele.innerHTML += `Es müssen alle Pumpen-Pins gesetzt sein.`;
errorModal.open(); await errorModal.open();
c.classList.add("error"); c.classList.add("error");
setTimeout(() => { setTimeout(() => {
c.classList.remove("error"); c.classList.remove("error");
@ -122,13 +122,13 @@ Dort werden die Behälter definiert, welche in den iTender gestellt werden.<br>D
if (selects[1].value == "0") { if (selects[1].value == "0") {
ele.innerHTML += `Die Sensorart Ultraschall wird nicht mehr unterstützt.<br>Sollten Sie diese Funktion wünschen wenden Sie sich an den Kundensupport.`; ele.innerHTML += `Die Sensorart Ultraschall wird nicht mehr unterstützt.<br>Sollten Sie diese Funktion wünschen wenden Sie sich an den Kundensupport.`;
errorModal.open(); await errorModal.open();
return; return;
} }
if (selects[1].value != "-1" && (selects[2].value == "-1" || selects[3].value == "-1")) { 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.`; ele.innerHTML += `Wenn ein Sensor-Typ definiert ist, müssen alle Sensor-Pins gesetzt sein.`;
errorModal.open(); await errorModal.open();
c.classList.add("error"); c.classList.add("error");
setTimeout(() => { setTimeout(() => {
c.classList.remove("error"); c.classList.remove("error");
@ -140,18 +140,14 @@ Dort werden die Behälter definiert, welche in den iTender gestellt werden.<br>D
if (!Setup.checkContainers()) { if (!Setup.checkContainers()) {
ele.innerHTML = `Einige Pins sind doppelt belegt.<br>Jeder GPIO-Pin kann nur einmal belegt werden!`; ele.innerHTML = `Einige Pins sind doppelt belegt.<br>Jeder GPIO-Pin kann nur einmal belegt werden!`;
errorModal.open(); await errorModal.open();
return; return;
} }
setupSaveBtn.disabled = true; setupSaveBtn.disabled = true;
let saveModal = new Modal("setup", "Setup");
let txt = document.createElement("p");
txt.innerHTML = `Die Einstellungen werden gespeichert...<br>
<div class="lds-ellipsis"><div></div><div></div><div></div><div></div></div>`;
saveModal.addContent(txt);
saveModal.open();
const ledCheckbox = document.getElementById("ledCheckbox") as HTMLInputElement; const ledCheckbox = document.getElementById("ledCheckbox") as HTMLInputElement;
const ledGPIO = document.getElementById("ledGPIO") 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.<br>D
"sensor2": parseInt(c.getElementsByTagName("select")[3].value) "sensor2": parseInt(c.getElementsByTagName("select")[3].value)
}); });
} }
let newConf = {
let payload = new WebSocketPayload(WebSocketEvent.CONTAINERS, cons);
WebWebSocketHandler.send(payload);
payload = new WebSocketPayload(WebSocketEvent.CONFIG, {
"led_enabled": ledCheckbox.checked, "led_enabled": ledCheckbox.checked,
"remote_enabled": allowRemoteCheckbox.checked, "remote_enabled": allowRemoteCheckbox.checked,
"hotspot_enabled": hotspotCheckbox.checked, "hotspot_enabled": hotspotCheckbox.checked,
"arduino_proxy_enabled": proxyCheckbox.checked, "arduino_proxy_enabled": proxyCheckbox.checked,
"led_gpio": parseInt(ledGPIO.value), "led_gpio": parseInt(ledGPIO.value),
"ambient_color": ambientColor.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!<br>${answer.data["msg"]}`;
await errorModal.open();
return;
}
let saveModal = new Modal("setup", "Setup");
let txt = document.createElement("p");
txt.innerHTML = `Die Einstellungen werden gespeichert...<br>
<div class="lds-ellipsis"><div></div><div></div><div></div><div></div></div>`;
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(() => { setTimeout(() => {
saveModal.close(); saveModal.close();
setupSaveBtn.disabled = false;
this.startTare(); this.startTare();
}, 1000); }, 1000);
}).catch(() => { }).catch(() => {
setupSaveBtn.disabled = false;
txt.innerHTML = `Fehler beim Speichern.<br>iTender hat nicht reagiert.`; txt.innerHTML = `Fehler beim Speichern.<br>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.<br>D
let txt = document.createElement("p"); let txt = document.createElement("p");
txt.innerHTML = `Kalibrierung<br> txt.innerHTML = `Kalibrierung<br>
Bitte den <strong>alle</strong> Behälter von den Sensoren entfernen.<br> Bitte <strong>alle</strong> Behälter von den Sensoren entfernen.<br>
Die Gewichtssensoren werden beim Bestätigen austariert<br><br>Zum fortfahren Tarieren drücken.<br>`; Die Gewichtssensoren werden beim Bestätigen austariert<br><br>Zum fortfahren Tarieren drücken.<br>`;
modal.addContent(txt); modal.addContent(txt);