add themes in main city page

This commit is contained in:
Tykayn 2025-11-19 23:03:58 +01:00 committed by tykayn
parent 952254b5d0
commit 03fede15aa
5 changed files with 91 additions and 18 deletions

View file

@ -1122,7 +1122,12 @@ class PublicController extends AbstractController
$types[$type][] = $fu;
}
}
// Récupérer tous les thèmes connus pour afficher même ceux sans données
$allThemes = \App\Service\FollowUpService::getFollowUpThemes();
$allIcons = \App\Service\FollowUpService::getFollowUpIcons();
$evolutions = [];
// D'abord, traiter les types qui ont des données
foreach ($types as $type => $fus) {
usort($fus, fn($a, $b) => $a->getDate() <=> $b->getDate());
$latest = end($fus);
@ -1140,6 +1145,23 @@ class PublicController extends AbstractController
$evolutions[$type][$label] = $past !== null && $latest ? $latest->getMeasure() - $past : null;
}
}
// Ensuite, ajouter les thèmes qui n'ont pas encore de données
foreach ($allThemes as $theme => $themeLabel) {
if (!isset($evolutions[$theme])) {
$evolutions[$theme] = [
'now' => null
];
foreach ($periods as $periodLabel => $date) {
$evolutions[$theme][$periodLabel] = null;
}
}
}
// Trier les évolutions par ordre alphabétique des labels
uksort($evolutions, function($a, $b) use ($allThemes) {
$labelA = $allThemes[$a] ?? $a;
$labelB = $allThemes[$b] ?? $b;
return strcasecmp($labelA, $labelB);
});
// Grouper les lieux par date de modification
$places = $stats->getPlaces();
$now = new \DateTime();
@ -1170,6 +1192,8 @@ class PublicController extends AbstractController
'places_7j' => $places_7j,
'places_30j' => $places_30j,
'places_6mois' => $places_6mois,
'theme_labels' => $allThemes,
'theme_icons' => $allIcons,
]);
}