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

View File

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

View File

@@ -1,3 +1,4 @@
// /public/CPLmockData/SERVICE/kueData.js
//Modul vorhanden 1 = vorhanden, 0 = nicht vorhanden //Modul vorhanden 1 = vorhanden, 0 = nicht vorhanden
var win_kueOnline = [ 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, 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 // ✅ Slice: /redux/slices/kueDataSlice.ts
import { createSlice, PayloadAction } from "@reduxjs/toolkit"; import { createSlice, PayloadAction } from "@reduxjs/toolkit";
interface KueDataState { interface KueDataState {
kueOnline: number[]; kueOnline: number[];
kueID: string[]; kueID: string[];
pstMinus96V: number[]; kuePSTmMinus96V: number[];
alarm1: number[]; kueAlarm1: number[];
alarm2: number[]; kueAlarm2: number[];
iso: number[]; kueIso: number[];
residence: number[]; kueResidence: number[];
cableBreak: number[]; kueCableBreak: number[];
groundFault: number[]; kueGroundFault: number[];
limit1: number[]; kueLimit1: number[];
limit2Low: number[]; kueLimit2Low: number[];
delay1: number[]; kueDelay1: number[];
loopInterval: number[]; kueLoopInterval: number[];
kueVersion: 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 = { const initialState: KueDataState = {
kueOnline: [], kueOnline: [],
kueID: [], kueID: [],
pstMinus96V: [], kuePSTmMinus96V: [],
alarm1: [], kueAlarm1: [],
alarm2: [], kueAlarm2: [],
iso: [], kueIso: [],
residence: [], kueResidence: [],
cableBreak: [], kueCableBreak: [],
groundFault: [], kueGroundFault: [],
limit1: [], kueLimit1: [],
limit2Low: [], kueLimit2Low: [],
delay1: [], kueDelay1: [],
loopInterval: [], kueLoopInterval: [],
kueVersion: [], kueVersion: [],
overflow: [], kueOverflow: [],
tdrAtten: [],
tdrPulse: [],
tdrSpeed: [],
tdrAmp: [],
tdrTrigger: [],
tdrLocation: [],
tdrActive: [],
tdrLast: [],
tdrOverflow: [],
}; };
const kueDataSlice = createSlice({ const kueDataSlice = createSlice({

View File

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