From 976f3126f2d148c0fc5b840f3c631d8615a3476c Mon Sep 17 00:00:00 2001 From: ISA Date: Tue, 8 Jul 2025 10:09:46 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20Verwende=20fetch=20statt=20window.locat?= =?UTF-8?q?ion.href=20f=C3=BCr=20Digitalausgang-Schalteraktionen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- .env.production | 2 +- CHANGELOG.md | 5 +++++ .../digitalOutputs/DigitalOutputsModal.tsx | 18 +++++++-------- .../digitalOutputs/DigitalOutputsWidget.tsx | 22 ++++++++++++++++--- mocks/api/SERVICE/digitalOutputsMockData.json | 6 ++--- package-lock.json | 4 ++-- package.json | 2 +- 8 files changed, 41 insertions(+), 20 deletions(-) diff --git a/.env.development b/.env.development index 73b247a..8ddfcdd 100644 --- a/.env.development +++ b/.env.development @@ -6,6 +6,6 @@ NEXT_PUBLIC_USE_MOCK_BACKEND_LOOP_START=false NEXT_PUBLIC_EXPORT_STATIC=false NEXT_PUBLIC_USE_CGI=false # App-Versionsnummer -NEXT_PUBLIC_APP_VERSION=1.6.558 +NEXT_PUBLIC_APP_VERSION=1.6.559 NEXT_PUBLIC_CPL_MODE=json # json (Entwicklungsumgebung) oder jsSimulatedProd (CPL ->CGI-Interface-Simulator) oder production (CPL-> CGI-Interface Platzhalter) diff --git a/.env.production b/.env.production index 95dfbbb..a0f2144 100644 --- a/.env.production +++ b/.env.production @@ -5,5 +5,5 @@ NEXT_PUBLIC_CPL_API_PATH=/CPL NEXT_PUBLIC_EXPORT_STATIC=true NEXT_PUBLIC_USE_CGI=true # App-Versionsnummer -NEXT_PUBLIC_APP_VERSION=1.6.558 +NEXT_PUBLIC_APP_VERSION=1.6.559 NEXT_PUBLIC_CPL_MODE=production \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 71ae1b7..52508a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## [1.6.559] – 2025-07-08 + +- circle Button + +--- ## [1.6.558] – 2025-07-08 - feat: ersetzt Einheit-Select durch Listbox mit littwin-blue Design in AnalogInputsSettingsModal diff --git a/components/main/digitalOutputs/DigitalOutputsModal.tsx b/components/main/digitalOutputs/DigitalOutputsModal.tsx index 4bf6190..ceed0f8 100644 --- a/components/main/digitalOutputs/DigitalOutputsModal.tsx +++ b/components/main/digitalOutputs/DigitalOutputsModal.tsx @@ -49,22 +49,22 @@ export default function DigitalOutputsModal({ try { if (isCPL) { - // ✅ Name speichern (DANx=...) const nameEncoded = encodeURIComponent(label.trim()); const nameUrl = `/CPL?digitalOutputs.html&DAN0${selectedOutput.id}=${nameEncoded}`; - - // ✅ Status speichern (DASx=...) const statusUrl = `/CPL?digitalOutputs.html&DAS0${selectedOutput.id}=${ status ? 1 : 0 }`; - // 🟢 Beide nacheinander senden (wichtig bei älteren CPL-Versionen) - window.location.href = nameUrl; // Name zuerst (ggf. durch Refresh überschrieben) - setTimeout(() => { - window.location.href = statusUrl; - }, 300); // kleine Verzögerung (optional) + try { + await fetch(nameUrl, { method: "GET" }); + await new Promise((res) => setTimeout(res, 300)); + await fetch(statusUrl, { method: "GET" }); - // 💡 Modal wird nicht automatisch geschlossen — da Seite neu lädt. + closeOutputModal(); // Seite bleibt erhalten + } catch (err) { + console.error("❌ Fehler bei fetch:", err); + setErrorMsg("❌ Fehler beim Speichern."); + } } else { // 🧪 Lokaler Entwicklungsmodus const res = await fetch("/api/cpl/updateDigitalOutputsHandler", { diff --git a/components/main/digitalOutputs/DigitalOutputsWidget.tsx b/components/main/digitalOutputs/DigitalOutputsWidget.tsx index be72cb5..e8d4941 100644 --- a/components/main/digitalOutputs/DigitalOutputsWidget.tsx +++ b/components/main/digitalOutputs/DigitalOutputsWidget.tsx @@ -32,9 +32,25 @@ export default function DigitalOutputsWidget({ try { if (isCPL) { - window.location.href = `/CPL?digitalOutputs.html&DAS0${id}=${ - updatedOutputs[id - 1].status ? 1 : 0 - }`; + // Statt redirect: + // window.location.href = `/CPL?...`; + + // Verwende fetch: + fetch( + `/CPL?digitalOutputs.html&DAS0${id}=${ + updatedOutputs[id - 1].status ? 1 : 0 + }`, + { + method: "GET", + } + ) + .then((res) => { + if (!res.ok) throw new Error("Fehler beim Schalten"); + // Optional: Feedback anzeigen + }) + .catch((err) => { + console.error("CPL Fehler:", err); + }); } else { await fetch("/api/cpl/updateDigitalOutputsHandler", { method: "POST", diff --git a/mocks/api/SERVICE/digitalOutputsMockData.json b/mocks/api/SERVICE/digitalOutputsMockData.json index 42fdc84..5bc4b7a 100644 --- a/mocks/api/SERVICE/digitalOutputsMockData.json +++ b/mocks/api/SERVICE/digitalOutputsMockData.json @@ -1,12 +1,12 @@ { "win_da_state": [ - 1, - 1, + 0, + 0, 1, 1 ], "win_da_bezeichnung": [ - "Ausgang1", + "DA1", "Ausgang2", "Ausgang3", "Ausgang4" diff --git a/package-lock.json b/package-lock.json index 36491c6..44e75e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cpl-v4", - "version": "1.6.558", + "version": "1.6.559", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cpl-v4", - "version": "1.6.558", + "version": "1.6.559", "dependencies": { "@fontsource/roboto": "^5.1.0", "@headlessui/react": "^2.2.4", diff --git a/package.json b/package.json index ee753e4..316677c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cpl-v4", - "version": "1.6.558", + "version": "1.6.559", "private": true, "scripts": { "dev": "next dev",