Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix: Toggle Sublayers when loading Quick Access presets #1623

Merged
merged 4 commits into from
Mar 17, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 51 additions & 2 deletions apps/backend/App_Data/map_1.json
Original file line number Diff line number Diff line change
Expand Up @@ -549,7 +549,56 @@
"infobox": ""
}
],
"quickAccessPresets": [],
"quickAccessPresets": [
{
"title": "Test-grupp",
"description": "Ett preset med vanliga lager och ett grupplager",
"layers": [
{
"id": "0si2ys",
"visible": true,
"subLayers": [],
"opacity": 1,
"drawOrder": 1000
},
{
"id": "4y2nnu",
"visible": true,
"subLayers": [],
"opacity": 1,
"drawOrder": 1000
},
{
"id": "n0ehiv",
"visible": true,
"subLayers": [
"Motorvag",
"Motortrafikled",
"Stamvag",
"Storstadsvag",
"Gastvag",
"GangfartsOmrade",
"Provisoriskvag"
],
"opacity": 1,
"drawOrder": 1000
},
{
"id": "1",
"visible": true,
"subLayers": [],
"opacity": 1,
"drawOrder": 0
}
],
"metadata": {
"savedAt": "2025-03-17T06:22:16.974Z",
"numberOfLayers": 3,
"title": "Test-grupp",
"description": "Ett preset med vanliga lager och ett grupplager"
}
}
],
"active": true,
"visibleAtStart": false,
"visibleAtStartMobile": false,
Expand All @@ -563,7 +612,7 @@
"enableSystemLayersSwitch": true,
"lockDrawOrderBaselayer": true,
"drawOrderViewInfoText": "Här kan du ändra ritordning på tända lager i kartan. Dra lagret upp eller ner i listan och släpp på önskad plats.",
"enableQuickAccessPresets": false,
"enableQuickAccessPresets": true,
"quickAccessTopicsInfoText": "Här kan du ladda färdiga teman till snabbåtkomst. Teman innehåller tända och släckta lager, samt bakgrund.",
"enableUserQuickAccessFavorites": true,
"userQuickAccessFavoritesInfoText": "Här kan du hantera och redigera dina sparade favoriter. Observera att favoriter endast sparas tillfälligt.",
Expand Down
22 changes: 10 additions & 12 deletions apps/client/src/plugins/LayerSwitcher/LayerSwitcherProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,16 @@ const createDispatch = (map, staticLayerConfig, staticLayerTree) => {
olLayer.set("subLayers", sortedCurrentSubLayers);
setOLSubLayers(olLayer, sortedCurrentSubLayers);
},
setSubLayersVisible(layerId, subLayers) {
const olLayer = map.getAllLayers().find((l) => l.get("name") === layerId);
const allSubLayers = olLayer.get("allSublayers");

const subLayersToShow = Array.isArray(subLayers)
? subLayers
: allSubLayers;

setOLSubLayers(olLayer, subLayersToShow);
},
setGroupVisibility(groupId, visible) {
const groupTree = getGroupConfigById(staticLayerTree, groupId);
const allLayerIdsInGroup = getAllLayerIdsInGroup(groupTree);
Expand All @@ -239,18 +249,6 @@ const createDispatch = (map, staticLayerConfig, staticLayerTree) => {
olLayer.setVisible(visible);
});
},
setGroupLayerVisibility(layerId, visible) {
const olLayer = map.getAllLayers().find((l) => l.get("name") === layerId);
const allSubLayers = new Set(olLayer.get("subLayers"));

if (visible) {
olLayer.set("subLayers", allSubLayers);
setOLSubLayers(olLayer, allSubLayers);
} else {
olLayer.set("subLayers", []);
setOLSubLayers(olLayer, []);
}
},
setAllLayersInvisible() {
map.getAllLayers().forEach((l) => {
const layerType = l.get("layerType");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined";
import TopicOutlinedIcon from "@mui/icons-material/TopicOutlined";

import HajkToolTip from "../../../components/HajkToolTip";
import { useLayerSwitcherDispatch } from "../LayerSwitcherProvider";

function QuickAccessPresets({
display,
Expand All @@ -55,6 +56,8 @@ function QuickAccessPresets({
// TODO: Needs a better way to handle this
const [tooltipOpen, setTooltipOpen] = useState(false);

const layerSwitcherDispatch = useLayerSwitcherDispatch();

const quickAccessPresetsArray = quickAccessPresets || [];

// Filter state
Expand Down Expand Up @@ -147,16 +150,11 @@ function QuickAccessPresets({
layer.setZIndex(l.drawOrder);
// Set opacity
layer.setOpacity(l.opacity);

// Special handling for layerGroups and baselayers
if (layer.get("layerType") === "group") {
if (l.visible === true) {
const subLayersToShow = l.subLayers ? l.subLayers : [];
globalObserver.publish("layerswitcher.showLayer", {
layer,
subLayersToShow,
});
} else {
globalObserver.publish("layerswitcher.hideLayer", layer);
layerSwitcherDispatch.setSubLayersVisible(l.id, l.subLayers);
}
} else if (layer.get("layerType") === "base") {
// Hide all other background layers
Expand Down Expand Up @@ -537,11 +535,11 @@ function QuickAccessPresets({
)}
</Typography>
) : (
filter.list.map((l) => {
filter.list.map((l, index) => {
return (
<ListItemButton
dense
key={l.id}
key={l.metadata?.savedAt || index}
divider
onClick={() => handleLpClick(l)}
>
Expand Down