feat: use drink api in front and more #16

Merged
Clement merged 47 commits from feat/use-drink-api-in-front into master 2024-06-07 17:09:58 +00:00
Showing only changes of commit 9a85917e22 - Show all commits

View File

@ -33,6 +33,7 @@ const metadata = {
<CheckBox <CheckBox
label="Bar, Pub, Café,..." label="Bar, Pub, Café,..."
name="drink" name="drink"
checked
/> />
</div> </div>
<div class="mb-3"> <div class="mb-3">
@ -81,7 +82,7 @@ const metadata = {
// move zoom ctl to bottom // move zoom ctl to bottom
L.control.zoom({ L.control.zoom({
position: 'bottomleft' position: 'bottomleft'
}).addTo(map); }).addTo(map)
const provider = new OpenStreetMapProvider() const provider = new OpenStreetMapProvider()
@ -95,43 +96,46 @@ const metadata = {
) )
let poiMarkers = new Array<L.Marker> let poiMarkers = new Array<L.Marker>
let minimalNote = "1"; let minimalNote = "1"
let drink = true
let otm = true
// run api search // run api search
function searchBox(){ function searchBox(){
const nordWest = map.getBounds().getNorthWest() const nordWest = map.getBounds().getNorthWest()
const southEast = map.getBounds().getSouthEast() const southEast = map.getBounds().getSouthEast()
const params: URLSearchParams = new URLSearchParams(); const params: URLSearchParams = new URLSearchParams()
params.append("lon1", nordWest.lng.toString()) params.append("lon1", nordWest.lng.toString())
params.append("lat1", nordWest.lat.toString()) params.append("lat1", nordWest.lat.toString())
params.append("lon2", southEast.lng.toString()) params.append("lon2", southEast.lng.toString())
params.append("lat2", southEast.lat.toString()) params.append("lat2", southEast.lat.toString())
params.append("rate", minimalNote); params.append("rate", minimalNote)
console.log(params); if(drink && otm){
fetch(`${BACK_URL}otm/box?${params.toString()}`,{method: 'GET',headers: {'Content-Type': 'application/json'}}).then(function (response) {
fetch(`${BACK_URL}otm/box?${params.toString()}`,{method: 'GET',headers: {'Content-Type': 'application/json'}}).then(function (response) { return response.json()
return response.json(); }).then(function (data) {
}).then(function (data) { poiMarkers.forEach(element => {
poiMarkers.forEach(element => { element.remove()
element.remove(); })
}); console.log(data)
console.log(data) data.features.forEach(element => {
data.features.forEach(element => { const prop = element.properties
const prop = element.properties const popup: Popup = new Popup()
const popup: Popup = new Popup() let tags = new String()
let tags = new String() prop.kinds.split(",").forEach(element => {
prop.kinds.split(",").forEach(element => { tags += "- " + element + "<br/>"
tags += "- " + element + "<br/>" })
}); const poiMarker = L.marker([element.geometry.coordinates[1],element.geometry.coordinates[0]],icon)
const poiMarker = L.marker([element.geometry.coordinates[1],element.geometry.coordinates[0]],icon) .bindPopup(`<b>${prop.name}</b><br/>note : ${prop.rate} <br/>tags:<br/> ${tags}`)
.bindPopup(`<b>${prop.name}</b><br/>note : ${prop.rate} <br/>tags:<br/> ${tags}`) poiMarker.addTo(map)
poiMarker.addTo(map) poiMarkers.push(poiMarker)
poiMarkers.push(poiMarker); })
}); }).catch(function (err) {
}).catch(function (err) { console.warn('Something went wrong.', err)
console.warn('Something went wrong.', err); })
}); }
} }
// fonciton pour lancer la recherche de box sur l'api // fonciton pour lancer la recherche de box sur l'api
@ -139,36 +143,49 @@ const metadata = {
if(map.getZoom() >= 13){ if(map.getZoom() >= 13){
console.log("zoom OKAY") console.log("zoom OKAY")
//TODO: mettre un message de recherche en cour //TODO: mettre un message de recherche en cour
searchBox(); searchBox()
}else{ }else{
console.log("zoom more to see result"); console.log("zoom more to see result")
} }
} }
// envent pour lancer la recherche // envent pour lancer la recherche
const cooldown = 1000; const cooldown = 1000
sender() sender()
let timeoutHandle = window.setTimeout(sender, cooldown) let timeoutHandle = window.setTimeout(sender, cooldown)
window.clearTimeout(timeoutHandle); window.clearTimeout(timeoutHandle)
map.addEventListener("move",() =>{ map.addEventListener("move",() =>{
window.clearTimeout(timeoutHandle); window.clearTimeout(timeoutHandle)
timeoutHandle = window.setTimeout(sender, cooldown); timeoutHandle = window.setTimeout(sender, cooldown)
}) })
map.addEventListener("zoom", () => { map.addEventListener("zoom", () => {
if(map.getZoom() <= 11){ if(map.getZoom() <= 11){
poiMarkers.forEach(element => { poiMarkers.forEach(element => {
element.remove() element.remove()
}); })
} }
}) })
document.querySelectorAll("input").forEach(e =>{ document.querySelectorAll<HTMLInputElement>("input[type='checkbox']").forEach(e =>{
e.addEventListener("click", () => { e.addEventListener("click", () => {
console.log("checked : ", e.checked) switch (e.name) {
console.log("val ", e.value) case "drink":
console.log("name: ", e.name) 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", () => { e.addEventListener("click", () => {
minimalNote = e.value minimalNote = e.value
}) })
searchBox()
}) })
</script> </script>