From 9a85917e22086279f546e97e056b82f1029d4703 Mon Sep 17 00:00:00 2001 From: Clement Date: Tue, 4 Jun 2024 22:11:33 +0200 Subject: [PATCH] filtre okay --- front/src/pages/maps/index.astro | 96 +++++++++++++++++++------------- 1 file changed, 57 insertions(+), 39 deletions(-) diff --git a/front/src/pages/maps/index.astro b/front/src/pages/maps/index.astro index 0d872a6..2049d58 100644 --- a/front/src/pages/maps/index.astro +++ b/front/src/pages/maps/index.astro @@ -33,6 +33,7 @@ const metadata = {
@@ -81,7 +82,7 @@ const metadata = { // move zoom ctl to bottom L.control.zoom({ position: 'bottomleft' - }).addTo(map); + }).addTo(map) const provider = new OpenStreetMapProvider() @@ -95,43 +96,46 @@ const metadata = { ) let poiMarkers = new Array - let minimalNote = "1"; + let minimalNote = "1" + let drink = true + let otm = true + // run api search function searchBox(){ const nordWest = map.getBounds().getNorthWest() const southEast = map.getBounds().getSouthEast() - const params: URLSearchParams = new URLSearchParams(); + const params: URLSearchParams = new URLSearchParams() params.append("lon1", nordWest.lng.toString()) params.append("lat1", nordWest.lat.toString()) params.append("lon2", southEast.lng.toString()) params.append("lat2", southEast.lat.toString()) - params.append("rate", minimalNote); + params.append("rate", minimalNote) - console.log(params); - - fetch(`${BACK_URL}otm/box?${params.toString()}`,{method: 'GET',headers: {'Content-Type': 'application/json'}}).then(function (response) { - return response.json(); - }).then(function (data) { - poiMarkers.forEach(element => { - element.remove(); - }); - console.log(data) - data.features.forEach(element => { - const prop = element.properties - const popup: Popup = new Popup() - let tags = new String() - prop.kinds.split(",").forEach(element => { - tags += "- " + element + "
" - }); - const poiMarker = L.marker([element.geometry.coordinates[1],element.geometry.coordinates[0]],icon) - .bindPopup(`${prop.name}
note : ${prop.rate}
tags:
${tags}`) - poiMarker.addTo(map) - poiMarkers.push(poiMarker); - }); - }).catch(function (err) { - console.warn('Something went wrong.', err); - }); + if(drink && otm){ + fetch(`${BACK_URL}otm/box?${params.toString()}`,{method: 'GET',headers: {'Content-Type': 'application/json'}}).then(function (response) { + return response.json() + }).then(function (data) { + poiMarkers.forEach(element => { + element.remove() + }) + console.log(data) + data.features.forEach(element => { + const prop = element.properties + const popup: Popup = new Popup() + let tags = new String() + prop.kinds.split(",").forEach(element => { + tags += "- " + element + "
" + }) + const poiMarker = L.marker([element.geometry.coordinates[1],element.geometry.coordinates[0]],icon) + .bindPopup(`${prop.name}
note : ${prop.rate}
tags:
${tags}`) + poiMarker.addTo(map) + poiMarkers.push(poiMarker) + }) + }).catch(function (err) { + console.warn('Something went wrong.', err) + }) + } } // fonciton pour lancer la recherche de box sur l'api @@ -139,36 +143,49 @@ const metadata = { if(map.getZoom() >= 13){ console.log("zoom OKAY") //TODO: mettre un message de recherche en cour - searchBox(); + searchBox() }else{ - console.log("zoom more to see result"); + console.log("zoom more to see result") } } // envent pour lancer la recherche - const cooldown = 1000; + const cooldown = 1000 sender() let timeoutHandle = window.setTimeout(sender, cooldown) - window.clearTimeout(timeoutHandle); + window.clearTimeout(timeoutHandle) map.addEventListener("move",() =>{ - window.clearTimeout(timeoutHandle); - timeoutHandle = window.setTimeout(sender, cooldown); + window.clearTimeout(timeoutHandle) + timeoutHandle = window.setTimeout(sender, cooldown) }) map.addEventListener("zoom", () => { if(map.getZoom() <= 11){ poiMarkers.forEach(element => { element.remove() - }); + }) } }) - document.querySelectorAll("input").forEach(e =>{ + document.querySelectorAll("input[type='checkbox']").forEach(e =>{ e.addEventListener("click", () => { - console.log("checked : ", e.checked) - console.log("val ", e.value) - console.log("name: ", e.name) + switch (e.name) { + case "drink": + drink = e.checked + break; + + case "otm": + otm = e.checked + break; + + default: + break; + } + poiMarkers.forEach(element => { + element.remove() + }) + searchBox() }) }) @@ -176,5 +193,6 @@ const metadata = { e.addEventListener("click", () => { minimalNote = e.value }) + searchBox() })