Systeme mit Map === 0 vollständig ausgeblenden
This commit is contained in:
@@ -15,12 +15,11 @@ const mapLayersSlice = createSlice({
|
||||
},
|
||||
setLayerVisibility: (state, action) => {
|
||||
const { layer, visibility } = action.payload;
|
||||
state[layer] = visibility; // Entferne die Bedingung, um sicherzustellen, dass Werte gesetzt werden
|
||||
state[layer] = visibility; // Sicher setzen
|
||||
},
|
||||
setInitialLayers: (state, action) => {
|
||||
const systems = action.payload; // Array of GisSystem
|
||||
|
||||
// Versuche kartenspezifische localStorage-Werte zu laden
|
||||
const mapId =
|
||||
typeof localStorage !== "undefined" ? localStorage.getItem("currentMapId") : null;
|
||||
const userId =
|
||||
@@ -33,25 +32,47 @@ const mapLayersSlice = createSlice({
|
||||
try {
|
||||
const stored = localStorage.getItem(mapStorageKey);
|
||||
if (stored) {
|
||||
existingVisibility = JSON.parse(stored);
|
||||
existingVisibility = JSON.parse(stored) || {};
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error loading stored visibility:", error);
|
||||
}
|
||||
}
|
||||
|
||||
systems.forEach(system => {
|
||||
const key = `system-${system.IdSystem}`;
|
||||
// Baue ein Set der gültigen Keys (nur Systeme mit Map===1)
|
||||
const validKeys = new Set();
|
||||
|
||||
// Prüfe ob bereits ein localStorage-Wert existiert
|
||||
if (existingVisibility.hasOwnProperty(key)) {
|
||||
// Verwende gespeicherten Wert (Benutzer-Einstellung hat Priorität)
|
||||
systems.forEach(system => {
|
||||
if (system.Map !== 1) return; // Komplett überspringen, wenn Map==0
|
||||
const key = `system-${system.IdSystem}`;
|
||||
validKeys.add(key);
|
||||
|
||||
if (Object.prototype.hasOwnProperty.call(existingVisibility, key)) {
|
||||
state[key] = existingVisibility[key];
|
||||
} else {
|
||||
// Verwende Allow-Wert als Standard (nur für neue Systeme)
|
||||
state[key] = system.Allow === 1 && system.Map === 1;
|
||||
state[key] = system.Allow === 1 && system.Map === 1; // Allow + Map Bedingung
|
||||
}
|
||||
});
|
||||
|
||||
// Entferne aus dem State alle Keys, die nicht mehr gültig sind (Map wurde evtl. auf 0 gesetzt)
|
||||
Object.keys(state).forEach(k => {
|
||||
if (!validKeys.has(k)) {
|
||||
delete state[k];
|
||||
}
|
||||
});
|
||||
|
||||
// Bereinige auch den gespeicherten localStorage-Eintrag
|
||||
if (typeof localStorage !== "undefined") {
|
||||
const cleaned = {};
|
||||
Object.keys(state).forEach(k => {
|
||||
cleaned[k] = state[k];
|
||||
});
|
||||
try {
|
||||
localStorage.setItem(mapStorageKey, JSON.stringify(cleaned));
|
||||
} catch (e) {
|
||||
console.warn("Could not persist cleaned map layer visibility", e);
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user