From 959b0b1ec2688a9768b8cee75fab847a0db63209 Mon Sep 17 00:00:00 2001 From: ISA Date: Mon, 12 May 2025 16:17:40 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20Die=20Daten=20(.js)=20Kabel=C3=BCberwach?= =?UTF-8?q?ungsseite=20aktualisieren=20sich=20zwar=20alle=20paar=20Sekunde?= =?UTF-8?q?n=20aber=20die=20Darstellung=20des=20BGT=20bleibt=20unver=C3=A4?= =?UTF-8?q?ndert.=20Bei=20der=20Kabel=C3=BCberwachungsseite=20werden=20auc?= =?UTF-8?q?h=20die=20analoge=20und=20digitale=20Eing=C3=A4nge=20geladen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/_app.tsx | 20 +++++---- utils/loadWindowVariables.ts | 80 +++++++++++++++++++++++++----------- 2 files changed, 70 insertions(+), 30 deletions(-) diff --git a/pages/_app.tsx b/pages/_app.tsx index eb999b9..90a7878 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -8,6 +8,7 @@ import { loadWindowVariables } from "../utils/loadWindowVariables"; import Header from "../components/header/Header"; import Navigation from "../components/navigation/Navigation"; import Footer from "../components/footer/Footer"; +import { setKueData } from "../redux/slices/kueDataSlice"; import "../styles/globals.css"; import { AppProps } from "next/app"; @@ -25,14 +26,17 @@ function AppContent({ Component, pageProps }: AppProps) { const [sessionExpired, setSessionExpired] = useState(false); useEffect(() => { + let intervalId: NodeJS.Timeout; + const loadAndStoreVariables = async () => { try { - const variables = await loadWindowVariables(); + const { variables, kueData } = await loadWindowVariables(); if (!variables) throw new Error("Sitzungsfehler"); - //console.log("✅ Window-Variablen geladen:", variables); - - const { ...restVariables } = variables; + // Nur auf kabelueberwachung.html Redux aktualisieren + if (window.location.pathname.includes("kabelueberwachung")) { + dispatch(setKueData(kueData)); + } setSessionExpired(false); } catch (error) { @@ -44,13 +48,15 @@ function AppContent({ Component, pageProps }: AppProps) { if (typeof window !== "undefined") { loadAndStoreVariables(); - const intervalId = setInterval(loadAndStoreVariables, 10000); + // Nur auf kabelueberwachung.html regelmäßig aktualisieren + if (window.location.pathname.includes("kabelueberwachung")) { + intervalId = setInterval(loadAndStoreVariables, 10000); + } + return () => clearInterval(intervalId); } }, []); - //--------------------------------------------------------- - return (
diff --git a/utils/loadWindowVariables.ts b/utils/loadWindowVariables.ts index 355af79..a71ab1a 100644 --- a/utils/loadWindowVariables.ts +++ b/utils/loadWindowVariables.ts @@ -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> { +export async function loadWindowVariables(): Promise<{ + variables: Record; + kueData?: Record; +}> { 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 => { 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> { }); }; - // ✅ Lade alle Skripte nacheinander scripts .reduce( (promise, script) => promise.then(() => loadScript(script)), @@ -49,7 +53,6 @@ export async function loadWindowVariables(): Promise> { .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) { @@ -60,7 +63,38 @@ export async function loadWindowVariables(): Promise> { {} ); - 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);