itender/src/web/Settings.ts
Tobias Hopp b7a500f149 HOTFIX
Took 11 minutes
2023-04-08 15:51:44 +02:00

122 lines
5.1 KiB
TypeScript

import {WebWebSocketHandler} from "./WebWebSocketHandler";
import {RequestType} from "../RequestType";
import {Modal} from "./Modal";
import {ButtonType} from "./ButtonType";
export class Settings {
public static addListeners() {
// Settings Btns
const downloadDrinks = document.getElementById("settings_refreshDrinks") as HTMLButtonElement;
downloadDrinks.onclick = () => this.onClickRefreshDrinks();
const deleteDrinks = document.getElementById("settings_deleteDrinks") as HTMLButtonElement;
deleteDrinks.onclick = () => this.onClickDelete();
const getInfo = document.getElementById("settings_getInfo") as HTMLButtonElement;
getInfo.onclick = () => this.onClickInfo();
const reload = document.getElementById("settings_reload") as HTMLButtonElement;
reload.onclick = () => window.location.reload();
const update = document.getElementById("settings_update") as HTMLButtonElement;
update.onclick = () => this.update();
const shutdown = document.getElementById("settings_shutdown") as HTMLButtonElement;
shutdown.onclick = () => {
WebWebSocketHandler.request(RequestType.SHUTDOWN).then();
}
}
private static onClickRefreshDrinks() {
WebWebSocketHandler.request(RequestType.DOWNLOAD_DRINKS).then();
}
private static onClickUpdate() {
}
private static onClickInfo() {
WebWebSocketHandler.request(RequestType.INFO, null).then((payload) => {
let modal = new Modal("info", "Systeminformationen");
let table = document.createElement("table");
table.style.marginLeft = "auto";
table.style.marginRight = "auto";
let th = document.createElement("th");
table.append(th);
let tdTh1 = document.createElement("td");
tdTh1.innerText = "";
let tdTh2 = document.createElement("td");
tdTh2.innerText = "";
th.append(tdTh1, tdTh2);
let x = [["internet", "Internet-Konnektivität"], ["ip", "IP-Adresse"], ["network", "WiFi-Netzwerk"], ["uptime", "Gerät aktiv seit"], ["version", "Version"], ["author", "Entwickler"], ["contact", "Support-Adresse"]];
for (let y of x) {
let tr = document.createElement("tr");
let td1 = document.createElement("td");
let td2 = document.createElement("td");
td1.innerText = y[1];
td1.style.fontWeight = "bold";
if (payload.data[y[0]] === true || payload.data[y[0]] === false) {
td2.innerText = payload.data[y[0]] == true ? "Verbunden" : "Getrennt";
} else {
td2.innerText = payload.data[y[0]];
}
tr.append(td1, td2);
table.append(tr);
}
modal.addContent(table);
modal.addBR();
modal.addButton(ButtonType.SECONDARY, "Schließen", () => modal.close());
modal.open();
});
}
public static inUpdate = false;
private static update() {
WebWebSocketHandler.request(RequestType.UPDATE, null).then((payload) => {
let modal = new Modal("info", "System-Update");
let txt = document.createElement("p");
modal.addContent(txt);
if (!!payload.data) {
txt.innerHTML = `Der iTender wird nun aktualisiert!<br><br>
Sobald das Update installiert ist, wird das System neu gestartet.<br>Die dadurch hergehende Verbindungswarnung kann ignoriert werden.<br>Der iTender stellt die Verbindung automatisch wieder her.<br><br><span style="color:red;font-weight: bold">Schalten Sie das System nicht aus und entfernen Sie nicht das Netzkabel!</span>`;
modal.loader = true;
this.inUpdate = true;
} else {
txt.innerHTML = `Das System kann nicht aktualisiert werden.<br>iTender hat keine Internet-Konnektivität fest gestellt.<br>Versuchen Sie es zu einem späteren Zeitpunkt erneut.`;
modal.addButton(ButtonType.SECONDARY, "Schließen", () => modal.close());
}
modal.open();
});
}
private static onClickDelete() {
WebWebSocketHandler.request(RequestType.CLEAR_DB, null).then((payload) => {
let modal = new Modal("delete", "Datenbank leeren");
let txt = document.createElement("p");
if (payload.data as boolean) {
txt.innerHTML = `Die Datenbank des iTender's wurde geleert.<br>Um nun Cocktails auszugeben, muss die Datenbank aktualisiert werden.<br><br>Wähle dazu bitte <strong>Getränke herunterladen</strong> in den Einstellungen.<br><br>`;
modal.addContent(txt);
} else {
txt.innerHTML = `Die Datenbank des iTenders konnte aus einem unbekannten Grund nicht geleert werden.<br>Bitte versuche es zu einem späteren Zeitpunkt erneut.<br><br>`;
}
modal.addButton(ButtonType.SECONDARY, "Schließen", () => modal.close());
modal.open();
});
}
}