121 lines
3.4 KiB
TypeScript
121 lines
3.4 KiB
TypeScript
// utils/loadWindowVariables.ts
|
|
interface WindowVariables {
|
|
[key: string]: any; // Allgemeiner Typ für die Dynamik, kann spezifischer angepasst werden, falls bekannt
|
|
}
|
|
|
|
export async function loadWindowVariables(): Promise<WindowVariables> {
|
|
return new Promise((resolve, reject) => {
|
|
const requiredVars: string[] = [
|
|
"win_last20Messages",
|
|
"win_deviceName",
|
|
"win_mac1",
|
|
"win_ip",
|
|
"win_subnet",
|
|
"win_gateway",
|
|
"win_cplInternalTimestamp",
|
|
"win_ntp1",
|
|
"win_ntp2",
|
|
"win_ntp3",
|
|
"win_systemZeit",
|
|
"win_ntpTimezone",
|
|
"win_ntpActive",
|
|
"win_de_state",
|
|
"win_counter",
|
|
"win_flutter",
|
|
"win_kueOnline",
|
|
"win_kueID",
|
|
"win_kuePSTmMinus96V",
|
|
"win_kueAlarm1",
|
|
"win_kueAlarm2",
|
|
"win_kueIso",
|
|
"win_kueResidence",
|
|
"win_kueCableBreak",
|
|
"win_kueGroundFault",
|
|
"win_kueLimit1",
|
|
"win_kueLimit2Low",
|
|
"win_kueDelay1",
|
|
"win_kueLoopInterval",
|
|
"win_kueVersion",
|
|
"win_tdrAtten",
|
|
"win_tdrPulse",
|
|
"win_tdrSpeed",
|
|
"win_tdrAmp",
|
|
"win_tdrTrigger",
|
|
"win_tdrLocation",
|
|
"win_tdrActive",
|
|
"win_kueOverflow",
|
|
"win_tdrLast",
|
|
"win_appVersion",
|
|
"win_analogeEingaenge1",
|
|
"win_analogeEingaenge2",
|
|
"win_analogeEingaenge3",
|
|
"win_analogeEingaenge4",
|
|
"win_analogeEingaenge5",
|
|
"win_analogeEingaenge6",
|
|
"win_analogeEingaenge7",
|
|
"win_analogeEingaenge8",
|
|
"win_opcUaZustand",
|
|
"win_opcUaActiveClientCount",
|
|
"win_opcUaNodesetName",
|
|
"win_da_state",
|
|
"win_da_bezeichnung",
|
|
];
|
|
|
|
const loadScript = (src: string): Promise<void> => {
|
|
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(new Error(`Script load error: ${src}`));
|
|
document.head.appendChild(script);
|
|
});
|
|
};
|
|
|
|
const scripts: string[] = [
|
|
"da.js",
|
|
"de.js",
|
|
"ae.js",
|
|
"kueData.js",
|
|
"Start.js",
|
|
"System.js",
|
|
"opcua.js",
|
|
];
|
|
|
|
scripts
|
|
.reduce(
|
|
(promise, script) => promise.then(() => loadScript(script)),
|
|
Promise.resolve()
|
|
)
|
|
.then(() => {
|
|
const variablesObj: WindowVariables = requiredVars.reduce(
|
|
(acc: WindowVariables, variable: string) => {
|
|
// Prüfe, ob die Variable auf dem window-Objekt existiert
|
|
const winVar = (window as any)[variable];
|
|
if (winVar !== undefined) {
|
|
// Wenn es sich um kueID handelt, ersetze %20 durch Leerzeichen
|
|
if (variable === "win_kueID" && Array.isArray(winVar)) {
|
|
acc[variable.replace("win_", "")] = winVar.map((id: string) =>
|
|
id.replace(/%20/g, " ")
|
|
);
|
|
} else {
|
|
acc[variable.replace("win_", "")] = winVar;
|
|
}
|
|
}
|
|
return acc;
|
|
},
|
|
{}
|
|
);
|
|
resolve(variablesObj);
|
|
})
|
|
.catch((error) => {
|
|
console.error("Fehler beim Laden eines Skripts:", error);
|
|
reject(error);
|
|
});
|
|
});
|
|
}
|