From a013c07394b68c57bb3b891275cddc4f6abf3dc9 Mon Sep 17 00:00:00 2001 From: ISA Date: Fri, 22 Aug 2025 10:12:03 +0200 Subject: [PATCH] =?UTF-8?q?fix(map):=20entferne=20Start-,=20End-=20und=20S?= =?UTF-8?q?t=C3=BCtzpunkt-Icons=20sofort=20beim=20Ausblenden=20der=20Kabel?= =?UTF-8?q?strecken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Alle Marker mit StartIcon, EndIcon und CircleIcon werden jetzt direkt entfernt, wenn die Kabelstrecken-Checkbox deaktiviert wird - Kein Browser-Reload mehr nötig, Icons verschwinden sofort von der Karte --- .env.development | 2 +- .env.production | 2 +- components/mainComponent/MapComponent.js | 90 +++++++++++++++--------- package-lock.json | 4 +- package.json | 2 +- 5 files changed, 62 insertions(+), 38 deletions(-) diff --git a/.env.development b/.env.development index 88c3d347d..95c1ca7c3 100644 --- a/.env.development +++ b/.env.development @@ -24,4 +24,4 @@ NEXT_PUBLIC_USE_MOCKS=true # z.B. http://10.10.0.13/xyz/index.aspx -> basePath in config.json auf /xyz setzen # basePath wird jetzt in public/config.json gepflegt # App-Versionsnummer -NEXT_PUBLIC_APP_VERSION=1.1.342 +NEXT_PUBLIC_APP_VERSION=1.1.343 diff --git a/.env.production b/.env.production index 17db1e90f..18c34730d 100644 --- a/.env.production +++ b/.env.production @@ -25,4 +25,4 @@ NEXT_PUBLIC_USE_MOCKS=false # basePath wird jetzt in public/config.json gepflegt # App-Versionsnummer -NEXT_PUBLIC_APP_VERSION=1.1.342 +NEXT_PUBLIC_APP_VERSION=1.1.343 diff --git a/components/mainComponent/MapComponent.js b/components/mainComponent/MapComponent.js index 58f3fa7eb..6aa44d927 100644 --- a/components/mainComponent/MapComponent.js +++ b/components/mainComponent/MapComponent.js @@ -10,6 +10,9 @@ import { InformationCircleIcon } from "@heroicons/react/20/solid"; import PoiUpdateModal from "@/components/pois/poiUpdateModal/PoiUpdateModal.js"; import { ToastContainer, toast } from "react-toastify"; import plusRoundIcon from "../icons/devices/overlapping/PlusRoundIcon.js"; +import StartIcon from "@/components/gisPolylines/icons/StartIcon.js"; +import EndIcon from "@/components/gisPolylines/icons/EndIcon.js"; +import CircleIcon from "@/components/gisPolylines/icons/CircleIcon.js"; import { restoreMapSettings, checkOverlappingMarkers } from "../../utils/mapUtils.js"; import addItemsToMapContextMenu from "@/components/contextmenu/useMapContextMenu.js"; @@ -234,41 +237,62 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { // URL-Parameter extrahieren und kartenspezifische localStorage-Keys verwenden useEffect(() => { - const params = new URLSearchParams(window.location.search); - const mapId = params.get("m"); - const userId = params.get("u"); - - if (mapId && userId) { - // Speichere aktuelle Map- und User-ID - localStorage.setItem("currentMapId", mapId); - localStorage.setItem("currentUserId", userId); - - // Kartenspezifischer localStorage-Key - const mapStorageKey = `mapLayersVisibility_m${mapId}_u${userId}`; - const storedMapLayersVisibility = localStorage.getItem(mapStorageKey); - - if (storedMapLayersVisibility) { - try { - const parsedVisibility = JSON.parse(storedMapLayersVisibility); - Object.keys(parsedVisibility).forEach(key => { - dispatch(setLayerVisibility({ layer: key, visibility: parsedVisibility[key] })); - }); - console.log( - `🔄 mapLayersVisibility für Map ${mapId}/User ${userId} geladen:`, - parsedVisibility - ); - } catch (error) { - console.error("❌ Fehler beim Laden von mapLayersVisibility:", error); - } - } else { - console.log( - `📝 Keine gespeicherten Einstellungen für Map ${mapId}/User ${userId} gefunden` - ); + // Immer beim Umschalten der Kabelstrecken-Checkbox prüfen! + if (map) { + if (!polylineVisible) { + map.eachLayer(layer => { + // Entferne alle Marker mit StartIcon, EndIcon oder CircleIcon (Stützpunkt) + if ( + layer instanceof L.Marker && + layer.options && + layer.options.icon && + (layer.options.icon === StartIcon || + layer.options.icon === EndIcon || + layer.options.icon === CircleIcon) + ) { + map.removeLayer(layer); + } + }); } - // Redux Polyline Sichtbarkeit initialisieren (map/user spezifisch) - dispatch(initializePolylineFromLocalStorageThunk()); } - }, [dispatch]); // Nur einmal beim Mount ausführen + // Initialisierung der Layer-Visibility und Polyline-Redux-State nur beim Mount + if (typeof window !== "undefined") { + const params = new URLSearchParams(window.location.search); + const mapId = params.get("m"); + const userId = params.get("u"); + + if (mapId && userId) { + // Speichere aktuelle Map- und User-ID + localStorage.setItem("currentMapId", mapId); + localStorage.setItem("currentUserId", userId); + + // Kartenspezifischer localStorage-Key + const mapStorageKey = `mapLayersVisibility_m${mapId}_u${userId}`; + const storedMapLayersVisibility = localStorage.getItem(mapStorageKey); + + if (storedMapLayersVisibility) { + try { + const parsedVisibility = JSON.parse(storedMapLayersVisibility); + Object.keys(parsedVisibility).forEach(key => { + dispatch(setLayerVisibility({ layer: key, visibility: parsedVisibility[key] })); + }); + console.log( + `🔄 mapLayersVisibility für Map ${mapId}/User ${userId} geladen:`, + parsedVisibility + ); + } catch (error) { + console.error("❌ Fehler beim Laden von mapLayersVisibility:", error); + } + } else { + console.log( + `📝 Keine gespeicherten Einstellungen für Map ${mapId}/User ${userId} gefunden` + ); + } + // Redux Polyline Sichtbarkeit initialisieren (map/user spezifisch) + dispatch(initializePolylineFromLocalStorageThunk()); + } + } + }, [dispatch, polylineVisible, map]); useEffect(() => { if (linesData && Array.isArray(linesData)) { const transformed = linesData.map(item => ({ diff --git a/package-lock.json b/package-lock.json index 62ccbca53..f7f1d98f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "nodemap", - "version": "1.1.342", + "version": "1.1.343", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "nodemap", - "version": "1.1.342", + "version": "1.1.343", "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", diff --git a/package.json b/package.json index 62b29e798..b78dfc59d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nodemap", - "version": "1.1.342", + "version": "1.1.343", "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0",