{{-- Grille annees x mois : une ligne par annee (la plus recente en haut), un mois par colonne, plus la case est foncee plus le volume est fort (HistoriqueParPeriode::grille). Styles dans css/commandes/historique-periodes.css. Sur l'historique et sur le tableau de bord : les deux doivent lire le meme chiffre, d'ou un seul dessin. Variables : - $grille : HistoriqueParPeriode::grille() ; - $lien : fn (array $params) => url, ou null pour une grille sans liens (visiteur qui n'a pas acces a l'historique) ; - $periode : cle de la periode choisie ('2026-09'), optionnelle. --}} @php $periode ??= null; $maxGrille = max(1, ...collect($grille)->flatMap(fn ($a) => $a['mois'])->filter()->all() ?: [1]); $nombreGrille = fn ($n) => number_format((int) $n, 0, ',', ' '); @endphp
| @for ($m = 1; $m <= 12; $m++) | {{ ucfirst(\Illuminate\Support\Carbon::create(2000, $m, 1)->locale(app()->getLocale())->isoFormat('MMM')) }} | @endfor{{ __('Total') }} |
|---|---|---|
| {{ $a }} | @foreach ($ligne['mois'] as $m => $n) @php $cle = sprintf('%d-%02d', $a, $m); $intensite = $n ? round($n / $maxGrille * .85 + .1, 2) : 0; $classes = trim(($periode === $cle ? 'arr-choisie ' : '') . ($intensite > .55 ? 'arr-case-fonce' : '')); $infobulle = ucfirst(\Illuminate\Support\Carbon::create($a, $m, 1)->locale(app()->getLocale())->isoFormat('MMMM YYYY')) . ' : ' . $nombreGrille($n); @endphp@if ($n === null) ยท @elseif ($lien) {{ $n ?: '' }} @else {{ $n ?: '' }} @endif | @endforeach@if ($lien) {{ $nombreGrille($ligne['total']) }} @else {{ $nombreGrille($ligne['total']) }} @endif |