fix: ensure dynamic reloading of kueData.js to update alarm status in real-time

- Implemented conditional check before removing existing kueData.js script to avoid NotFoundError.
- Added dynamic script reloading to fetch the latest alarm status without browser refresh.
- Improved update mechanism for alarm status based on latest kueData.js values.
This commit is contained in:
ISA
2024-10-26 13:24:14 +02:00
parent 8b0f9fe446
commit 7fb289abf3
3 changed files with 265 additions and 47 deletions

View File

@@ -15,6 +15,7 @@ function Kue705FO({
tdrLocation,
alarmStatus,
}) {
const [currentAlarmStatus, setCurrentAlarmStatus] = useState(false);
const [currentModulName, setCurrentModulName] = useState(modulName);
const [activeButton, setActiveButton] = useState("Schleife");
const [displayText, setDisplayText] = useState("Schleifenwiderstand [kOhm]");
@@ -200,11 +201,6 @@ function Kue705FO({
} */
//-------------------------------------------------
let slot = slotIndex;
const alarmStatus =
(window.kueAlarm1 && window.kueAlarm1[slotIndex]) ||
(window.kueAlarm2 && window.kueAlarm2[slotIndex]) ||
(window.kueCableBreak && window.kueCableBreak[slotIndex]) ||
(window.kueGroundFault && window.kueGroundFault[slotIndex]);
if (slot >= 32) {
return;
@@ -297,6 +293,23 @@ function Kue705FO({
useEffect(() => {
setCurrentDisplayValue(schleifenwiderstand);
}, [schleifenwiderstand]);
useEffect(() => {
const updateAlarmStatus = () => {
const alarmStatus =
(window.kueAlarm1 && window.kueAlarm1[slotIndex]) ||
(window.kueAlarm2 && window.kueAlarm2[slotIndex]) ||
(window.kueCableBreak && window.kueCableBreak[slotIndex]) ||
(window.kueGroundFault && window.kueGroundFault[slotIndex]);
setCurrentAlarmStatus(alarmStatus); // Aktualisiere den Alarmstatus
};
// Aktualisierung sofort und alle 5 Sekunden
updateAlarmStatus();
const interval = setInterval(updateAlarmStatus, 5000);
return () => clearInterval(interval); // Bereinigung bei Entladen der Komponente
}, [slotIndex]);
return (
<div className="relative bg-gray-300 w-[116px] h-[390px] border border-gray-400 scale-110 top-3">

View File

@@ -11,6 +11,7 @@ function Kabelueberwachung() {
const [kueID, setKueID] = useState([]); // State to store the KUE names
const [schleifenwiderstand, setSchleifenwiderstand] = useState([]); // State to store the resistance values
const [kueOnline, setKueOnline] = useState([]); // State to store the module status
const [alarmStatus, setAlarmStatus] = useState([]); // State to store the alarm status
// Verwende den useRouter Hook, um den Rack-Parameter zu extrahieren
useEffect(() => {
@@ -24,24 +25,45 @@ function Kabelueberwachung() {
// Load the external JavaScript file and fetch the isolation values
useEffect(() => {
loadWindowVariables()
.then(() => {
if (window.kueIso && Array.isArray(window.kueIso)) {
setKueIso(window.kueIso);
}
if (window.kueRes && Array.isArray(window.kueRes)) {
setSchleifenwiderstand(window.kueRes);
}
if (window.kueOnline && Array.isArray(window.kueOnline)) {
setKueOnline(window.kueOnline);
}
if (window.kueID && Array.isArray(window.kueID)) {
setKueID(window.kueID);
}
})
.catch((error) => {
//console.error("Fehler beim Laden der Variablen:", error);
const fetchData = () => {
loadWindowVariables()
.then(() => {
if (window.kueIso && Array.isArray(window.kueIso)) {
setKueIso(window.kueIso);
}
if (window.kueRes && Array.isArray(window.kueRes)) {
setSchleifenwiderstand(window.kueRes);
}
if (window.kueOnline && Array.isArray(window.kueOnline)) {
setKueOnline(window.kueOnline);
}
if (window.kueID && Array.isArray(window.kueID)) {
setKueID(window.kueID);
}
updateAlarmStatus(); // Alarmstatus sofort aktualisieren
})
.catch((error) => {
console.error("Fehler beim Laden der Variablen:", error);
});
};
const updateAlarmStatus = () => {
const updatedAlarmStatus = kueIso.map((_, index) => {
return (
(window.kueAlarm1 && window.kueAlarm1[index]) ||
(window.kueAlarm2 && window.kueAlarm2[index]) ||
(window.kueCableBreak && window.kueCableBreak[index]) ||
(window.kueGroundFault && window.kueGroundFault[index])
);
});
console.log("Aktualisierter alarmStatus:", updatedAlarmStatus);
setAlarmStatus(updatedAlarmStatus); // State für Alarmstatus aktualisieren
};
fetchData();
const interval = setInterval(fetchData, 5000); // alle 5 Sekunden
return () => clearInterval(interval);
}, []);
// Zuerst alle Werte der Arrays speichern
@@ -87,7 +109,68 @@ function Kabelueberwachung() {
document.body.removeChild(script);
};
}, []);
//----------------------------------------------
useEffect(() => {
const fetchData = () => {
const existingScript = document.querySelector(
"script[src*='kueData.js']"
);
// Stelle sicher, dass das Element existiert und ein Kind von `document.body` ist, bevor du es entfernst
if (existingScript && existingScript.parentNode === document.body) {
document.body.removeChild(existingScript);
}
// Füge das Skript erneut hinzu
const script = document.createElement("script");
script.src =
process.env.NODE_ENV === "production"
? "CPL?/CPL/SERVICE/kueData.js" // Produktionspfad
: "/CPLmockData/SERVICE/kueData.js"; // Entwicklungs-Pfad für Mock-Daten
script.async = true;
script.onload = () => {
// Aktualisiere die Variablen nach kurzer Verzögerung, um sicherzustellen, dass sie geladen sind
setTimeout(() => {
if (window.kueIso && Array.isArray(window.kueIso)) {
setKueIso(window.kueIso);
}
if (window.kueRes && Array.isArray(window.kueRes)) {
setSchleifenwiderstand(window.kueRes);
}
if (window.kueOnline && Array.isArray(window.kueOnline)) {
setKueOnline(window.kueOnline);
}
if (window.kueID && Array.isArray(window.kueID)) {
setKueID(window.kueID);
}
updateAlarmStatus(); // Aktualisiere den Alarmstatus
}, 500); // 500 ms Verzögerung, um sicherzustellen, dass die Daten geladen sind
};
document.body.appendChild(script);
};
const updateAlarmStatus = () => {
const updatedAlarmStatus = window.kueIso.map((_, index) => {
return (
(window.kueAlarm1 && window.kueAlarm1[index]) ||
(window.kueAlarm2 && window.kueAlarm2[index]) ||
(window.kueCableBreak && window.kueCableBreak[index]) ||
(window.kueGroundFault && window.kueGroundFault[index])
);
});
console.log("Aktualisierter alarmStatus:", updatedAlarmStatus);
setAlarmStatus(updatedAlarmStatus); // Setze den aktualisierten Alarmstatus
};
// Lade die Daten sofort und alle 5 Sekunden neu
fetchData();
const interval = setInterval(fetchData, 5000);
return () => clearInterval(interval); // Bereinige das Intervall beim Entladen der Komponente
}, []);
//----------------------------------------------
return (
<div className="bg-gray-100 flex-1 p-6 text-black">
<h1 className="text-2xl mb-4">Kabelüberwachung</h1>

View File

@@ -1,25 +1,147 @@
var 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];
var kueIso=[10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.50,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.50,10.00,10.00,10.00,10.00,10.00,10.50,10.00,200.00,200.00,200.00,200.00];
var kueValid=[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];
var kueAlarm1=[1,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,1,0,1,0,0,0,0,0,0];
var kueAlarm2=[1,0,1,0,0,0,1,1,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0];
var kueRes=[0.000,0.612,0.000,0.645,0.821,0.970,0.000,0.000,1.452,0.000,0.734,0.370,0.566,0.000,0.738,0.684,1.166,0.595,0.000,1.651,1.180,1.387,1.214,0.000,1.475,0.615,0.494,1.217,65.000,65.000,65.000,65.000];
var kueCableBreak=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1];
var kueGroundFault=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
var kueLimit1=[10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00];
var kueLimit2Low=[0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100,0.100];
var kueLimit2High=[1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000,1.000];
var kueDelay1=[420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420];
var kueLoopInterval=[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6];
var kueID=['FTZ_2','B23','Kabel 3','Kabel 4','Kabel 5','Kabel 6','FTZ4562','Kabel 8','12344','Kabel 10','Kabel 11','Kabel 12','Kabel 13','Kabel 14','Kabel 15','H56-77','Kabel 17','Kabel 18','Kabel 19','Kabel 20','Kabel 21','Kabel 22','Kabel 23','Kabel 24','Kabel 25','Kabel 26','Kabel 27','Kabel 28','Kabel 29','Kabel 30','Kabel 31','Kabel 32'];
var kueName=['Kabel_2','Petersfehn','Kabel 3','Kabel 4','Kabel 5','Kabel 6','Melanie','Kabel 8','Merle','Kabel 10','Kabel 11','Kabel 12','Kabel 13','Kabel 14','Kabel 15','Daniela','Kabel 17','Kabel 18','Kabel 19','Kabel 20','Kabel 21','Kabel 22','Kabel 23','Kabel 24','Kabel 25','Kabel 26','Kabel 27','Kabel 28','Kabel 29','Kabel 30','Kabel 31','Kabel 32'];
var kueVersion=[419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419];
var kueOverflow=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1];
var kue100V=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
var kueResidence=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
var kueBooting=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
var 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,
];
var kueIso = [
10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.5, 10.0, 10.0, 10.0, 10.0,
10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.5, 10.0, 10.0, 10.0, 10.0, 10.0,
10.5, 10.0, 200.0, 200.0, 200.0, 200.0,
];
var kueValid = [
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,
];
var kueAlarm1 = [
1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0,
];
var kueAlarm2 = [
1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0,
];
var kueRes = [
0.0, 0.612, 0.0, 0.645, 0.821, 0.97, 0.0, 0.0, 1.452, 0.0, 0.734, 0.37, 0.566,
0.0, 0.738, 0.684, 1.166, 0.595, 0.0, 1.651, 1.18, 1.387, 1.214, 0.0, 1.475,
0.615, 0.494, 1.217, 65.0, 65.0, 65.0, 65.0,
];
var kueCableBreak = [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 1, 1, 1,
];
var kueGroundFault = [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
];
var kueLimit1 = [
10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0,
10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0,
10.0, 10.0, 10.0, 10.0, 10.0, 10.0,
];
var kueLimit2Low = [
0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
0.1, 0.1,
];
var kueLimit2High = [
1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
1.0, 1.0,
];
var kueDelay1 = [
420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420,
420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420,
420, 420,
];
var kueLoopInterval = [
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6,
];
var kueID = [
"FTZ_2",
"B23",
"Kabel 3",
"Kabel 4",
"Kabel 5",
"Kabel 6",
"FTZ4562",
"Kabel 8",
"12344",
"Kabel 10",
"Kabel 11",
"Kabel 12",
"Kabel 13",
"Kabel 14",
"Kabel 15",
"H56-77",
"Kabel 17",
"Kabel 18",
"Kabel 19",
"Kabel 20",
"Kabel 21",
"Kabel 22",
"Kabel 23",
"Kabel 24",
"Kabel 25",
"Kabel 26",
"Kabel 27",
"Kabel 28",
"Kabel 29",
"Kabel 30",
"Kabel 31",
"Kabel 32",
];
var kueName = [
"Kabel_2",
"Petersfehn",
"Kabel 3",
"Kabel 4",
"Kabel 5",
"Kabel 6",
"Melanie",
"Kabel 8",
"Merle",
"Kabel 10",
"Kabel 11",
"Kabel 12",
"Kabel 13",
"Kabel 14",
"Kabel 15",
"Daniela",
"Kabel 17",
"Kabel 18",
"Kabel 19",
"Kabel 20",
"Kabel 21",
"Kabel 22",
"Kabel 23",
"Kabel 24",
"Kabel 25",
"Kabel 26",
"Kabel 27",
"Kabel 28",
"Kabel 29",
"Kabel 30",
"Kabel 31",
"Kabel 32",
];
var kueVersion = [
419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419,
419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419,
419, 419,
];
var kueOverflow = [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 1, 1, 1,
];
var kue100V = [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
];
var kueResidence = [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
];
var kueBooting = [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
];