feat: fetchKueData über Service & Redux integriert, Zugriff aus loadWindowVariables entfernt

- Alle KÜE-Daten (z. B. kueAlarm1, kueCableBreak, kuePSTmMinus96V etc.) über fetchKueData.ts geladen
- Redux Slice `kueDataSlice.ts` überarbeitet, um alle Werte aus kueData.js korrekt zu speichern
- Komponenten wie `Kue705FO`, `KabelModulStatus` und `Baugruppentraeger` auf Redux umgestellt
- Fehler bei undefined-Variablen durch korrekte Zuweisung aus Redux behoben
- loadWindowVariables.ts wird nicht mehr für KÜE-Daten verwendet
This commit is contained in:
Ismail Ali
2025-03-26 20:18:20 +01:00
parent d305a07f89
commit 626322b079
5 changed files with 88 additions and 84 deletions

View File

@@ -68,23 +68,17 @@ const Kue705FO: React.FC<Kue705FOProps> = ({
//------- Redux-Variablen abrufen--------------------------------
const {
pstMinus96V,
kueVersion: reduxKueVersion,
tdrActive,
kueCableBreak: kueCableBreakRaw,
kueGroundFault: kueGroundFaultRaw,
kueAlarm1: kueAlarm1Raw,
kueAlarm2: kueAlarm2Raw,
kueOverflow: kueOverflowRaw,
kuePSTmMinus96V, // <- richtig, weil so im State vorhanden
} = useSelector((state: RootState) => state.kueData);
const kueCableBreakRaw = useSelector(
(state: RootState) => state.kueData.cableBreak
);
const kueGroundFaultRaw = useSelector(
(state: RootState) => state.kueData.groundFault
);
const kueAlarm1Raw = useSelector((state: RootState) => state.kueData.alarm1);
const kueAlarm2Raw = useSelector((state: RootState) => state.kueData.alarm2);
const kueOverflowRaw = useSelector(
(state: RootState) => state.kueData.overflow
);
//---------------------------------------------
const kueCableBreak = useMemo(
() => kueCableBreakRaw?.map(Number) ?? [],
[kueCableBreakRaw]
@@ -126,7 +120,7 @@ const Kue705FO: React.FC<Kue705FOProps> = ({
);
const isoDisplayValue = useIsoDisplay(
slotIndex,
pstMinus96V,
kuePSTmMinus96V,
kueCableBreak,
kueGroundFault,
kueAlarm1,
@@ -231,7 +225,7 @@ const Kue705FO: React.FC<Kue705FOProps> = ({
<div className="text-center">
<span
className={
Number(pstMinus96V?.[slotIndex]) === 1 ||
Number(kuePSTmMinus96V?.[slotIndex]) === 1 ||
Number(kueCableBreak?.[slotIndex]) === 1 ||
Number(kueGroundFault?.[slotIndex]) === 1 ||
Number(kueAlarm1?.[slotIndex]) === 1 ||
@@ -245,7 +239,7 @@ const Kue705FO: React.FC<Kue705FOProps> = ({
{isoDisplayValue}
</span>
{Number(pstMinus96V?.[slotIndex]) !== 1 &&
{Number(kuePSTmMinus96V?.[slotIndex]) !== 1 &&
Number(kueCableBreak?.[slotIndex]) !== 1 &&
Number(kueGroundFault?.[slotIndex]) !== 1 &&
Number(kueAlarm1?.[slotIndex]) !== 1 &&

View File

@@ -6,5 +6,5 @@
2: Patch oder Hotfix (Bugfixes oder kleine Änderungen).
*/
const webVersion = "1.6.170";
const webVersion = "1.6.171";
export default webVersion;

View File

@@ -1,3 +1,4 @@
// /public/CPLmockData/SERVICE/kueData.js
//Modul vorhanden 1 = vorhanden, 0 = nicht vorhanden
var win_kueOnline = [
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

View File

@@ -1,41 +1,60 @@
// ✅ Slice: /redux/slices/kueDataSlice.ts
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
interface KueDataState {
kueOnline: number[];
kueID: string[];
pstMinus96V: number[];
alarm1: number[];
alarm2: number[];
iso: number[];
residence: number[];
cableBreak: number[];
groundFault: number[];
limit1: number[];
limit2Low: number[];
delay1: number[];
loopInterval: number[];
kuePSTmMinus96V: number[];
kueAlarm1: number[];
kueAlarm2: number[];
kueIso: number[];
kueResidence: number[];
kueCableBreak: number[];
kueGroundFault: number[];
kueLimit1: number[];
kueLimit2Low: number[];
kueDelay1: number[];
kueLoopInterval: number[];
kueVersion: number[];
overflow: number[];
kueOverflow: number[];
tdrAtten: number[];
tdrPulse: number[];
tdrSpeed: number[];
tdrAmp: number[];
tdrTrigger: number[];
tdrLocation: number[];
tdrActive: number[];
tdrLast: string[];
tdrOverflow: number[];
}
const initialState: KueDataState = {
kueOnline: [],
kueID: [],
pstMinus96V: [],
alarm1: [],
alarm2: [],
iso: [],
residence: [],
cableBreak: [],
groundFault: [],
limit1: [],
limit2Low: [],
delay1: [],
loopInterval: [],
kuePSTmMinus96V: [],
kueAlarm1: [],
kueAlarm2: [],
kueIso: [],
kueResidence: [],
kueCableBreak: [],
kueGroundFault: [],
kueLimit1: [],
kueLimit2Low: [],
kueDelay1: [],
kueLoopInterval: [],
kueVersion: [],
overflow: [],
kueOverflow: [],
tdrAtten: [],
tdrPulse: [],
tdrSpeed: [],
tdrAmp: [],
tdrTrigger: [],
tdrLocation: [],
tdrActive: [],
tdrLast: [],
tdrOverflow: [],
};
const kueDataSlice = createSlice({

View File

@@ -1,61 +1,51 @@
// /services/fetchKueData.ts
// ✅ Service: /services/fetchKueData.ts
export const fetchKueData = async () => {
try {
if (typeof window === "undefined") return null;
// ✅ Script dynamisch laden
// ✅ Nur bei Bedarf nachladen
await new Promise<void>((resolve, reject) => {
const script = document.createElement("script");
const env = process.env.NEXT_PUBLIC_NODE_ENV;
script.src =
env === "production"
? "/CPL?/CPL/SERVICE/kueData.js"
: "/CPLmockData/SERVICE/kueData.js";
script.src = "/CPLmockData/SERVICE/kueData.js"; // In Produktion ggf. /CPL/SERVICE/kueData.js
script.async = true;
script.onload = () => resolve();
script.onerror = () => reject("Fehler beim Laden von kueData.js");
script.onerror = () => reject("Fehler beim Laden von kueData.js");
document.body.appendChild(script);
});
const win = window as any;
// ✅ Alle benötigten Variablen extrahieren
const keys = [
"kueOnline",
"kueID",
"kuePSTmMinus96V",
"kueAlarm1",
"kueAlarm2",
"kueIso",
"kueResidence",
"kueCableBreak",
"kueGroundFault",
"kueLimit1",
"kueLimit2Low",
"kueDelay1",
"kueLoopInterval",
"kueVersion",
"tdrAtten",
"tdrPulse",
"tdrSpeed",
"tdrAmp",
"tdrTrigger",
"tdrLocation",
"tdrActive",
"kueOverflow",
"tdrLast",
];
return {
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 || [],
const result: Record<string, any> = {};
for (const key of keys) {
const winKey = `win_${key}`;
result[key] = win[winKey] ?? [];
}
return result;
// TDR-Daten
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 || [],
};
} catch (error) {
console.error("❌ Fehler beim Laden der KUE-Daten:", error);
console.error("❌ Fehler beim Laden der KÜE-Daten:", error);
return null;
}
};