diff --git a/data/index.html b/data/index.html index e48c765..3786e88 100644 --- a/data/index.html +++ b/data/index.html @@ -8,6 +8,7 @@ +
@@ -152,7 +153,10 @@ /> - +
+ + +
diff --git a/data/load-data.js b/data/load-data.js index be369aa..2c18434 100644 --- a/data/load-data.js +++ b/data/load-data.js @@ -18,7 +18,7 @@ async function loadData() { } } -function writeDataToInput(data) { +export function writeDataToInput(data) { console.log("write data", typeof data); for (const [key, value] of Object.entries(data)) { const element = document.querySelector(`[name=${key}]`); diff --git a/data/reset.js b/data/reset.js new file mode 100644 index 0000000..7a68957 --- /dev/null +++ b/data/reset.js @@ -0,0 +1,30 @@ +import { writeDataToInput } from "/load-data.js"; + +const form = document.querySelector("form"); + +form.addEventListener("reset", async (event) => { + event.preventDefault(); + + const ok = confirm( + "Sicher, dass du alle Einstellungen zurücksetzen möchtest?" + ); + if (ok) { + reset(); + } +}); + +async function reset() { + try { + const res = await fetch("/config", { + method: "DELETE", + }); + if (!res.ok) { + throw new Error(`Response status: ${res.status}`); + } + + const json = await res.json(); + writeDataToInput(json); + } catch (error) { + console.error(error.message); + } +} diff --git a/data/style.css b/data/style.css index b0676df..8d3dde2 100644 --- a/data/style.css +++ b/data/style.css @@ -1,6 +1,7 @@ :root { --color-primary: #087e8b; --color-on-primary: white; + --color-danger: #fa2b58; } body { @@ -59,14 +60,16 @@ select:focus { } button { - display: block; border: none; inset: none; border-radius: 8px; background-color: var(--color-primary); color: var(--color-on-primary); padding: 8px 16px; - margin: 0 auto; +} + +button[type="reset"] { + background-color: var(--color-danger); } :is(div:has(:is(input, select)), input, select, label) @@ -126,3 +129,10 @@ label.switch input:checked + .slider::before { left: 100%; translate: -100% -50%; } + +.buttons { + display: flex; + flex-direction: row; + justify-content: center; + gap: 8px; +} diff --git a/src/main.cpp b/src/main.cpp index 55d9aa1..297f292 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -84,10 +84,21 @@ void setup() server.on("/config", HTTP_GET, [](AsyncWebServerRequest *request) { onGetConfig(request); }); + server.on("/config", HTTP_DELETE, [](AsyncWebServerRequest *request) + { + config.begin("dmx", false); + config.clear(); + config.end(); + // respond with default config + onGetConfig(config, request); + + ESP.restart(); }); + server.onRequestBody([](AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total) { if (request->url() == "/config" && request->method() == HTTP_PUT) { onPutConfig(request, data, len, index, total); + ESP.restart(); } }); delay(1000);