Files
CPLv4.0/components/WindowVariablesInitializer.tsx
ISA c55f0e7fe5 feat: Umgebungsspezifisches Laden von Datenquellen implementiert
- Alle fetch-Services (TDM, TDR, analoge/digitale Eingänge/Ausgänge, SystemSettings usw.) angepasst,
  um `NEXT_PUBLIC_NODE_ENV` zu verwenden.
- Entwicklungsumgebung lädt Daten aus /CPLmockData/...
- Produktionsumgebung verwendet echte Endpunkte mit /CPL?/CPL/...
- .env.production und .env.development korrekt berücksichtigt
- loadWindowVariables, WindowVariablesInitializer und verwandte Dateien bereinigt
- Mockdaten erscheinen nicht mehr versehentlich in Produktionsumgebung
2025-03-27 11:03:23 +01:00

61 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 {
const isDevelopment = window.location.hostname === "localhost";
const scriptPath = isDevelopment
? "/CPLmockData/SERVICE/de.js"
: "/CPL/SERVICE/de.js";
await loadScript(scriptPath);
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(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);
});
};