fix: Systemtyp Berechtigung der User werden nicht beachtet

This commit is contained in:
ISA
2025-07-30 15:19:53 +02:00
parent 53c670feba
commit 4ee6d42a61
6 changed files with 92 additions and 43 deletions

View File

@@ -9,11 +9,7 @@ import {
} from "@/redux/slices/database/polylines/polylineLayerVisibleSlice";
import { selectGisSystemStatic } from "@/redux/slices/webservice/gisSystemStaticSlice";
import { selectGisStationsStaticDistrict } from "@/redux/slices/webservice/gisStationsStaticDistrictSlice";
import {
selectMapLayersState,
setLayerVisibility,
setInitialLayers,
} from "@/redux/slices/mapLayersSlice";
import { selectMapLayersState, setLayerVisibility } from "@/redux/slices/mapLayersSlice";
import { setVisible } from "@/redux/slices/database/pois/poiLayerVisibleSlice";
import { incrementZoomTrigger } from "@/redux/slices/zoomTriggerSlice";
@@ -61,12 +57,21 @@ function MapLayersControlPanel() {
console.log("📢 Event 'polylineVisibilityChanged' dispatched");
}, 100);
// Wenn Kabelstrecken aktiviert wird, aktiviere automatisch auch TALAS (IdSystem 1)
if (checked) {
dispatch(setLayerVisibility({ layer: "TALAS", visibility: true }));
localStorage.setItem(
"mapLayersVisibility",
JSON.stringify({ ...mapLayersVisibility, TALAS: true })
);
const talasKey = "system-1"; // TALAS hat IdSystem 1
dispatch(setLayerVisibility({ layer: talasKey, visibility: true }));
// Kartenspezifischer localStorage-Key verwenden
const mapId = localStorage.getItem("currentMapId");
const userId = localStorage.getItem("currentUserId");
const mapStorageKey =
mapId && userId ? `mapLayersVisibility_m${mapId}_u${userId}` : "mapLayersVisibility";
const updatedVisibility = { ...mapLayersVisibility, [talasKey]: true };
localStorage.setItem(mapStorageKey, JSON.stringify(updatedVisibility));
console.log("🔗 Kabelstrecken aktiviert → TALAS automatisch aktiviert");
}
};
@@ -112,8 +117,15 @@ function MapLayersControlPanel() {
}, 200);
}
const storedMapLayersVisibility = localStorage.getItem("mapLayersVisibility");
console.log("📦 MapLayers localStorage value:", storedMapLayersVisibility);
// Kartenspezifischer localStorage-Key verwenden
const mapId = localStorage.getItem("currentMapId");
const userId = localStorage.getItem("currentUserId");
const mapStorageKey =
mapId && userId ? `mapLayersVisibility_m${mapId}_u${userId}` : "mapLayersVisibility";
const storedMapLayersVisibility = localStorage.getItem(mapStorageKey);
console.log(`📦 MapLayers localStorage value for ${mapStorageKey}:`, storedMapLayersVisibility);
if (storedMapLayersVisibility) {
const parsedVisibility = JSON.parse(storedMapLayersVisibility);
Object.keys(parsedVisibility).forEach(key => {
@@ -125,18 +137,16 @@ function MapLayersControlPanel() {
if (Array.isArray(GisSystemStatic)) {
const initialVisibility = {};
GisSystemStatic.forEach(system => {
const systemKey = `system-${system.IdSystem}`;
const visibility = system.Allow === 1;
const key = `system-${system.IdSystem}`;
initialVisibility[key] = visibility;
dispatch(setLayerVisibility({ layer: key, visibility }));
initialVisibility[systemKey] = visibility;
dispatch(setLayerVisibility({ layer: systemKey, visibility }));
console.log(
`🎯 Setting ${system.SystemName} visibility to ${visibility} (Allow=${system.Allow})`
`🎯 Setting ${systemKey} (${system.Name}) visibility to ${visibility} (Allow=${system.Allow})`
);
});
localStorage.setItem("mapLayersVisibility", JSON.stringify(initialVisibility));
console.log("💾 Saved initial mapLayersVisibility to localStorage:", initialVisibility);
localStorage.setItem(mapStorageKey, JSON.stringify(initialVisibility));
console.log(`💾 Saved initial mapLayersVisibility to ${mapStorageKey}:`, initialVisibility);
}
}
@@ -204,10 +214,32 @@ function MapLayersControlPanel() {
const { checked } = event.target;
dispatch(setLayerVisibility({ layer: key, visibility: checked }));
localStorage.setItem(
"mapLayersVisibility",
JSON.stringify({ ...mapLayersVisibility, [key]: checked })
);
// Kartenspezifischer localStorage-Key verwenden
const mapId = localStorage.getItem("currentMapId");
const userId = localStorage.getItem("currentUserId");
const mapStorageKey =
mapId && userId ? `mapLayersVisibility_m${mapId}_u${userId}` : "mapLayersVisibility";
localStorage.setItem(mapStorageKey, JSON.stringify({ ...mapLayersVisibility, [key]: checked }));
// Wenn TALAS (system-1) deaktiviert wird, deaktiviere automatisch auch Kabelstrecken
if (key === "system-1" && !checked) {
console.log("🔗 TALAS deaktiviert → Kabelstrecken automatisch deaktiviert");
// Kabelstrecken deaktivieren
setKabelstreckenVisible(false);
localStorage.setItem("kabelstreckenVisible", "false");
localStorage.setItem("polylineVisible", "false");
dispatch(setPolylineVisible(false));
// Event für Kabelstrecken auslösen
setTimeout(() => {
const polylineEvent = new Event("polylineVisibilityChanged");
window.dispatchEvent(polylineEvent);
console.log("📢 Event 'polylineVisibilityChanged' dispatched (auto-deactivated)");
}, 50);
}
setTimeout(() => {
const event = new Event("visibilityChanged");
@@ -264,16 +296,6 @@ function MapLayersControlPanel() {
console.log("📌 stationListing aktualisiert:", filteredAreas);
}
}, [GisStationsStaticDistrict, GisSystemStatic]);
//---------------------------
// ✅ Redux mapLayers mit GisSystemStatic initialisieren
useEffect(() => {
if (Array.isArray(GisSystemStatic) && GisSystemStatic.length > 0) {
console.log("🔧 Initializing mapLayers in Redux with GisSystemStatic:", GisSystemStatic);
dispatch(setInitialLayers(GisSystemStatic));
}
}, [GisSystemStatic, dispatch]);
//---------------------------
useEffect(() => {
const next = (GisStationsStaticDistrict.Points || []).map(p => p.Area_Name).join("|");