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,6 +159,15 @@ 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();
@ -169,17 +178,14 @@ router.ws('/', async (ws, req, next) => {
// 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.<br>Überprüfe die Einstellungen der Sensoren-Pins.";
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;
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.<br>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.<br>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.<br>D
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.`;
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.<br>D
if (!Setup.checkContainers()) {
ele.innerHTML = `Einige Pins sind doppelt belegt.<br>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...<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 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)
});
}
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!<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(() => {
saveModal.close();
setupSaveBtn.disabled = false;
this.startTare();
}, 1000);
}).catch(() => {
setupSaveBtn.disabled = false;
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");
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>`;
modal.addContent(txt);