@extends('layouts.adminlte') @section('title', 'Rekap Absensi Bulanan') @section('content')
{{-- PAGE HEADER --}}

Rekap Absensi Bulanan

Kelas: {{ $class->name }} • Periode: {{ $currentMonth }}

{{-- CARD FILTER & TABLE --}}
{{-- Toolbar Row --}}
{{-- Filter Form --}}
{{-- Export Button --}} Download Excel
{{-- Table Container --}}
{{-- Sticky First Column (Name) --}} @for($i = 1; $i <= $daysInMonth; $i++) @php $date = \Carbon\Carbon::createFromDate($currentYear, $currentMonthNum, $i); $isWeekend = $date->isWeekend(); $bgHeader = $isWeekend ? 'bg-gray-700 text-red-300' : ''; @endphp @endfor @forelse($recapData as $studentId => $data) {{-- Sticky Name Cell --}} @for($i = 1; $i <= $daysInMonth; $i++) @php $status = $data['status_by_day'][$i]; $date = \Carbon\Carbon::createFromDate($currentYear, $currentMonthNum, $i); $isWeekend = $date->isWeekend(); $cellStyle = match($status) { 'Hadir' => 'bg-green-100 text-green-700 font-bold', 'Terlambat' => 'bg-amber-100 text-amber-700 font-bold', 'Sakit' => 'bg-cyan-100 text-cyan-700 font-bold', 'Izin' => 'bg-blue-100 text-blue-700 font-bold', 'Alpha' => 'bg-red-100 text-red-700 font-bold', default => $isWeekend ? 'bg-gray-50 text-gray-300' : 'text-gray-300' // 'N/A' or empty }; $displayChar = match($status) { 'Hadir' => '•', // Dot for Present 'Terlambat' => 'T', 'Sakit' => 'S', 'Izin' => 'I', 'Alpha' => 'A', default => $isWeekend ? '' : '-' }; // Special styling for Present (Dot) to look cleaner if($status == 'Hadir') $cellStyle = 'text-green-500 text-2xl leading-none'; @endphp @endfor @empty @endforelse
Nama Siswa {{ $i }}
{{ $date->minDayName }}
{{ $data['name'] }} @if($status != 'N/A' && !($status == 'N/A' && $isWeekend))
{{ $displayChar }}
@endif
Tidak ada data siswa di kelas ini.
{{-- LEGEND --}}
Hadir (•)
T Terlambat
S Sakit
I Izin
A Alpha/Tanpa Ket.
@stop @section('js') @stop