Files
CPLv4.0/utils/loadWindowVariables.js
ISA 26588ff104 feat: Optimierte Datenladegeschwindigkeit durch initialen Direktaufruf in loadWindowVariables
- Erstaufruf von loadWindowVariables.js außerhalb des Intervalls hinzugefügt, um Variablen schneller zu laden.
- Intervall zur Variablenüberprüfung nur gestartet, wenn beim Erstaufruf noch Variablen fehlen.
- Verbessert die Ladezeit und stellt sicher, dass alle benötigten Variablen frühzeitig verfügbar sind.
2024-10-27 11:55:37 +01:00

103 lines
2.8 KiB
JavaScript

// 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",
"kueValid",
"kueAlarm1",
"kueAlarm2",
"kueRes",
"kueCableBreak",
"kueGroundFault",
"kueLimit1",
"kueLimit2Low",
"kueLimit2High",
"kueDelay1",
"kueLoopInterval",
"kueVersion",
"tdrAtten",
"tdrPulse",
"tdrSpeed",
"tdrAmp",
"tdrTrigger",
"tdrLocation",
"tdrActive",
"kueOverflow",
"kue100V",
"kueResidence",
"tdrLast",
"kueBooting",
"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"];
// Erster Aufruf zum Laden aller Skripte
Promise.all(scripts.map(loadScript))
.then(() => {
// Einmaliger direkter Check, ob alle Variablen vorhanden sind
const missingVarsInitial = requiredVars.filter(
(variable) => window[variable] === undefined
);
if (missingVarsInitial.length === 0) {
// Alle Variablen sind geladen, keine weiteren Checks notwendig
console.log("Alle Systemvariablen beim ersten Aufruf geladen.");
resolve();
} else {
console.log(
"Noch fehlende Variablen beim ersten Aufruf:",
missingVarsInitial
);
// Falls Variablen fehlen, starte das Intervall
const checkInterval = setInterval(() => {
const missingVars = requiredVars.filter(
(variable) => window[variable] === undefined
);
if (missingVars.length === 0) {
clearInterval(checkInterval);
console.log("Alle fehlenden Systemvariablen sind jetzt geladen.");
resolve();
} else {
console.log("Noch fehlende Variablen:", missingVars);
}
}, 5000); // Überprüfung alle 5 Sekunden
}
})
.catch((error) => {
console.error("Fehler beim Laden eines Skripts:", error);
reject(error);
});
});
}