fix: Die Daten (.js) Kabelüberwachungsseite aktualisieren sich zwar alle paar Sekunden aber die Darstellung des BGT bleibt unverändert.

Bei der Kabelüberwachungsseite werden auch die analoge und digitale Eingänge geladen
This commit is contained in:
ISA
2025-05-12 16:17:40 +02:00
parent c3de2ab3a9
commit 959b0b1ec2
2 changed files with 70 additions and 30 deletions

View File

@@ -1,38 +1,43 @@
// /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<Record<string, any>> {
export async function loadWindowVariables(): Promise<{
variables: Record<string, any>;
kueData?: Record<string, any>;
}> {
return new Promise((resolve, reject) => {
const requiredVars: string[] = ["win_deviceName"];
const isDev = window.location.hostname === "localhost";
const pathname = window.location.pathname;
// ✅ 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
];
const scripts: string[] = [];
// ✅ Erkenne Umgebung anhand von `window.location.hostname`
if (pathname.includes("kabelueberwachung")) {
scripts.push(isDev ? "kabelueberwachungAPIHandler" : "kueData.js");
} else if (pathname.includes("digitalInputs")) {
scripts.push(isDev ? "digitaleEingaengeAPIHandler" : "de.js");
} else if (pathname.includes("digitalOutputs")) {
scripts.push(isDev ? "digitalOutputsAPIHandler" : "da.js");
} else if (pathname.includes("analogeEingaenge")) {
scripts.push(isDev ? "analogeEingaengeAPIHandler" : "ae.js");
} else if (pathname.includes("dashboard")) {
scripts.push(
isDev ? "last20MessagesAPIHandler" : "start.js",
isDev ? "opcuaAPIHandler" : "opcua.js"
);
} else if (pathname.includes("einstellungen")) {
scripts.push(isDev ? "opcuaAPIHandler" : "opcua.js");
}
scripts.push(isDev ? "systemAPIHandler" : "system.js");
const loadScript = (src: string): Promise<void> => {
return new Promise((resolve, reject) => {
const script = document.createElement("script");
script.src = isDev
? `/api/cpl/${src}` // Entwicklungsumgebung
: `/CPL?/CPL/SERVICE/${src}`; // Produktionsumgebung
script.src = isDev ? `/api/cpl/${src}` : `/CPL?/CPL/SERVICE/${src}`;
script.async = true;
script.onload = () => resolve();
script.onerror = () => reject(new Error(`Script load error: ${src}`));
@@ -40,7 +45,6 @@ export async function loadWindowVariables(): Promise<Record<string, any>> {
});
};
// ✅ Lade alle Skripte nacheinander
scripts
.reduce(
(promise, script) => promise.then(() => loadScript(script)),
@@ -49,7 +53,6 @@ export async function loadWindowVariables(): Promise<Record<string, any>> {
.then(() => {
const win = window as unknown as CustomWindow;
// ✅ Erstelle ein Objekt mit allen geladenen Variablen
const variablesObj: Record<string, any> = requiredVars.reduce(
(acc, variable) => {
if (win[variable] !== undefined) {
@@ -60,7 +63,38 @@ export async function loadWindowVariables(): Promise<Record<string, any>> {
{}
);
resolve(variablesObj);
const kueData =
pathname.includes("kabelueberwachung") && typeof win === "object"
? {
kueOnline: win.win_kueOnline || [],
kueID: win.win_kueID || [],
kuePSTmMinus96V: win.win_kuePSTmMinus96V || [],
kueAlarm1: win.win_kueAlarm1 || [],
kueAlarm2: win.win_kueAlarm2 || [],
kueIso: win.win_kueIso || [],
kueResidence: win.win_kueResidence || [],
kueCableBreak: win.win_kueCableBreak || [],
kueGroundFault: win.win_kueGroundFault || [],
kueLimit1: win.win_kueLimit1 || [],
kueLimit2Low: win.win_kueLimit2Low || [],
kueDelay1: win.win_kueDelay1 || [],
kueLoopInterval: win.win_kueLoopInterval || [],
kueVersion: win.win_kueVersion || [],
kueOverflow: win.win_kueOverflow || [],
tdrAtten: win.win_tdrAtten || [],
tdrPulse: win.win_tdrPulse || [],
tdrSpeed: win.win_tdrSpeed || [],
tdrAmp: win.win_tdrAmp || [],
tdrTrigger: win.win_tdrTrigger || [],
tdrLocation: win.win_tdrLocation || [],
tdrActive: win.win_tdrActive || [],
tdrLast: win.win_tdrLast || [],
tdrOverflow: win.win_kueOverflow || [],
memoryInterval: win.win_memoryInterval || [],
}
: undefined;
resolve({ variables: variablesObj, kueData });
})
.catch((error) => {
console.error("❌ Fehler beim Laden eines Skripts:", error);