From 2d2889a36d87943b0eab10020989fa60399b888b Mon Sep 17 00:00:00 2001 From: ISA Date: Wed, 6 Nov 2024 08:07:41 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20Alarmanzeige=20mit=20blinkendem=20Icon?= =?UTF-8?q?=20und=20Text=20f=C3=BCr=20Alarmstatus=20implementiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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. --- components/modules/Kue705FO.jsx | 77 ++++++++++++++++++++------------- 1 file changed, 48 insertions(+), 29 deletions(-) diff --git a/components/modules/Kue705FO.jsx b/components/modules/Kue705FO.jsx index 4d15bd6..693c227 100644 --- a/components/modules/Kue705FO.jsx +++ b/components/modules/Kue705FO.jsx @@ -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 ? ( + + ) : ( + 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,