Skip to content

Commit 7289aed

Browse files
author
jannik brack
committed
Layer on table can be selected by LayersSidebar
1 parent bb58f83 commit 7289aed

File tree

4 files changed

+29
-11
lines changed

4 files changed

+29
-11
lines changed

multi_tab/src/App.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import Box from "@mui/material/Box";
88
import {useState} from "react";
99

1010
function App() {
11-
const [openSidebar, setOpenSidebar] = useState(false);
11+
const [openSidebar, setOpenSidebar] = useState(true);
1212
const ghPagesUrl = 'https://mapcomponents.github.io/react-map-components-maplibre/';
1313
const logoUrl = ghPagesUrl + 'assets/WG-MapComponents-Logo_rgb.svg';
1414

multi_tab/src/components/DataTableManager.jsx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ export default function DataTableManager() {
1010
const [visibleIDs, setVisibleIDs] = useState([]);
1111
const [selected, setSelected] = useState();
1212
const [selectedLayer, setSelectedLayer] = useState("all");
13-
const [tableSplit, setTableSplit] = useState(true);
13+
const [tableSplit, setTableSplit] = useState(false);
14+
const [parksVisible, setParksVisible] = useState(true);
15+
const [restaurantsVisible, setRestaurantsVisible] = useState(true);
1416
/*const [showOnlyVisibleObjects, setShowOnlyVisibleObjects] = useState(true);*/
1517

1618
useEffect(() => {
@@ -23,6 +25,21 @@ export default function DataTableManager() {
2325
break;
2426
case "selectedFromLayerManager":
2527
setSelected(message.selected);
28+
break;
29+
case"visibleLayers":
30+
console.log(message);
31+
setParksVisible(message.parksShown);
32+
setRestaurantsVisible(message.restaurantsShown);
33+
setSelectedLayer(
34+
message.parksShown && message.restaurantsShown
35+
? 'all'
36+
: message.restaurantsShown
37+
? 'restaurant'
38+
: message.parksShown
39+
? 'park'
40+
: ''
41+
);
42+
2643
break;
2744
default:
2845
console.warn(`Unhandled message type: ${type}`);

multi_tab/src/components/LayerManager.jsx

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {LayerList, Sidebar, useMap,} from "@mapcomponents/react-maplibre";
1+
import {LayerList, Sidebar, useMap, useMapState,} from "@mapcomponents/react-maplibre";
22
import ParkLayer from "./Layers/ParkLayer.tsx";
33
import {useContext, useEffect, useState} from "react";
44
import {sendMessageToServiceWorker} from "../js/sendMessageToSW";
@@ -57,6 +57,12 @@ export default function LayerManager(props) {
5757

5858
const data = useContext(DataContext);
5959

60+
const mapState = useMapState({
61+
watch:{
62+
layers: true
63+
},
64+
})
65+
6066

6167
useEffect(() => {
6268
if ('serviceWorker' in navigator) {
@@ -73,7 +79,7 @@ export default function LayerManager(props) {
7379
navigator.serviceWorker.removeEventListener('message', handleMessage);
7480
};
7581
}
76-
}, [setSelected]);
82+
}, []);
7783

7884
useEffect(() => {
7985
if (!mapHook.map || !selected) return;
@@ -124,21 +130,16 @@ export default function LayerManager(props) {
124130
}, [mapHook.map]);
125131

126132
useEffect(() => {
127-
console.log("test")
128133
if (!mapHook.map) return;
129134

130-
console.log({
131-
parksShown: mapHook.map.getLayer('parks').visibility === "visible",
132-
restaurantsShown: mapHook.map.getLayer('restaurants').visibility === "visible",
133-
})
134135
sendMessageToServiceWorker({
135136
type: "visibleLayers",
136137
message: {
137138
parksShown: mapHook.map.getLayer('parks').visibility === "visible",
138139
restaurantsShown: mapHook.map.getLayer('restaurants').visibility === "visible",
139140
}
140141
})
141-
}, [mapHook.map.style._layers.parks.visibility === "visible"]);
142+
}, [mapState.layers]);
142143
return (
143144
<>
144145
<Sidebar open={props.openSidebar} setOpen={props.setOpenSidebar} name={"Layers"} >

multi_tab/src/components/UI_Components/DataTable.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const createObjectList = (data, visibleIDs, selectedLayer) => {
99
return Object.values(data).flatMap(value =>
1010
value.features.filter(feature => {
1111
const isVisible = visibleIDs.length === 0 || visibleIDs.includes(feature.id);
12-
const isCorrectLayer = selectedLayer === "all" || feature.properties.amenity === selectedLayer;
12+
const isCorrectLayer = (selectedLayer === "all" || feature.properties.amenity === selectedLayer);
1313
return isVisible && isCorrectLayer;
1414
})
1515
);

0 commit comments

Comments
 (0)