From dbb38cc7d853186541afd7abfb92924c5a652013 Mon Sep 17 00:00:00 2001 From: ISA Date: Thu, 19 Jun 2025 09:01:49 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20Digitale=20Ausg=C3=A4nge=20vollst=C3=A4?= =?UTF-8?q?ndig=20implementiert=20(Lesen=20&=20Schreiben=20in=20allen=20Mo?= =?UTF-8?q?di)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Unterstützung für drei Modi implementiert: json, jsmock und production - fetchDigitalOutputsService.ts erkennt NEXT_PUBLIC_CPL_MODE und lädt Daten je nach Umgebung - API-Handler /api/cpl/updateDigitalOutputsHandler verarbeitet POST-Anfragen für json und jsmock - In production wird Statusänderung per Redirect (window.location.href) an das CPL gesendet - Redux-Slice für digitale Ausgänge vollständig angebunden - UI (DigitalOutputsWidget.tsx) zeigt Status und ermöglicht das Umschalten - Dokumentation als README_digitalOutputs_final.md mit UML-Diagrammen ergänzt - CHANGELOG.md auf Version 1.6.417 aktualisiert --- .env.development | 5 +- .env.production | 2 +- CHANGELOG.md | 20 ++++ docs/Architektur/CPL_DataHandling.md | 99 +++++++++++++++++ docs/Architektur/README_digitalOutputs.md | 91 +++++++++++++++ mocks/api/SERVICE/digitalOutputsMockData.json | 14 +++ .../SERVICE/digitaleAusgaengeMockData.json | 2 +- .../SERVICE/digitalOutputsMockData.js | 2 + .../SERVICE/digitaleAusgaengeMockData.js | 2 +- package-lock.json | 4 +- package.json | 2 +- ...ler.ts => getDigitalOutputsJsonHandler.ts} | 4 +- pages/api/cpl/updateDigitalOutputsHandler.ts | 8 +- .../getDigitalOutputsDeviceMockHandler.ts | 47 ++++++++ .../SERVICE/updateDigitalOutputsHandler.ts | 48 ++++++++ public/CPL/SERVICE/digitalOutputs.js | 10 +- services/fetchDigitalOutputsService.ts | 105 +++++++++++------- 17 files changed, 401 insertions(+), 64 deletions(-) create mode 100644 docs/Architektur/CPL_DataHandling.md create mode 100644 docs/Architektur/README_digitalOutputs.md create mode 100644 mocks/api/SERVICE/digitalOutputsMockData.json create mode 100644 mocks/device-cgi-simulator/SERVICE/digitalOutputsMockData.js rename pages/api/cpl/{digitalOutputsAPIHandler.ts => getDigitalOutputsJsonHandler.ts} (86%) create mode 100644 pages/api/fake-cpl/SERVICE/getDigitalOutputsDeviceMockHandler.ts create mode 100644 pages/api/fake-cpl/SERVICE/updateDigitalOutputsHandler.ts diff --git a/.env.development b/.env.development index b642bec..c166c07 100644 --- a/.env.development +++ b/.env.development @@ -6,6 +6,5 @@ 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.417 -NEXT_PUBLIC_CPL_MODE=json # json (Entwicklungsumgebung) oder jsmock (CPL ->CGI-Interface-Simulator) oder production (CPL-> CGI-Interface Platzhalter) - +NEXT_PUBLIC_APP_VERSION=1.6.418 +NEXT_PUBLIC_CPL_MODE=json # json (Entwicklungsumgebung) oder jsmock (CPL ->CGI-Interface-Simulator) oder production (CPL-> CGI-Interface Platzhalter) \ No newline at end of file diff --git a/.env.production b/.env.production index 3120964..eea397f 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.417 +NEXT_PUBLIC_APP_VERSION=1.6.418 NEXT_PUBLIC_CPL_MODE=production \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index d3c86f0..66e939c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,26 @@ Alle Änderungen und Versionen des CPLv4.0 Frontends chronologisch dokumentiert. --- +## [1.6.417] – 2025-06-19 + +### Feature: Digitale Ausgänge vollständig implementiert (Lesen & Schreiben in 3 Modi) + +- Die Schaltausgänge (digitale Ausgänge) sind jetzt in allen Modi vollständig funktionsfähig: + - `json` (lokale Entwicklung mit editierbaren Mock-Daten) + - `jsmock` (Simulation durch JavaScript-Variablen im `window`-Objekt) + - `production` (Platzhalterersetzung über CGI durch das echte CPL-Gerät) +- Die API `/api/cpl/updateDigitalOutputsHandler` verarbeitet POST-Daten je nach Modus: + - In `json`: Speicherung in `digitalOutputsMockData.json` + - In `jsmock`: Live-Änderung in `digitalOutputsMockData.js` per Regex + - In `production`: Statusänderung über Redirect zu `/CPL?digitalOutputs.html&DAS0X=1` +- Die Datei `fetchDigitalOutputsService.ts` erkennt den aktiven Modus und lädt Daten kontextsensitiv +- Alle Werte werden über Redux bereitgestellt, die UI nutzt `useSelector()` zur Anzeige in `DigitalOutputsWidget.tsx` +- Mermaid-Dokumentation zur Architektur im Projekt ergänzt (`README_digitalOutputs_final.md`) + +Alle Änderungen und Versionen des CPLv4.0 Frontends chronologisch dokumentiert. + +--- + ## [1.6.407] – 2025-06-16 ### Feature: Kabelname statt Bezeichnung diff --git a/docs/Architektur/CPL_DataHandling.md b/docs/Architektur/CPL_DataHandling.md new file mode 100644 index 0000000..f853501 --- /dev/null +++ b/docs/Architektur/CPL_DataHandling.md @@ -0,0 +1,99 @@ +# 📦 Datenverarbeitung in CPL: JSON, jsmock, production + +Dieses Dokument beschreibt die Architektur zur Verarbeitung von Digitalausgängen (DA) im CPL-System unter verschiedenen Modi. + +## ✅ Unterstützte Modi + +- `json` – Entwicklung mit lokalen Mock-JSON-Dateien (editierbar) +- `jsmock` – Simulation des Geräts mit einer JS-Datei, die `window`-Variablen setzt +- `production` – Echte CPL-Hardware mit CGI-Platzhaltern (JS in HTML/JS-Dateien) + +--- + +## 🧩 Datenfluss-Überblick (UML Diagramm) + +```mermaid +flowchart TD + A[NEXT_PUBLIC_CPL_MODE] --> B{Modus} + + B -->|json| C[API: fetchDigitalOutputsAPIHandler] + C --> D[JSON-Datei (editable)] + + B -->|jsmock| E[fetchDigitalOutputsService()] + E --> F[