@php $topThree = collect($players)->take(3); $leaderboard = collect($players)->skip(3); $champion = $topThree->first(); $rankTheme = [ 1 => ['ring' => 'ring-amber-300/60', 'avatar' => 'bg-gradient-to-br from-amber-400 to-yellow-600', 'label' => 'Juara 1', 'text' => 'text-amber-700', 'bg' => 'bg-amber-50', 'darkBg' => 'dark:bg-amber-500/10'], 2 => ['ring' => 'ring-slate-300/70', 'avatar' => 'bg-gradient-to-br from-slate-300 to-slate-500', 'label' => 'Juara 2', 'text' => 'text-slate-700', 'bg' => 'bg-slate-50', 'darkBg' => 'dark:bg-slate-400/10'], 3 => ['ring' => 'ring-orange-300/60', 'avatar' => 'bg-gradient-to-br from-orange-300 to-orange-600', 'label' => 'Juara 3', 'text' => 'text-orange-700', 'bg' => 'bg-orange-50', 'darkBg' => 'dark:bg-orange-500/10'], ]; // Show date range label if available, otherwise show week label if($dateRange) { $weekLabel = $dateRange['label']; } else { $weekLabel = $week['label'] ?? $selectedWeek ?? 'Minggu ini'; } @endphp {{-- Date Range Selector --}}
{{-- Refresh --}} Refresh
{{-- ===================================================================== ERROR STATE ====================================================================== --}} @if ($hasError)

Gagal terhubung ke API

{{ $errorMessage ?? 'Tidak bisa mengambil data duty saat ini. Coba beberapa saat lagi.' }}

Coba Lagi
{{-- ===================================================================== EMPTY STATE ====================================================================== --}} @elseif (count($players) === 0)

Belum ada data duty

Tidak ada data duty yang tercatat untuk periode {{ $weekLabel }}.

@if (count($weekOptions) > 0)

Coba pilih minggu lain di dropdown atas.

@endif
{{-- ===================================================================== DATA STATE ====================================================================== --}} @else {{-- Hero / Champion --}}
{{ $weekLabel }}

Petugas terbaik minggu ini berdasarkan total jam duty.

Data diambil langsung dari sistem duty operasional. Diperbarui setiap 5 menit. @if ($fetchedAt) Terakhir: {{ \Carbon\Carbon::parse($fetchedAt)->timezone('Asia/Jakarta')->format('H:i') }} WIB @endif

{{-- Champion card --}} @if ($champion)
{{ $champion['initials'] }}
Juara 1 @if ($champion['tag']) {{ $champion['tag'] }} @endif

{{ $champion['name'] }}

Total duty: {{ $champion['display'] }}

Hari

{{ $champion['days'] }}

Jam

{{ $champion['hours'] }}

Menit

{{ $champion['remaining'] }}

@endif
{{-- Summary Stats --}} @php $totalPlayers = count($players); $totalMinutes = collect($players)->sum('minutes'); $totalDays = intdiv($totalMinutes, 1440); $totalHours = intdiv($totalMinutes % 1440, 60); $topMinutes = $champion['minutes'] ?? 0; @endphp

Officer Aktif

{{ $totalPlayers }}

Total Hari Duty

{{ $totalDays }}

Total Jam Duty

{{ $totalHours + ($totalDays * 24) }}

Duty Teratas

{{ $champion ? $champion['display'] : '—' }}

{{-- Top 3 Cards --}} @if ($topThree->count() > 0)
@foreach ($topThree as $officer) @php $theme = $rankTheme[$officer['rank']] ?? $rankTheme[3]; @endphp
{{ $theme['label'] }} 0{{ $officer['rank'] }}
{{ $officer['initials'] }}

{{ $officer['name'] }}

@if ($officer['tag'])

{{ $officer['tag'] }}

@endif

{{ $officer['days'] }}

Hari

{{ $officer['hours'] }}

Jam

{{ $officer['remaining'] }}

Menit

{{ $officer['display'] }}

@endforeach
@endif {{-- Leaderboard + Progress --}}
{{-- Tabel peringkat 4+ --}}

Leaderboard Duty

Peringkat 4 ke bawah — {{ $weekLabel }}

@if ($leaderboard->count() > 0)
@foreach ($leaderboard as $officer) @endforeach
Rank Petugas Total Duty
{{ $officer['rank'] }}
{{ $officer['initials'] }}

{{ $officer['name'] }}

@if ($officer['tag'])

{{ $officer['tag'] }}

@endif
{{ $officer['display'] }}
@else

Hanya ada {{ $topThree->count() }} officer yang tercatat minggu ini.

@endif
{{-- Progress bar top 5 --}}

Top 5 — Jam Duty

Perbandingan relatif antar officer.

@php $maxMinutes = collect($players)->max('minutes') ?: 1; @endphp
@foreach (collect($players)->take(5) as $officer)

{{ $officer['name'] }}

{{ $officer['display'] }}

#{{ $officer['rank'] }}
@endforeach
{{-- Info --}}

Info Data

Sumber dan keterangan.

Data berasal dari sistem duty operasional via API dc_mbahdesmond.

@if($dateRange)

Menampilkan data untuk rentang tanggal: {{ $dateRange['label'] }}.

@else

Week key memakai sistem rolling berbasis Sabtu 18:00 WIB.

Navigasi tersedia untuk 5 minggu ke belakang via dropdown di atas.

@endif

Cache diperbarui setiap 5 menit. Gunakan tombol Refresh untuk data terbaru.

@endif