diff --git a/assets/app.js b/assets/app.js
index 89eb288..01af674 100644
--- a/assets/app.js
+++ b/assets/app.js
@@ -529,17 +529,21 @@ document.addEventListener('DOMContentLoaded', () => {
const completionPercentage = (filledInputs / totalInputs) * 100;
const progressBar = document.querySelector('#completion_progress .progress-bar');
- progressBar.style.width = completionPercentage + '%';
- progressBar.setAttribute('aria-valuenow', completionPercentage);
-
- document.querySelector('#completion_display').innerHTML = `Votre commerce est complété à ${Math.round(completionPercentage)}%`;
+ if (progressBar) {
+ progressBar.style.width = completionPercentage + '%';
+ progressBar.setAttribute('aria-valuenow', completionPercentage);
+ document.querySelector('#completion_display').innerHTML = `Votre commerce est complété à ${Math.round(completionPercentage)}%`;
+ }
}
document.querySelectorAll('input[type="text"]').forEach(input => {
input.addEventListener('blur', updateCompletionProgress);
});
-
- document.querySelector('form').addEventListener('submit', check_validity);
+ const form = document.querySelector('form')
+ if (form) {
+ form.addEventListener('submit', check_validity);
+ updateCompletionProgress()
+ }
document.addEventListener('DOMContentLoaded', updateCompletionProgress);
// Focus sur le premier champ texte au chargement
@@ -574,5 +578,6 @@ document.addEventListener('DOMContentLoaded', () => {
parseCuisine();
-});
+
+});
diff --git a/public/css/main.css b/public/css/main.css
index 52bc912..fd657ac 100644
--- a/public/css/main.css
+++ b/public/css/main.css
@@ -56,6 +56,10 @@
box-shadow: 0 -2px 4px rgba(0, 0, 0, .1);
}
+#completion_progress .container {
+ padding: 0;
+}
+
/* Media queries */
@media (max-width: 768px) {
.main-header h1 {
diff --git a/src/Controller/AdminController.php b/src/Controller/AdminController.php
index 792053d..3016ef1 100644
--- a/src/Controller/AdminController.php
+++ b/src/Controller/AdminController.php
@@ -72,7 +72,9 @@ final class AdminController extends AbstractController
return $this->render('admin/stats.html.twig', [
'stats' => $stats,
'zip_code' => $zip_code,
- 'counters' => $calculatedStats['counters']
+ 'counters' => $calculatedStats['counters'],
+ 'maptiler_token' => $_ENV['MAPTILER_TOKEN'],
+ 'mapbox_token' => $_ENV['MAPBOX_TOKEN'],
]);
}
diff --git a/src/Controller/PublicController.php b/src/Controller/PublicController.php
index 61b5b9c..7e86e8e 100644
--- a/src/Controller/PublicController.php
+++ b/src/Controller/PublicController.php
@@ -127,7 +127,7 @@ class PublicController extends AbstractController
{
$place = $this->entityManager->getRepository(Place::class)->findOneBy(['uuid_for_url' => $uuid]);
if (!$place) {
- $this->addFlash('warning', 'Ce lien de modification n\'existe pas.');
+ $this->addFlash('warning', 'Ce lien de modification n\'existe pas.'+$uuid);
return $this->redirectToRoute('app_public_index');
}
@@ -152,6 +152,7 @@ class PublicController extends AbstractController
'commerce_overpass' => $commerce_overpass,
'name' => $name,
'commerce' => $place,
+ 'completion_percentage' => $place->getCompletionPercentage(),
'hide_filled_inputs' => $this->hide_filled_inputs,
'excluded_tags_to_render' => $this->motocultrice->excluded_tags_to_render,
'osm_kind' => $place->getOsmKind(),
@@ -169,6 +170,8 @@ class PublicController extends AbstractController
$places = $this->entityManager->getRepository(Place::class)->findBy([], ['zip_code' => 'ASC', 'name' => 'ASC']);
return $this->render('public/dashboard.html.twig', [
'controller_name' => 'PublicController',
+ 'mapbox_token' => $_ENV['MAPBOX_TOKEN'],
+ 'maptiler_token' => $_ENV['MAPTILER_TOKEN'],
'stats' => $stats,
'places' => $places,
]);
diff --git a/src/Entity/Place.php b/src/Entity/Place.php
index aa65cdb..1b3e685 100644
--- a/src/Entity/Place.php
+++ b/src/Entity/Place.php
@@ -76,7 +76,29 @@ class Place
#[ORM\Column(nullable: true)]
private ?bool $has_note = null;
- public function update_place_from_overpass_data(array $overpass_data) {
+ public function getCompletionPercentage(): ?int
+ {
+ $completion_percentage = 0;
+ $total_fields = 5;
+ $filled_fields = 0;
+ if ($this->has_opening_hours) {
+ $filled_fields += 1;
+ }
+ if ($this->has_address) {
+ $filled_fields += 1;
+ }
+ if ($this->has_website) {
+ $filled_fields += 1;
+ }
+ if ($this->has_wheelchair) {
+ $filled_fields += 1;
+ }
+ if ($this->has_note) {
+ $filled_fields += 1;
+ }
+ return round($filled_fields / $total_fields * 100);
+ }
+ public function update_place_from_overpass_data(array $overpass_data) {
$overpass_data = $overpass_data['tags_converted'] ;
// Remplir les clés attendues avec des valeurs par défaut si non définies
diff --git a/templates/admin/stats.html.twig b/templates/admin/stats.html.twig
index 3ccc08a..44df53d 100644
--- a/templates/admin/stats.html.twig
+++ b/templates/admin/stats.html.twig
@@ -24,7 +24,7 @@
{{ stats.getAvecNote() }} commerces avec note renseignée.
-
+
- {{ commerce.name }} + {% if commerce.name |length %} {{ commerce.name |slice(0, 20) }}... {% else %} (lieu sans nom) {% endif %} | {{ commerce.address }} | @@ -54,22 +54,88 @@