59 lines
1.7 KiB
TypeScript
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);
|
|
});
|
|
};
|