// utils/loadWindowVariables.js export async function loadWindowVariables() { return new Promise((resolve, reject) => { const requiredVars = [ "last20Messages", "deviceName", "mac1", "mac2", "ip", "subnet", "gateway", "datetime", "de", "counter", "flutter", "kueOnline", "kueID", "kueAlarm1", "kueAlarm2", "kueRes", "kueCableBreak", "kueGroundFault", "kueLimit1", "kueLimit2Low", "kueDelay1", "kueLoopInterval", "kueVersion", "tdrAtten", "tdrPulse", "tdrSpeed", "tdrAmp", "tdrTrigger", "tdrLocation", "tdrActive", "kueOverflow", "kueResidence", "tdrLast", "appVersion", ]; const loadScript = (src) => { return new Promise((resolve, reject) => { const script = document.createElement("script"); const environment = process.env.NEXT_PUBLIC_NODE_ENV || "production"; script.src = environment === "production" ? `/CPL?/CPL/SERVICE/${src}` : `/CPLmockData/SERVICE/${src}`; script.async = true; script.onload = resolve; script.onerror = reject; document.head.appendChild(script); }); }; const scripts = ["de.js", "kueData.js", "Start.js", "System.js"]; // Lade die Skripte nacheinander scripts .reduce((promise, script) => { return promise.then(() => loadScript(script)); }, Promise.resolve()) .then(() => { const checkVariables = () => { const missingVars = requiredVars.filter( (variable) => window[variable] === undefined ); return missingVars; }; // Einmalige Überprüfung nach dem Laden aller Skripte const initialMissingVars = checkVariables(); if (initialMissingVars.length === 0) { console.log( "Alle Variablen von CPL geladen. in loadWindowVariables.js" ); resolve(); } else { console.log( "Noch fehlende Variablen beim ersten Aufruf:", initialMissingVars ); // Falls Variablen fehlen, starte ein Intervall zur wiederholten Überprüfung const maxChecks = 10; let checkCount = 0; const checkInterval = setInterval(() => { const remainingMissingVars = checkVariables(); if (remainingMissingVars.length === 0) { clearInterval(checkInterval); console.log("Alle fehlenden Systemvariablen sind jetzt geladen."); resolve(); } else if (checkCount >= maxChecks) { clearInterval(checkInterval); console.warn( "Einige Variablen wurden nicht geladen:", remainingMissingVars ); reject( new Error( "Einige Variablen fehlen nach wiederholten Versuchen." ) ); } else { console.log("Noch fehlende Variablen:", remainingMissingVars); } checkCount++; }, 10000); // Überprüfung alle 10 Sekunden } }) .catch((error) => { console.error("Fehler beim Laden eines Skripts:", error); reject(error); }); }); }