From cf292c62665d9dddb2d39b3f4d4addaab748ddfb Mon Sep 17 00:00:00 2001 From: Tykayn Date: Sun, 1 Jun 2025 19:52:56 +0200 Subject: [PATCH] ajout de maplibre sur les stats --- assets/app.js | 5 +- labourage.sh | 28 +++++ src/Controller/AdminController.php | 12 ++ src/DataFixtures/HistoryFixtures.php | 1 + src/Entity/Place.php | 16 +++ templates/admin/stats.html.twig | 162 ++++++++++++++------------- templates/public/dashboard.html.twig | 89 ++++++++++++--- 7 files changed, 216 insertions(+), 97 deletions(-) create mode 100644 labourage.sh diff --git a/assets/app.js b/assets/app.js index d1d1a0b2..a46ea867 100644 --- a/assets/app.js +++ b/assets/app.js @@ -10,13 +10,12 @@ import './styles/app.css'; console.log('Hello World de app.js'); -function labourer() { - window.location.href = '/admin/labourer/' + document.getElementById('app_admin_labourer').value; -} // Attendre le chargement du DOM document.addEventListener('DOMContentLoaded', () => { console.log('DOMContentLoaded'); + + // Générer une couleur pastel aléatoire const genererCouleurPastel = () => { // Utiliser des valeurs plus claires (180-255) pour obtenir des tons pastel diff --git a/labourage.sh b/labourage.sh new file mode 100644 index 00000000..ed3197a0 --- /dev/null +++ b/labourage.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Les 10 codes postaux des villes les plus peuplées de France +codes_postaux=( + "75001" # Paris 1er + "13001" # Marseille 1er + "69001" # Lyon 1er + "31000" # Toulouse + "06000" # Nice + "44000" # Nantes + "67000" # Strasbourg + "33000" # Bordeaux + "59000" # Lille + "35000" # Rennes +) + +# Pour chaque code postal +for code in "${codes_postaux[@]}"; do + echo "Traitement du code postal: $code" + + # Faire la requête curl + curl -X GET "https://osm-commerces.cipherbliss.com/admin/labourer/$code" + + # Attendre 5 secondes entre chaque requête pour ne pas surcharger le serveur + sleep 5 +done + +echo "Traitement terminé" diff --git a/src/Controller/AdminController.php b/src/Controller/AdminController.php index 3016ef1b..c7094e68 100644 --- a/src/Controller/AdminController.php +++ b/src/Controller/AdminController.php @@ -193,6 +193,16 @@ final class AdminController extends AbstractController // on crée un commerce pour chaque résultat qui reste foreach ($results as $result) { $commerce = new Place(); + + if (isset($result['tags']['amenity'])) { + $commerce->setMainTag('amenity='.$result['tags']['amenity']); + } + if (isset($result['tags']['shop'])) { + $commerce->setMainTag('shop='.$result['tags']['shop']); + } + if (isset($result['tags']['tourism'])) { + $commerce->setMainTag('tourism='.$result['tags']['tourism']); + } $commerce->setOsmId($result['id']) ->setOsmKind($result['type']) ->setName($result['name']) @@ -248,10 +258,12 @@ final class AdminController extends AbstractController public function delete_by_zone(string $zip_code): Response { $commerces = $this->entityManager->getRepository(Place::class)->findBy(['zip_code' => $zip_code]); + $stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $zip_code]); foreach ($commerces as $commerce) { $this->entityManager->remove($commerce); } + $this->entityManager->remove($stats); $this->entityManager->flush(); $this->addFlash('success', 'Tous les commerces de la zone '.$zip_code.' ont été supprimés avec succès de OSM Mes commerces, mais pas dans OpenStreetMap.'); diff --git a/src/DataFixtures/HistoryFixtures.php b/src/DataFixtures/HistoryFixtures.php index 7819eb02..8a3aa87e 100644 --- a/src/DataFixtures/HistoryFixtures.php +++ b/src/DataFixtures/HistoryFixtures.php @@ -29,6 +29,7 @@ class HistoryFixtures extends Fixture ->setOptedOut($faker->boolean) ->setDead($faker->boolean) ->setNote($faker->text) + ->setMainTag($faker->randomElement(['amenity=cafe', 'shop=supermarket', 'tourism=museum'])) ->setModifiedDate($faker->dateTimeBetween('-1 year', 'now')) ->setAskedHumainsSupport($faker->boolean) ->setLastContactAttemptDate($faker->dateTimeBetween('-1 year', 'now')) diff --git a/src/Entity/Place.php b/src/Entity/Place.php index 1b3e6855..134e17e5 100644 --- a/src/Entity/Place.php +++ b/src/Entity/Place.php @@ -76,6 +76,22 @@ class Place #[ORM\Column(nullable: true)] private ?bool $has_note = null; + #[ORM\Column(nullable: true)] + private ?string $main_tag = null; + + public function getMainTag(): ?string + { + return $this->main_tag; + } + + public function setMainTag(?string $main_tag): static + { + $this->main_tag = $main_tag; + + return $this; + } + + public function getCompletionPercentage(): ?int { $completion_percentage = 0; diff --git a/templates/admin/stats.html.twig b/templates/admin/stats.html.twig index 06654b68..51237756 100644 --- a/templates/admin/stats.html.twig +++ b/templates/admin/stats.html.twig @@ -2,6 +2,11 @@ {% block title %}{{ 'display.stats'|trans }}{% endblock %} +{% block stylesheets %} + {{ parent() }} + +{% endblock %} + {% block body %}
@@ -24,9 +29,9 @@ {{ stats.getAvecNote() }} commerces avec note renseignée.
-
+
-

Tableau des commerces

+

Tableau des lieux

@@ -41,107 +46,106 @@ {% for commerce in stats.places %} - + {% endfor %}
- - {% if not commerce.name |length %} - - (lieu sans nom) - - {% endif %} - {% if commerce.name |length > 50 %} {{ commerce.name |slice(0, 50) }}... {% else %} {{ commerce.name }} {% endif %} - + {{ commerce.name }} {{ commerce.address }} {{ commerce.website }} {{ commerce.wheelchair }}{{ commerce.note }}{{ commerce.note }}
-{% endblock %} -{% block javascripts %} - {{ parent() }} - - + + + sortTable(); + }); + {% endblock %} \ No newline at end of file diff --git a/templates/public/dashboard.html.twig b/templates/public/dashboard.html.twig index 3902a327..eb94b7fd 100644 --- a/templates/public/dashboard.html.twig +++ b/templates/public/dashboard.html.twig @@ -4,26 +4,31 @@ {% block stylesheets %} {{ parent() }} - + {% endblock %} {% block javascripts %} {{ parent() }} - + {% endblock %} @@ -100,11 +156,11 @@

Dashboard

-

Statistiques : {{ stats|length }} commerces

-mapDashboard: +

Statistiques : {{ stats|length }} codes postaux

+
- + @@ -140,6 +196,7 @@ mapDashboard: + @@ -154,11 +211,13 @@ mapDashboard: {% for place in places %} + +
NomTag Email Date de modification Date de dernier contact
{% if place.name %} {{ place.name }} {% else %} {% endif %} {{ place.mainTag }} {{ place.email }} {{ place.modifiedDate | date('Y-m-d H:i:s') }} {{ place.lastContactAttemptDate | date('Y-m-d H:i:s') }}