@php
$compact = $compact ?? false;
$showWorker = $showWorker ?? false;
$entries = ($entries ?? collect())->sortBy('started_at')->values();
$formatSeconds = static function (int $seconds): string {
$seconds = max(0, $seconds);
return sprintf('%02d:%02d:%02d', intdiv($seconds, 3600), intdiv($seconds % 3600, 60), $seconds % 60);
};
$sessionsByDate = $entries->groupBy(function ($entry) {
return $entry->started_at?->toDateString() ?? 'unknown';
})->sortKeysDesc();
$grandTotal = (int) $entries->sum(fn ($entry) => $entry->elapsedSeconds());
@endphp
@if($entries->isEmpty())
@unless($compact)
Aucune session chrono pour le moment.
@endunless
@else
@foreach($sessionsByDate as $dateKey => $dayEntries)
@php
$day = \Illuminate\Support\Carbon::parse($dateKey)->locale('fr');
$dayLabel = $day->isToday()
? "Aujourd'hui"
: ($day->isYesterday() ? 'Hier' : $day->translatedFormat('D j M Y'));
$dayTotal = (int) $dayEntries->sum(fn ($entry) => $entry->elapsedSeconds());
@endphp
{{ $dayLabel }}
{{ $formatSeconds($dayTotal) }}
@foreach($dayEntries as $entry)
-
{{ $entry->started_at?->format('H:i') ?? '…' }}
→
{{ $entry->isRunning() ? 'en cours' : ($entry->stopped_at?->format('H:i') ?? '…') }}
@if($showWorker && $entry->employer?->user?->name)
· {{ $entry->employer->user->name }}
@endif
{{ $formatSeconds($entry->elapsedSeconds()) }}
@endforeach
@endforeach
@unless($compact)
Total
{{ $formatSeconds($grandTotal) }}
@endunless
@endif