// /utils/loadWindowVariables.ts // ✅ Interface für `window`-Objekt zur TypeScript-Sicherheit interface CustomWindow extends Window { [key: string]: any; } // ✅ Hauptfunktion zum Laden von `window`-Variablen export async function loadWindowVariables(): Promise> { return new Promise((resolve, reject) => { const requiredVars: string[] = ["win_deviceName"]; const isDev = window.location.hostname === "localhost"; // ✅ Skripte, die geladen werden müssen const scripts: string[] = [ isDev ? "analogeEingaengeAPIHandler" : "ae.js", isDev ? "digitaleEingaengeAPIHandler" : "de.js", //isDev ? "digitalOutputsAPIHandler" : "da.js", // das wird Momentan nicht gebraucht isDev ? "kabelueberwachungAPIHandler" : "kueData.js", isDev ? "last20MessagesAPIHandler" : "start.js", isDev ? "opcuaAPIHandler" : "opcua.js", //isDev ? "slotDataAPIHandler" : "slotData.js", // das wird Momentan nicht gebraucht isDev ? "systemAPIHandler" : "system.js", //isDev ? "tdmDataAPIHandler" : "tdmData.js", // das wird Momentan nicht gebraucht //isDev ? "tdrDataAPIHandler" : "tdrData.js", // das wird Momentan nicht gebraucht ]; // ✅ Erkenne Umgebung anhand von `window.location.hostname` const loadScript = (src: string): Promise => { return new Promise((resolve, reject) => { const script = document.createElement("script"); script.src = isDev ? `/api/cpl/${src}` // Entwicklungsumgebung : `/CPL?/CPL/SERVICE/${src}`; // Produktionsumgebung script.async = true; script.onload = () => resolve(); script.onerror = () => reject(new Error(`Script load error: ${src}`)); document.head.appendChild(script); }); }; // ✅ Lade alle Skripte nacheinander scripts .reduce( (promise, script) => promise.then(() => loadScript(script)), Promise.resolve() ) .then(() => { const win = window as unknown as CustomWindow; // ✅ Erstelle ein Objekt mit allen geladenen Variablen const variablesObj: Record = requiredVars.reduce( (acc, variable) => { if (win[variable] !== undefined) { acc[variable.replace("win_", "")] = win[variable]; } return acc; }, {} ); resolve(variablesObj); }) .catch((error) => { console.error("❌ Fehler beim Laden eines Skripts:", error); reject(error); }); }); }