From bc20f3869df344ecdaab595d3a97aafb593d0a4c Mon Sep 17 00:00:00 2001 From: ISA Date: Mon, 11 Aug 2025 14:24:03 +0200 Subject: [PATCH] =?UTF-8?q?ISO,=20RSL,=20TDR,=20und=20KVZ=20Modal=20nach?= =?UTF-8?q?=20W=C3=BCnsch=20angepasst=20f=C3=BCr=20K=C3=9Cs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- .env.production | 2 +- CHANGELOG.md | 5 + .../IsoMeasurementChart/IsoChartView.tsx | 6 +- .../Charts/IsoMeasurementChart/Report.tsx | 56 ++++- .../kue705FO/Charts/KVZChart/KVZChartView.tsx | 13 +- .../LoopMeasurementChart/LoopChartView.tsx | 6 +- .../kue705FO/Charts/TDRChart/TDRChartView.tsx | 2 +- .../meldungen/messages_all.json | 210 +++++++++++++++++- package-lock.json | 4 +- package.json | 2 +- 11 files changed, 287 insertions(+), 21 deletions(-) diff --git a/.env.development b/.env.development index 4cfc15d..6a1cdc0 100644 --- a/.env.development +++ b/.env.development @@ -6,6 +6,6 @@ NEXT_PUBLIC_USE_MOCK_BACKEND_LOOP_START=false NEXT_PUBLIC_EXPORT_STATIC=false NEXT_PUBLIC_USE_CGI=false # App-Versionsnummer -NEXT_PUBLIC_APP_VERSION=1.6.686 +NEXT_PUBLIC_APP_VERSION=1.6.687 NEXT_PUBLIC_CPL_MODE=json # json (Entwicklungsumgebung) oder jsSimulatedProd (CPL ->CGI-Interface-Simulator) oder production (CPL-> CGI-Interface Platzhalter) diff --git a/.env.production b/.env.production index 0053ffa..5d9a75b 100644 --- a/.env.production +++ b/.env.production @@ -5,5 +5,5 @@ NEXT_PUBLIC_CPL_API_PATH=/CPL NEXT_PUBLIC_EXPORT_STATIC=true NEXT_PUBLIC_USE_CGI=true # App-Versionsnummer -NEXT_PUBLIC_APP_VERSION=1.6.686 +NEXT_PUBLIC_APP_VERSION=1.6.687 NEXT_PUBLIC_CPL_MODE=production \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 77f5dd4..638bd86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## [1.6.687] – 2025-08-11 + +- ISO & RSL dropdowns moved to headers like TDR; removed old dropdowns from action bars, cleaned imports, fixed TypeScript issues + +--- ## [1.6.686] – 2025-08-11 - LoopChartActionBar verhält sich jetzt wie im ISO-Modal: Bei Auswahl „Meldungen“ diff --git a/components/main/kabelueberwachung/kue705FO/Charts/IsoMeasurementChart/IsoChartView.tsx b/components/main/kabelueberwachung/kue705FO/Charts/IsoMeasurementChart/IsoChartView.tsx index e8c22b1..96e302a 100644 --- a/components/main/kabelueberwachung/kue705FO/Charts/IsoMeasurementChart/IsoChartView.tsx +++ b/components/main/kabelueberwachung/kue705FO/Charts/IsoMeasurementChart/IsoChartView.tsx @@ -234,7 +234,11 @@ const IsoChartView: React.FC = ({
- {chartTitle === "Messkurve" ? : } + {chartTitle === "Messkurve" ? ( + + ) : ( + + )}
diff --git a/components/main/kabelueberwachung/kue705FO/Charts/IsoMeasurementChart/Report.tsx b/components/main/kabelueberwachung/kue705FO/Charts/IsoMeasurementChart/Report.tsx index 5ff83eb..e8df73b 100644 --- a/components/main/kabelueberwachung/kue705FO/Charts/IsoMeasurementChart/Report.tsx +++ b/components/main/kabelueberwachung/kue705FO/Charts/IsoMeasurementChart/Report.tsx @@ -1,6 +1,6 @@ "use client"; // Report.tsx -import React, { useState, useEffect, useCallback } from "react"; +import React, { useState, useEffect, useCallback, useMemo } from "react"; import { useSelector, useDispatch } from "react-redux"; import { RootState, AppDispatch } from "@/redux/store"; import { getMessagesThunk } from "@/redux/thunks/getMessagesThunk"; @@ -15,7 +15,13 @@ type Meldung = { v: string; // value/status text }; -const Report: React.FC = () => { +type ModuleType = "ISO" | "TDR" | "RSL" | "KVZ"; + +interface ReportProps { + moduleType: ModuleType; +} + +const Report: React.FC = ({ moduleType }) => { const dispatch = useDispatch(); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); @@ -109,6 +115,24 @@ const Report: React.FC = () => { [] ); + // Modul-spezifische Schlüsselwörter (alle lowercase, ö => oe normalisiert) + const moduleKeywordMap = useMemo>( + () => ({ + ISO: ["modul online", "aderbruch", "erdschluss", "isofehler"], + TDR: ["modul online", "tdr aktiv", "tdr entfernung"], + RSL: ["modul online", "aderbruch", "schleifenfehler"], + KVZ: ["modul online", "aderbruch", "kvz störung", "kvz stoerung"], + }), + [] + ); + + const normalize = (text: string) => + text + .toLowerCase() + .replace(/ö/g, "oe") + .replace(/ä/g, "ae") + .replace(/ü/g, "ue"); + // Daten laden const loadMessages = useCallback(async () => { if (slotNumber === null) return; @@ -135,12 +159,24 @@ const Report: React.FC = () => { // Filter anwenden wenn sich Nachrichten oder Slot ändern useEffect(() => { if (slotNumber !== null && messages.length > 0) { - const filtered = filterMessagesForSlot(messages, slotNumber); - setFilteredMessages(filtered); + const slotFiltered = filterMessagesForSlot(messages, slotNumber); + // Modul-Filter anwenden + const keywords = moduleKeywordMap[moduleType].map(normalize); + const moduleFiltered = slotFiltered.filter((m) => { + const msgNorm = normalize(m.m); + return keywords.some((kw) => msgNorm.includes(kw)); + }); + setFilteredMessages(moduleFiltered); } else { setFilteredMessages([]); } - }, [messages, slotNumber, filterMessagesForSlot]); + }, [ + messages, + slotNumber, + filterMessagesForSlot, + moduleType, + moduleKeywordMap, + ]); // Automatisches Laden beim Mount und bei Änderungen useEffect(() => { @@ -169,8 +205,8 @@ const Report: React.FC = () => { {filteredMessages.length === 0 ? (
Keine Meldungen für CableLine - {slotNumber !== null ? slotNumber + 1 : "-"} im gewählten Zeitraum - gefunden. + {slotNumber !== null ? slotNumber + 1 : "-"} (Filter: {moduleType}) im + gewählten Zeitraum gefunden.
) : (
@@ -213,9 +249,9 @@ const Report: React.FC = () => {
)} -
- {filteredMessages.length} Meldung(en) gefunden -
+ {/*
+ {filteredMessages.length} Meldung(en) (Filter: {moduleType}) gefunden +
*/} ); }; diff --git a/components/main/kabelueberwachung/kue705FO/Charts/KVZChart/KVZChartView.tsx b/components/main/kabelueberwachung/kue705FO/Charts/KVZChart/KVZChartView.tsx index 8a18414..d7827d6 100644 --- a/components/main/kabelueberwachung/kue705FO/Charts/KVZChart/KVZChartView.tsx +++ b/components/main/kabelueberwachung/kue705FO/Charts/KVZChart/KVZChartView.tsx @@ -34,6 +34,9 @@ const KVZChartView: React.FC = ({ const isFullScreen = useSelector( (state: RootState) => state.kabelueberwachungChartSlice.isFullScreen ); + const slotNumber = useSelector( + (state: RootState) => state.kabelueberwachungChartSlice.slotNumber + ); // Beim Öffnen Slot setzen (damit konsistent zu anderen Modals) useEffect(() => { @@ -129,14 +132,20 @@ const KVZChartView: React.FC = ({

KVz Zustände & Meldungen

{/* LED Bereich */} -
+
+
+ +
+
{/* Meldungen Bereich */}
- +
diff --git a/components/main/kabelueberwachung/kue705FO/Charts/LoopMeasurementChart/LoopChartView.tsx b/components/main/kabelueberwachung/kue705FO/Charts/LoopMeasurementChart/LoopChartView.tsx index 8e6df1b..d377167 100644 --- a/components/main/kabelueberwachung/kue705FO/Charts/LoopMeasurementChart/LoopChartView.tsx +++ b/components/main/kabelueberwachung/kue705FO/Charts/LoopMeasurementChart/LoopChartView.tsx @@ -235,7 +235,11 @@ const LoopChartView: React.FC = ({
- {chartTitle === "Messkurve" ? : } + {chartTitle === "Messkurve" ? ( + + ) : ( + + )}
diff --git a/components/main/kabelueberwachung/kue705FO/Charts/TDRChart/TDRChartView.tsx b/components/main/kabelueberwachung/kue705FO/Charts/TDRChart/TDRChartView.tsx index 30d226a..bb61282 100644 --- a/components/main/kabelueberwachung/kue705FO/Charts/TDRChart/TDRChartView.tsx +++ b/components/main/kabelueberwachung/kue705FO/Charts/TDRChart/TDRChartView.tsx @@ -225,7 +225,7 @@ const TDRChartView: React.FC = ({ {chartTitle === "Messkurve" ? ( ) : ( - + )} diff --git a/mocks/device-cgi-simulator/meldungen/messages_all.json b/mocks/device-cgi-simulator/meldungen/messages_all.json index f93c145..1ae686c 100644 --- a/mocks/device-cgi-simulator/meldungen/messages_all.json +++ b/mocks/device-cgi-simulator/meldungen/messages_all.json @@ -3998,5 +3998,213 @@ "m": "Isofehler gehend", "i": "CableLine13", "v": "0" + }, + { + "t": "2025-08-11 12:05:00", + "s": 100, + "c": "#00d200", + "m": "Modul online", + "i": "CableLine1", + "v": "online" + }, + { + "t": "2025-08-11 12:06:00", + "s": 400, + "c": "#ff9900", + "m": "Aderbruch kommend", + "i": "CableLine1", + "v": "1" + }, + { + "t": "2025-08-11 12:06:30", + "s": 0, + "c": "#00d200", + "m": "Aderbruch gehend", + "i": "CableLine1", + "v": "0" + }, + { + "t": "2025-08-11 12:07:00", + "s": 500, + "c": "#ff0000", + "m": "Erdschluss kommend", + "i": "CableLine1", + "v": "1" + }, + { + "t": "2025-08-11 12:07:20", + "s": 0, + "c": "#00d200", + "m": "Erdschluss gehend", + "i": "CableLine1", + "v": "0" + }, + { + "t": "2025-08-11 12:07:40", + "s": 500, + "c": "#ff0000", + "m": "Isofehler kommend", + "i": "CableLine1", + "v": "1" + }, + { + "t": "2025-08-11 12:08:10", + "s": 0, + "c": "#00d200", + "m": "Isofehler gehend", + "i": "CableLine1", + "v": "0" + }, + { + "t": "2025-08-11 12:08:40", + "s": 300, + "c": "#ffaa00", + "m": "Schleifenfehler kommend", + "i": "CableLine1", + "v": "1" + }, + { + "t": "2025-08-11 12:09:00", + "s": 0, + "c": "#00d200", + "m": "Schleifenfehler gehend", + "i": "CableLine1", + "v": "0" + }, + { + "t": "2025-08-11 12:09:20", + "s": 500, + "c": "#ff0000", + "m": "TDR aktiv", + "i": "CableLine1", + "v": "start" + }, + { + "t": "2025-08-11 12:09:50", + "s": 200, + "c": "#0077ff", + "m": "TDR Entfernung 123m", + "i": "CableLine1", + "v": "123" + }, + { + "t": "2025-08-11 12:10:10", + "s": 400, + "c": "#ff9900", + "m": "KVz Störung kommend", + "i": "CableLine1", + "v": "1" + }, + { + "t": "2025-08-11 12:10:40", + "s": 0, + "c": "#00d200", + "m": "KVz Störung gehend", + "i": "CableLine1", + "v": "0" + }, + { + "t": "2025-08-11 12:11:10", + "s": 100, + "c": "#00d200", + "m": "Modul online", + "i": "CableLine11", + "v": "online" + }, + { + "t": "2025-08-11 12:11:40", + "s": 400, + "c": "#ff9900", + "m": "Aderbruch kommend", + "i": "CableLine11", + "v": "1" + }, + { + "t": "2025-08-11 12:12:10", + "s": 0, + "c": "#00d200", + "m": "Aderbruch gehend", + "i": "CableLine11", + "v": "0" + }, + { + "t": "2025-08-11 12:12:40", + "s": 500, + "c": "#ff0000", + "m": "Erdschluss kommend", + "i": "CableLine11", + "v": "1" + }, + { + "t": "2025-08-11 12:13:10", + "s": 0, + "c": "#00d200", + "m": "Erdschluss gehend", + "i": "CableLine11", + "v": "0" + }, + { + "t": "2025-08-11 12:13:40", + "s": 500, + "c": "#ff0000", + "m": "Isofehler kommend", + "i": "CableLine11", + "v": "1" + }, + { + "t": "2025-08-11 12:14:10", + "s": 0, + "c": "#00d200", + "m": "Isofehler gehend", + "i": "CableLine11", + "v": "0" + }, + { + "t": "2025-08-11 12:14:40", + "s": 300, + "c": "#ffaa00", + "m": "Schleifenfehler kommend", + "i": "CableLine11", + "v": "1" + }, + { + "t": "2025-08-11 12:15:10", + "s": 0, + "c": "#00d200", + "m": "Schleifenfehler gehend", + "i": "CableLine11", + "v": "0" + }, + { + "t": "2025-08-11 12:15:40", + "s": 500, + "c": "#ff0000", + "m": "TDR aktiv", + "i": "CableLine11", + "v": "start" + }, + { + "t": "2025-08-11 12:16:10", + "s": 200, + "c": "#0077ff", + "m": "TDR Entfernung 87m", + "i": "CableLine11", + "v": "87" + }, + { + "t": "2025-08-11 12:16:40", + "s": 400, + "c": "#ff9900", + "m": "KVz Störung kommend", + "i": "CableLine11", + "v": "1" + }, + { + "t": "2025-08-11 12:17:10", + "s": 0, + "c": "#00d200", + "m": "KVz Störung gehend", + "i": "CableLine11", + "v": "0" } -] \ No newline at end of file +] diff --git a/package-lock.json b/package-lock.json index 15484a5..b2c3b93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cpl-v4", - "version": "1.6.686", + "version": "1.6.687", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cpl-v4", - "version": "1.6.686", + "version": "1.6.687", "dependencies": { "@fontsource/roboto": "^5.1.0", "@headlessui/react": "^2.2.4", diff --git a/package.json b/package.json index 369a897..89dea69 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cpl-v4", - "version": "1.6.686", + "version": "1.6.687", "private": true, "scripts": { "dev": "next dev",