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,