mirror of
https://github.com/HendrikRauh/dmx-interface.git
synced 2025-05-18 21:55:34 +00:00
74 lines
1.8 KiB
JavaScript
74 lines
1.8 KiB
JavaScript
import { loadData, writeDataToInput } from "./load-data.js";
|
|
import {
|
|
showLoadingScreen,
|
|
hideLoadingScreen,
|
|
showError,
|
|
} from "./loading-screen.js";
|
|
|
|
const form = document.querySelector("form.config");
|
|
|
|
function parseValue(input) {
|
|
if (input.type === "checkbox") {
|
|
return input.checked
|
|
? input.dataset.valueChecked
|
|
: input.dataset.valueNotChecked;
|
|
}
|
|
|
|
if (input.value === "") {
|
|
return null;
|
|
}
|
|
|
|
if (input.type === "number" || input.type === "range") {
|
|
const number = Number(input.value);
|
|
return Number.isNaN(number) ? null : number;
|
|
}
|
|
|
|
return input.value;
|
|
}
|
|
|
|
form.addEventListener("submit", (event) => {
|
|
event.preventDefault();
|
|
const inputFields = document.querySelectorAll(
|
|
"form :is(input, select, textarea):not(:disabled)"
|
|
);
|
|
|
|
const data = Array.from(inputFields).reduce((data, input) => {
|
|
data[input.name] = parseValue(input);
|
|
return data;
|
|
}, {});
|
|
console.log(data);
|
|
|
|
updateConfig({
|
|
method: "PUT",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify(data),
|
|
});
|
|
});
|
|
|
|
export async function updateConfig(fetchOptions) {
|
|
showLoadingScreen("Konfiguration anwenden und ESP neustarten...");
|
|
|
|
try {
|
|
const res = await fetch("/config", fetchOptions);
|
|
if (!res.ok) {
|
|
throw new Error(`Response status: ${res.status}`);
|
|
}
|
|
} catch (error) {
|
|
console.error(error.message);
|
|
showError(error.message);
|
|
}
|
|
|
|
for (let i = 0; i < 10; i++) {
|
|
try {
|
|
const data = await loadData(5000);
|
|
writeDataToInput(data);
|
|
hideLoadingScreen();
|
|
|
|
break;
|
|
} catch (error) {
|
|
// retry loading config until successful
|
|
}
|
|
}
|
|
}
|