From 074a89b77c5c061684ee863f1b45d1b2a761e038 Mon Sep 17 00:00:00 2001 From: Ismail Ali Date: Mon, 9 Jun 2025 09:18:43 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20WebSocket-Integration=20mit=20automatis?= =?UTF-8?q?cher=20UI-Aktualisierung=20f=C3=BCr=20alle=20Ger=C3=A4te-Daten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - WebSocket sendet aktualisierte Webservice-Daten (GisLinesStatus, GisStationsStaticDistrict, GisStationsMeasurements) - Redux-Thunk wird durch WebSocket ausgelöst → Redux Store aktualisiert - `useDynamicDeviceLayers` & `createAndSetDevices` reagieren auf neue Redux-Daten - UI wird nun zuverlässig neu gerendert, wenn sich Marker-Daten ändern - Verbesserte Stabilität und Konsistenz zwischen Datenquelle, Redux und UI --- config/appVersion.js | 2 +- hooks/useDynamicDeviceLayers.js | 4 +++- utils/devices/createAndSetDevices.js | 2 +- websocketDump/GisStationsMeasurements.json | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/config/appVersion.js b/config/appVersion.js index a0eab9356..0cb7d11d1 100644 --- a/config/appVersion.js +++ b/config/appVersion.js @@ -1,2 +1,2 @@ // /config/appVersion -export const APP_VERSION = "1.1.248"; +export const APP_VERSION = "1.1.249"; diff --git a/hooks/useDynamicDeviceLayers.js b/hooks/useDynamicDeviceLayers.js index 755eace47..b25984f76 100644 --- a/hooks/useDynamicDeviceLayers.js +++ b/hooks/useDynamicDeviceLayers.js @@ -6,6 +6,7 @@ import { checkOverlappingMarkers } from "../utils/mapUtils"; import plusRoundIcon from "@/components/icons/devices/overlapping/PlusRoundIcon"; import { useSelector } from "react-redux"; import { selectGisStationsStaticDistrict } from "@/redux/slices/webservice/gisStationsStaticDistrictSlice.js"; +import { selectGisStationsMeasurements } from "@/redux/slices/webservice/gisStationsMeasurementsSlice.js"; /** * Dynamisch GIS-System-Marker erstellen & Sichtbarkeit steuern. @@ -16,6 +17,7 @@ import { selectGisStationsStaticDistrict } from "@/redux/slices/webservice/gisSt * @returns {{ markerStates, layerRefs }} Alle Marker und Referenzen */ const useDynamicDeviceLayers = (map, GisSystemStatic, mapLayersVisibility, priorityConfig, oms) => { + const measurements = useSelector(selectGisStationsMeasurements); const staticDistrictData = useSelector(selectGisStationsStaticDistrict); const [markerStates, setMarkerStates] = useState({}); const layerRefs = useRef({}); @@ -57,7 +59,7 @@ const useDynamicDeviceLayers = (map, GisSystemStatic, mapLayersVisibility, prior oms ); }); - }, [map, GisSystemStatic, priorityConfig, staticDistrictData]); + }, [map, GisSystemStatic, priorityConfig, staticDistrictData, measurements]); // Sichtbarkeit nach Redux-Status steuern useEffect(() => { diff --git a/utils/devices/createAndSetDevices.js b/utils/devices/createAndSetDevices.js index 812191a84..5a65c11d5 100644 --- a/utils/devices/createAndSetDevices.js +++ b/utils/devices/createAndSetDevices.js @@ -32,7 +32,7 @@ export const createAndSetDevices = async ( const state = store.getState(); const staticDistrictData = selectGisStationsStaticDistrict(state); const statusDistrictData = selectGisStationsStatusDistrict(state); - const measurementData = measurements ?? selectGisStationsMeasurements(state); + const measurementData = selectGisStationsMeasurements(state); if (!staticDistrictData?.Points?.length || !statusDistrictData?.length) return; diff --git a/websocketDump/GisStationsMeasurements.json b/websocketDump/GisStationsMeasurements.json index 7c4be2bf6..3198bcf68 100644 --- a/websocketDump/GisStationsMeasurements.json +++ b/websocketDump/GisStationsMeasurements.json @@ -4,7 +4,7 @@ "IdL": 24101, "IdDP": 3, "Na": "FBT", - "Val": "7", + "Val": "13", "Unit": "°C", "Gr": "GMA", "Area_Name": "Rastede"