mirror of
https://forge.chapril.org/tykayn/osm-commerces
synced 2025-06-20 01:44:42 +02:00
curl script
This commit is contained in:
parent
cf292c6266
commit
0f5ff6ed45
2 changed files with 68 additions and 77 deletions
16
labourage.sh
16
labourage.sh
|
@ -12,6 +12,22 @@ codes_postaux=(
|
||||||
"33000" # Bordeaux
|
"33000" # Bordeaux
|
||||||
"59000" # Lille
|
"59000" # Lille
|
||||||
"35000" # Rennes
|
"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
|
# Pour chaque code postal
|
||||||
|
|
|
@ -35,11 +35,33 @@
|
||||||
zoom: 10
|
zoom: 10
|
||||||
});
|
});
|
||||||
|
|
||||||
// Ajouter les marqueurs pour chaque zone
|
// Fonction pour obtenir la couleur selon le pourcentage
|
||||||
// Fonction pour récupérer tous les centroides des codes postaux en une seule requête
|
function getColorFromPercent(percent) {
|
||||||
async function getAllPostalCodesCoordinates() {
|
const red = Math.round(255 * (1 - percent/100));
|
||||||
|
const green = Math.round(255 * (percent/100));
|
||||||
|
return `rgb(${red}, ${green}, 0)`;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 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 %}];
|
const postalCodes = [{% for stat in stats %}'{{ stat.zone }}'{% if not loop.last %}, {% endif %}{% endfor %}];
|
||||||
|
|
||||||
|
console.log(postalCodes);
|
||||||
let postalLines = ``;
|
let postalLines = ``;
|
||||||
postalCodes.forEach(code => {
|
postalCodes.forEach(code => {
|
||||||
if (/^\d+$/.test(code)) {
|
if (/^\d+$/.test(code)) {
|
||||||
|
@ -59,92 +81,45 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
return data.elements.reduce((acc, element) => {
|
console.log(data);
|
||||||
// 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
|
// Ajouter un marqueur pour chaque point de la réponse
|
||||||
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 => {
|
|
||||||
const bounds = new maplibregl.LngLatBounds();
|
const bounds = new maplibregl.LngLatBounds();
|
||||||
|
|
||||||
{% for stat in stats %}
|
data.elements.forEach(element => {
|
||||||
|
if (element.lat && element.lon) {
|
||||||
|
bounds.extend([element.lon, element.lat]);
|
||||||
|
|
||||||
const coordinatesMapped{{ stat.zone }} = coordinatesMap['{{ stat.zone }}'];
|
|
||||||
if (coordinatesMapped{{ stat.zone }}) {
|
|
||||||
const el = document.createElement('div');
|
const el = document.createElement('div');
|
||||||
el.style.width = '20px';
|
el.className = 'marker';
|
||||||
el.style.height = '20px';
|
el.style.width = '10px';
|
||||||
|
el.style.height = '10px';
|
||||||
el.style.borderRadius = '50%';
|
el.style.borderRadius = '50%';
|
||||||
el.style.backgroundColor = getColorFromPercent({{ stat.completionPercent }});
|
el.style.backgroundColor = '#ff0000';
|
||||||
|
|
||||||
// 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
|
|
||||||
new maplibregl.Marker(el)
|
new maplibregl.Marker(el)
|
||||||
.setLngLat(coordinatesMapped{{ stat.zone }})
|
.setLngLat([element.lon, element.lat])
|
||||||
.setPopup(new maplibregl.Popup().setHTML(`
|
.setPopup(new maplibregl.Popup({ offset: 25 })
|
||||||
<h3>{{ stat.zone }}</h3>
|
.setHTML(`<h4>${element.tags?.name || 'Sans nom'}</h4>`))
|
||||||
<p>Nombre de commerces: {{ stat.placesCount }}</p>
|
|
||||||
<p>Complétude: {{ stat.completionPercent }}%</p>
|
|
||||||
`))
|
|
||||||
.addTo(map);
|
.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(`
|
|
||||||
<h4>Code Postal: {{ stat.zone }}</h4>
|
|
||||||
<p>Zone: {{ stat.zone }}</p>
|
|
||||||
`))
|
|
||||||
.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()) {
|
if (!bounds.isEmpty()) {
|
||||||
map.fitBounds(bounds, {
|
map.fitBounds(bounds, {
|
||||||
padding: 50
|
padding: 50
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
// Attendre le chargement du DOM
|
return data.elements.reduce((acc, element) => {
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
if (element.tags?.['postal_code']) {
|
||||||
// Récupérer le bouton labourer
|
acc[element.tags['postal_code']] = [element.lon, element.lat];
|
||||||
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 acc;
|
||||||
|
}, {});
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue