feat: Digitale Ausgänge aus Redux-Store in UI integriert

- 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
This commit is contained in:
Ismail Ali
2025-02-23 22:31:06 +01:00
parent 1449dd458d
commit 65cfb033a5
9 changed files with 162 additions and 59 deletions

View File

@@ -10,6 +10,7 @@ import {
addOpcUaUser,
removeOpcUaUser,
} from "../redux/slices/opcuaSettingsSlice";
import { setDigitalOutputs } from "../redux/slices/digitalOutputsSlice";
// ✅ Interface für `window`-Objekt zur TypeScript-Sicherheit
interface CustomWindow extends Window {
@@ -234,3 +235,32 @@ const loadAndStoreOpcUaSettings = (win: CustomWindow) => {
});
}
};
// ✅ Funktion zum Speichern der digitalen Ausgänge in Redux
const loadAndStoreDigitalOutputs = (win: CustomWindow) => {
console.log("Prüfe digitale Ausgänge in window:");
console.log("win_da_state:", win.win_da_state);
console.log("win_da_bezeichnung:", win.win_da_bezeichnung);
if (
Array.isArray(win.win_da_state) &&
Array.isArray(win.win_da_bezeichnung) &&
win.win_da_state.length === win.win_da_bezeichnung.length
) {
const digitalOutputs = win.win_da_state.map(
(status: number, index: number) => ({
id: index + 1,
label: win.win_da_bezeichnung[index] || `Ausgang ${index + 1}`,
status: status === 1, // Status in Boolean umwandeln
})
);
console.log("Dispatching digitalOutputs:", digitalOutputs);
store.dispatch(setDigitalOutputs(digitalOutputs));
} else {
console.warn("Digitale Ausgänge konnten nicht geladen werden:", {
da_state: win.win_da_state,
da_bezeichnung: win.win_da_bezeichnung,
});
}
};