// components/WindowVariables/Initializer.tsx "use client"; import { useEffect } from "react"; import { useDispatch } from "react-redux"; import { setInputs } from "../redux/slices/digitalInputsSlice"; const WindowVariablesInitializer = () => { const dispatch = useDispatch(); useEffect(() => { const loadScriptsAndInitialize = async () => { try { // Beispielhafter Ladevorgang eines Skripts await loadScript("/CPLmockData/SERVICE/de.js"); // Zugriff auf window-Variablen nach dem Laden der Skripte const winDeState = window.win_de_state || []; const winDeLabel = window.win_de_label || []; const initialInputs = winDeState.map( (status: number, index: number) => ({ id: index + 1, label: winDeLabel[index] || `Eingang ${index + 1}`, status: status === 1, }) ); // Dispatch der Aktion zum Setzen der Inputs dispatch(setInputs(initialInputs)); } catch (error) { console.error( "Fehler beim Laden der Skripte oder Initialisieren der Inputs:", error ); } }; loadScriptsAndInitialize(); }, [dispatch]); return null; }; export default WindowVariablesInitializer; // Hilfsfunktion zum Laden eines Skripts const loadScript = (src: string): Promise => { return new Promise((resolve, reject) => { const script = document.createElement("script"); script.src = src; script.async = true; script.onload = () => resolve(); script.onerror = () => reject(new Error(`Fehler beim Laden des Skripts: ${src}`)); document.head.appendChild(script); }); };