feat: Alarmanzeige mit blinkendem Icon und Text für Alarmstatus implementiert

- useEffect-Hook erweitert, um die Alarmanzeige mit blinkendem Text und Icon zu versehen.
- Verschiedene Alarmstatus (kueCableBreak, kueGroundFault, kueAlarm1, kueAlarm2, kueOverflow) triggern abwechselnde Anzeige von Text und Icon.
- Icon erscheint 2 Sekunden lang, gefolgt von 5 Sekunden Text zur verbesserten Benutzererkennung.
- Cleanup für Intervall hinzugefügt, um Speicherlecks zu vermeiden.
This commit is contained in:
ISA
2024-11-06 08:07:41 +01:00
parent df22aa2b5d
commit 2d2889a36d

View File

@@ -309,41 +309,60 @@ function Kue705FO({
return () => clearInterval(interval);
}, [slotIndex, kueAlarm1, kueAlarm2, kueCableBreak, kueGroundFault]);
// Funktion zum Aktualisieren der Anzeige basierend auf dem Alarmstatus mit Icon und Blinken
useEffect(() => {
const updateDisplay = () => {
if (kuePSTmMinus96V?.[slotIndex] === 1) {
setCurrentDisplayValue("PST-M prüfen");
return;
}
if (kueCableBreak?.[slotIndex] === 1) {
setCurrentDisplayValue(isoDisplayText);
return;
}
if (kueGroundFault?.[slotIndex] === 1) {
setCurrentDisplayValue(groundFaultDisplayText);
return;
}
if (kueAlarm1?.[slotIndex] === 1) {
setCurrentDisplayValue(isoFaultDisplayText);
return;
}
if (kueAlarm2?.[slotIndex] === 1) {
setCurrentDisplayValue(loopFaultDisplayText);
return;
}
if (kueOverflow?.[slotIndex] === 1) {
setCurrentDisplayValue(isoGreaterThan200);
return;
}
setCurrentDisplayValue(isolationswert);
let intervalId;
// Funktion zum Blinken des Textes oder Icons
const setBlinkingText = (text) => {
intervalId = setInterval(() => {
setCurrentDisplayValue((prevValue) =>
prevValue === text ? (
<i
className="bi bi-exclamation-triangle"
style={{ fontSize: "24px", color: "red" }}
></i>
) : (
text
)
);
}, 5000); // Gesamtdauer von 7 Sekunden für einen vollständigen Blink-Zyklus
};
updateDisplay();
const interval = setInterval(updateDisplay, 5000);
return () => clearInterval(interval);
// Alarmanzeige je nach Status aktualisieren
if (kuePSTmMinus96V?.[slotIndex] === 1) {
clearInterval(intervalId); // Vorheriges Intervall stoppen
setCurrentDisplayValue("PST-M prüfen");
} else if (kueCableBreak?.[slotIndex] === 1) {
clearInterval(intervalId);
setBlinkingText(isoDisplayText);
} else if (kueGroundFault?.[slotIndex] === 1) {
clearInterval(intervalId);
setBlinkingText(groundFaultDisplayText);
} else if (kueAlarm1?.[slotIndex] === 1) {
clearInterval(intervalId);
setBlinkingText(isoFaultDisplayText);
} else if (kueAlarm2?.[slotIndex] === 1) {
clearInterval(intervalId);
setBlinkingText(loopFaultDisplayText);
} else if (kueOverflow?.[slotIndex] === 1) {
clearInterval(intervalId);
setBlinkingText(isoGreaterThan200);
} else {
clearInterval(intervalId);
setCurrentDisplayValue(isolationswert); // Kein Alarm aktiv
}
// Cleanup, um das Intervall zu stoppen, wenn sich der Status ändert oder der Effekt aufgeräumt wird
return () => clearInterval(intervalId);
}, [
slotIndex,
isolationswert,
isoDisplayText,
groundFaultDisplayText,
isoFaultDisplayText,
loopFaultDisplayText,
isoGreaterThan200,
kuePSTmMinus96V,
kueCableBreak,
kueGroundFault,