From 0f5ff6ed452651fb2f51d0858b957c3f062bf270 Mon Sep 17 00:00:00 2001 From: Tykayn Date: Sun, 1 Jun 2025 20:08:57 +0200 Subject: [PATCH] curl script --- labourage.sh | 16 ++++ templates/public/dashboard.html.twig | 129 +++++++++++---------------- 2 files changed, 68 insertions(+), 77 deletions(-) diff --git a/labourage.sh b/labourage.sh index ed3197a..343c114 100644 --- a/labourage.sh +++ b/labourage.sh @@ -12,6 +12,22 @@ codes_postaux=( "33000" # Bordeaux "59000" # Lille "35000" # Rennes + "75013" # Paris 13e + "75014" # Paris 14e + "75015" # Paris 15e + "75016" # Paris 16e + "75017" # Paris 17e + "75018" # Paris 18e + "75019" # Paris 19e + "76000" # Rouen + "76200" # Dieppe + "77000" # Melun + "78000" # Versailles + "79000" # Orléans + "80000" # Amiens + "81000" # Albi + "42000" # Saint-Étienne + "37000" # Tours ) # Pour chaque code postal diff --git a/templates/public/dashboard.html.twig b/templates/public/dashboard.html.twig index eb94b7f..2cf5c97 100644 --- a/templates/public/dashboard.html.twig +++ b/templates/public/dashboard.html.twig @@ -34,12 +34,34 @@ center: [2.3488, 48.8534], // Paris zoom: 10 }); + + // Fonction pour obtenir la couleur selon le pourcentage + function getColorFromPercent(percent) { + const red = Math.round(255 * (1 - percent/100)); + const green = Math.round(255 * (percent/100)); + return `rgb(${red}, ${green}, 0)`; + } - // Ajouter les marqueurs pour chaque zone - // Fonction pour récupérer tous les centroides des codes postaux en une seule requête - async function getAllPostalCodesCoordinates() { - const postalCodes = [{% for stat in stats %}'{{ stat.zone }}'{% if not loop.last %}, {% endif %}{% endfor %}]; + + + // Attendre le chargement du DOM + document.addEventListener('DOMContentLoaded', function() { + // Récupérer le bouton labourer + const btnLabourer = document.querySelector('#labourer'); + if (btnLabourer) { + // Ajouter l'écouteur d'événement click + btnLabourer.addEventListener('click', function() { + // Récupérer la valeur du code postal + const codePostal = document.querySelector('#app_admin_labourer').value; + // Rediriger vers la route de labourage avec le code postal + window.location.href = `/admin/labourer/${codePostal}`; + }); + } + + +const postalCodes = [{% for stat in stats %}'{{ stat.zone }}'{% if not loop.last %}, {% endif %}{% endfor %}]; + console.log(postalCodes); let postalLines = ``; postalCodes.forEach(code => { if (/^\d+$/.test(code)) { @@ -59,92 +81,45 @@ }); const data = await response.json(); - return data.elements.reduce((acc, element) => { - // On associe chaque code postal à ses coordonnées - const postalCode = element.tags.postal_code; - // Vérifier que le lieu a un nom non vide - if (postalCode && element.tags.name && element.tags.name.trim() !== '') { - acc[postalCode] = [element.lon, element.lat]; - } - return acc; - }, {}); - } - - // Fonction pour obtenir la couleur selon le pourcentage - function getColorFromPercent(percent) { - const red = Math.round(255 * (1 - percent/100)); - const green = Math.round(255 * (percent/100)); - return `rgb(${red}, ${green}, 0)`; - } - - // On récupère toutes les coordonnées en une seule fois - getAllPostalCodesCoordinates().then(coordinatesMap => { + console.log(data); + + // Ajouter un marqueur pour chaque point de la réponse const bounds = new maplibregl.LngLatBounds(); - {% for stat in stats %} - - const coordinatesMapped{{ stat.zone }} = coordinatesMap['{{ stat.zone }}']; - if (coordinatesMapped{{ stat.zone }}) { + data.elements.forEach(element => { + if (element.lat && element.lon) { + bounds.extend([element.lon, element.lat]); + const el = document.createElement('div'); - el.style.width = '20px'; - el.style.height = '20px'; + el.className = 'marker'; + el.style.width = '10px'; + el.style.height = '10px'; el.style.borderRadius = '50%'; - el.style.backgroundColor = getColorFromPercent({{ stat.completionPercent }}); - - // Créer un élément pour le marqueur du code postal - const postalEl = document.createElement('div'); - postalEl.style.width = '15px'; - postalEl.style.height = '15px'; - postalEl.style.borderRadius = '50%'; - postalEl.style.backgroundColor = '#0000ff'; - postalEl.style.border = '2px solid white'; - postalEl.style.boxShadow = '0 0 4px rgba(0,0,0,0.5)'; - - // Ajouter le marqueur principal + el.style.backgroundColor = '#ff0000'; + new maplibregl.Marker(el) - .setLngLat(coordinatesMapped{{ stat.zone }}) - .setPopup(new maplibregl.Popup().setHTML(` -

{{ stat.zone }}

-

Nombre de commerces: {{ stat.placesCount }}

-

Complétude: {{ stat.completionPercent }}%

- `)) + .setLngLat([element.lon, element.lat]) + .setPopup(new maplibregl.Popup({ offset: 25 }) + .setHTML(`

${element.tags?.name || 'Sans nom'}

`)) .addTo(map); - - // Ajouter le marqueur du code postal légèrement décalé - const [lon, lat] = coordinatesMapped{{ stat.zone }}; - new maplibregl.Marker(postalEl) - .setLngLat([lon + 0.001, lat + 0.001]) // Décalage de 0.001 degré - .setPopup(new maplibregl.Popup().setHTML(` -

Code Postal: {{ stat.zone }}

-

Zone: {{ stat.zone }}

- `)) - .addTo(map); - - bounds.extend(coordinatesMapped{{ stat.zone }}); } - {% endfor %} - - // Ajuster la vue pour montrer tous les marqueurs + }); + + // Recentrer la carte sur les marqueurs if (!bounds.isEmpty()) { map.fitBounds(bounds, { padding: 50 }); } - }); - // Attendre le chargement du DOM - document.addEventListener('DOMContentLoaded', function() { - // Récupérer le bouton labourer - const btnLabourer = document.querySelector('#labourer'); - if (btnLabourer) { - // Ajouter l'écouteur d'événement click - btnLabourer.addEventListener('click', function() { - // Récupérer la valeur du code postal - const codePostal = document.querySelector('#app_admin_labourer').value; - // Rediriger vers la route de labourage avec le code postal - window.location.href = `/admin/labourer/${codePostal}`; - }); - } + return data.elements.reduce((acc, element) => { + if (element.tags?.['postal_code']) { + acc[element.tags['postal_code']] = [element.lon, element.lat]; + } + return acc; + }, {}); + + }); {% endblock %}