remove active layers when removed from selection

This commit is contained in:
vcoppe
2025-11-10 15:26:12 +01:00
parent 16023b0688
commit 738530a960

View File

@@ -19,6 +19,7 @@
import { map } from '$lib/components/map/map'; import { map } from '$lib/components/map/map';
import CustomLayers from './CustomLayers.svelte'; import CustomLayers from './CustomLayers.svelte';
import { settings } from '$lib/logic/settings'; import { settings } from '$lib/logic/settings';
import { untrack } from 'svelte';
const { const {
selectedBasemapTree, selectedBasemapTree,
@@ -26,6 +27,7 @@
selectedOverpassTree, selectedOverpassTree,
currentBasemap, currentBasemap,
currentOverlays, currentOverlays,
currentOverpassQueries,
customLayers, customLayers,
opacities, opacities,
} = settings; } = settings;
@@ -60,19 +62,44 @@
}); });
$effect(() => { $effect(() => {
if ($selectedOverlayTree && $currentOverlays) { if ($selectedOverlayTree) {
let overlayLayers = getLayers($currentOverlays); untrack(() => {
let toRemove = Object.entries(overlayLayers).filter( if ($currentOverlays) {
([id, checked]) => checked && !isSelected($selectedOverlayTree, id) let overlayLayers = getLayers($currentOverlays);
); let toRemove = Object.entries(overlayLayers).filter(
if (toRemove.length > 0) { ([id, checked]) => checked && !isSelected($selectedOverlayTree, id)
currentOverlays.update((tree) => { );
toRemove.forEach(([id]) => { if (toRemove.length > 0) {
toggle(tree, id); currentOverlays.update((tree) => {
}); toRemove.forEach(([id]) => {
return tree; toggle(tree, id);
}); });
} return tree;
});
}
}
});
}
});
$effect(() => {
if ($selectedOverpassTree) {
untrack(() => {
if ($currentOverpassQueries) {
let overlayLayers = getLayers($currentOverpassQueries);
let toRemove = Object.entries(overlayLayers).filter(
([id, checked]) => checked && !isSelected($selectedOverpassTree, id)
);
if (toRemove.length > 0) {
currentOverpassQueries.update((tree) => {
toRemove.forEach(([id]) => {
toggle(tree, id);
});
return tree;
});
}
}
});
} }
}); });
</script> </script>