{{-- resources/views/livewire/walikelas/dahboard.blade.php --}} @php use Illuminate\Support\Str; $byJenis = collect($stats['byJenis'] ?? []); $byStatus = collect($stats['byStatus'] ?? []); $totalJenis = max(1, $byJenis->sum()); // hindari bagi 0 $totalStatus = max(1, $byStatus->sum()); // hindari bagi 0 @endphp
{{-- Header --}}

Dashboard Wali Kelas

@if ($kelasNama) Kelas: {{ $kelasNama }} @else Akun Anda belum terhubung sebagai wali dari kelas mana pun. @endif

{{-- Info jika belum punya kelas --}} @if (!$kelasNama)
Anda belum ditetapkan sebagai wali kelas. Minta admin mengaitkan akun Anda dengan sebuah kelas.
@endif {{-- Stat Cards --}}
Total Siswa
{{ number_format($stats['totalSiswa']) }}
Total Pelanggaran
{{ number_format($stats['totalPelanggaran']) }}
Status — Diproses
{{ number_format($byStatus->get('diproses',0)) }}
Status — Selesai
{{ number_format($byStatus->get('selesai',0)) }}
{{-- Distribusi Jenis & Status --}}

Distribusi Jenis Pelanggaran

Total: {{ $byJenis->sum() }}
@php $rows = [ ['label'=>'Ringan','key'=>'ringan','bar'=>'bg-emerald-500/80','chip'=>'bg-emerald-100 text-emerald-700'], ['label'=>'Sedang','key'=>'sedang','bar'=>'bg-amber-500/80','chip'=>'bg-amber-100 text-amber-700'], ['label'=>'Berat','key'=>'berat','bar'=>'bg-rose-500/80','chip'=>'bg-rose-100 text-rose-700'], ]; @endphp @foreach ($rows as $r) @php $val = (int) $byJenis->get($r['key'], 0); $pct = round(($val / $totalJenis) * 100); @endphp
{{ $r['label'] }} {{ $val }} ({{ $pct }}%)
@endforeach

Distribusi Status

Total: {{ $byStatus->sum() }}
@php $rows = [ ['label'=>'Diproses','key'=>'diproses','bar'=>'bg-amber-500/80','chip'=>'bg-amber-100 text-amber-700'], ['label'=>'Selesai','key'=>'selesai','bar'=>'bg-emerald-500/80','chip'=>'bg-emerald-100 text-emerald-700'], ]; @endphp @foreach ($rows as $r) @php $val = (int) $byStatus->get($r['key'], 0); $pct = round(($val / $totalStatus) * 100); @endphp
{{ $r['label'] }} {{ $val }} ({{ $pct }}%)
@endforeach
{{-- Terbaru & Jadwal --}}

Pelanggaran Terbaru

5 terakhir
@forelse ($stats['recentPelanggaran'] as $item) @php $badge = match($item->jenis) { 'ringan' => 'bg-emerald-100 text-emerald-700', 'sedang' => 'bg-amber-100 text-amber-700', 'berat' => 'bg-rose-100 text-rose-700', default => 'bg-slate-100 text-slate-700', }; $status = $item->status === 'selesai' ? 'bg-emerald-100 text-emerald-700' : 'bg-amber-100 text-amber-700'; @endphp
{{ \Illuminate\Support\Carbon::parse($item->created_at)->format('d M Y H:i') }} • Periode: {{ $item->periode->nama ?? '—' }}
{{ $item->siswa->nama ?? '—' }} — {{ $item->siswa->kelas->nama ?? '—' }}
{{ $item->deskripsi }}
{{ ucfirst($item->jenis) }} {{ ucfirst($item->status) }}
@empty
Belum ada pelanggaran.
@endforelse

Jadwal Bimbingan Offline

5 terdekat
@forelse ($stats['upcomingBimbingan'] as $b) @php $status = $b->status === 'selesai' ? 'bg-emerald-100 text-emerald-700' : 'bg-amber-100 text-amber-700'; @endphp
{{ \Illuminate\Support\Carbon::parse($b->tanggal)->format('d M Y H:i') }}
{{ $b->siswa->nama ?? '—' }} — {{ $b->siswa->kelas->nama ?? '—' }}
{{ $b->topik ?? '—' }}
{{ ucfirst($b->status) }} @if(!empty($b->pembimbing?->pengguna?->nama)) Pembimbing: {{ $b->pembimbing->pengguna->nama }} @endif
@empty
Belum ada jadwal bimbingan.
@endforelse