- API-Handler `updateDigitalOutputsHandler` überarbeitet:
- JSON-Dateien werden jetzt korrekt im gültigen Format gespeichert (`{ key: value }`)
- Schreibzugriff im production-Modus blockiert
- JS-Mock-Struktur vorbereitet (noch nicht aktiv getestet)
- Verzeichnisstruktur vereinheitlicht:
- JSON-Mocks unter `/mocks/api/SERVICE/`
- CGI-Platzhalter unter `/public/CPL/`
- JSMock-Ordner für CPL-Simulation vorbereitet (`/mocks/js-simulator/`)
- README.md um Betriebsmodi erweitert (`NEXT_PUBLIC_CPL_MODE` mit `json`, `jsmock`, `production`)
- `.env`-Dateien angepasst zur besseren Modussteuerung
- Platzhalter in da.js auf neue Struktur (DAS1–DAS4, DAN1–DAN4) umgestellt
- fetchDigitalOutputsService liest Werte dynamisch über da.js vom CPL-Webserver
- Schreibvorgänge via window.location.href mit CGI-Parametern (DASx=, DANx=)
- Umschaltlogik zwischen Entwicklungs- und Produktionsmodus eingebaut
- Modal-Speichern aktualisiert sowohl Status als auch Bezeichnung per CGI
- Unterstützung für lokale Mockdaten über API bleibt bestehen
- Anpassungen an laptop, xl, 2xl eingeführt
- Konsistente Darstellung bei Meldungseingängen und Schaltausgängen
- Offline-fähige lokale Icon-Imports für alle Symbole
- Icons input, login, output und switch lokal installiert und verwendet
- Keine Internet-Abhängigkeit mehr für Icon-Anzeige
- Projekt ist vollständig offlinefähig
- Elemente bei Breakpoint 'laptop' (1350px) kleiner dargestellt
- Textgrößen, Icongrößen und Abstände angepasst
- Bessere Übersichtlichkeit bei Laptop-Auflösungen
- Änderungen (Name, Invertierung, Filterzeit, Gewichtung, Zähler aktiv) werden einzeln erkannt
- Pro Änderung wird jeweils ein separater CGI-Request gesendet (z. B. DEN1=..., DEI1=...)
- Verbesserte Trennung zwischen Entwicklungs- und Produktionsumgebung
- Tooltip-Text erscheint bei Mouseover über Symbol
- Unterscheidung: Eingang inaktiv (✖), Eingang Aus (● rot), Eingang Ein (● grün)
- Position des Tooltips mit translate-x-4 und translate-y-4 optimiert
- isInitialLoad hinzugefügt, um Eingabefelder nur beim ersten Öffnen zu initialisieren
- verhindert, dass Hintergrundaktualisierungen durch Redux (fetchThunk) die Benutzereingaben überschreiben
- saubere Rücksetzung von Zustand bei Modal-Schließen
- Icon-Größe abhängig von Breakpoints umgesetzt
- Standardmäßig klein auf Laptop
- Ab xl größer, ab 2xl noch größer
- bessere Darstellung auf allen Auflösungen
Anzeige ist rot wenn Status=1 ist. Die Farbe ist nicht abhängig von der Invertierung.
Status Invertierung Anzeige
1 1 🔴 rot
1 0 🔴 rot
0 1 ✅ grün
0 0 ✅ grün
- Renamed all slice names (createSlice `name` attribute) to match their file names (e.g. loopChartSlice, authSlice, kueDataSlice etc.)
- Updated `store.ts` to register each reducer with consistent key names (e.g. state.loopChartSlice instead of state.loopChart)
- Adjusted all `useSelector` and Redux state accesses across the codebase
- Improves maintainability, searchability and consistency across files and Redux DevTools
- `fetchDigitaleEingaengeThunk.ts` erstellt, um digitale Eingänge in Redux zu speichern.
- `fetchDigitaleEingaenge.ts` erstellt, um API-Daten aus `de.js` zu laden.
- `digitalInputsSlice.ts` hinzugefügt, um digitale Eingänge in Redux zu verwalten.
- `DigitalInputs.tsx` überarbeitet: Zwei Tabellen für digitale Eingänge hinzugefügt.
- Sicherstellung, dass Redux-Thunk nur im Client (`useEffect`) ausgeführt wird.
- API-Calls werden nun alle 10 Sekunden aktualisiert.
✅ Jetzt läuft Redux-Thunk stabil & effizient für digitale Eingänge!
- DigitalOutputs.tsx auf Redux umgestellt, um Werte direkt aus dem Store zu lesen
- toggleSwitch-Funktion angepasst, um den Status von digitalen Ausgängen in Redux zu aktualisieren
- useDigitalOutputsData.ts nutzt nun Redux zum Speichern der `win_da_state` und `win_da_bezeichnung` Werte
- Entfernen von Prop `digitalOutputs` in `DigitalOutputs.tsx`, da Redux nun als Datenquelle dient
- Weboberfläche zeigt nun digitale Ausgänge korrekt an und Status kann geändert werden