"use client"; import { useEffect } from "react"; import { useDispatch, useSelector } from "react-redux"; import { RootState } from "../../redux/store"; import { setDigitalOutputs } from "../../redux/slices/digitalOutputsSlice"; // Typ für digitale Ausgänge interface DigitalOutput { id: number; label: string; status: boolean; } export function useDigitalOutputs() { const dispatch = useDispatch(); const digitalOutputs = useSelector( (state: RootState) => state.digitalOutputs?.outputs ?? [] ); const isLoading = digitalOutputs.length === 0; useEffect(() => { console.log("Lade da.js für digitale Ausgänge..."); const script = document.createElement("script"); script.src = "/CPLmockData/SERVICE/da.js"; script.async = true; script.onload = () => { console.log("Skript geladen. Überprüfe window-Variablen:"); console.log("win_da_state:", window.win_da_state); console.log("win_da_bezeichnung:", window.win_da_bezeichnung); const da = window.win_da_state; const bezeichnungen = window.win_da_bezeichnung; if ( Array.isArray(da) && Array.isArray(bezeichnungen) && da.length === bezeichnungen.length ) { const outputs: DigitalOutput[] = da.map( (status: number, index: number) => ({ id: index + 1, label: bezeichnungen[index] || `Ausgang ${index + 1}`, status: status === 1, }) ); console.log("Dispatching setDigitalOutputs mit Werten:", outputs); dispatch(setDigitalOutputs(outputs)); } else { console.error("Digitale Ausgänge konnten nicht geladen werden.", { da_state: da, da_bezeichnung: bezeichnungen, }); } }; script.onerror = () => { console.error("Fehler beim Laden der da.js-Datei."); }; document.body.appendChild(script); return () => { document.body.removeChild(script); }; }, [dispatch]); return { digitalOutputs, isLoading }; }