Files
CPLv4.0/components/WindowVariablesInitializer.tsx

59 lines
1.7 KiB
TypeScript

// components/WindowVariables/WindowVariablesInitializer.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<void> => {
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);
});
};