@extends('adminlte::page') @section('title', 'Executive Dashboard | Yayasan') @section('content_header')

Dashboard Eksekutif Yayasan

Ringkasan performa, demografi, dan aktivitas real-time hari ini.

{{ \Carbon\Carbon::now()->locale('id')->isoFormat('dddd, D MMMM Y') }} Export PDF Live KBM
@stop @section('content')
{{-- ==================================================== --}} {{-- 1. TOP METRICS (APEX STYLE WIDGETS) --}} {{-- ==================================================== --}}

{{ number_format($data['siswa']['total'] ?? 0, 0, ',', '.') }}

Siswa Aktif

{{ number_format($data['guru']['total'] ?? 0, 0, ',', '.') }}

Guru Aktif

{{ $data['total_kelas'] ?? 0 }}

Rombel Kelas

{{-- WIDGET PENGGUNA ONLINE --}}

{{ number_format($totalOnline ?? \App\Models\User::where('last_seen', '>=', now()->subMinutes(5))->count()) }}

Pengguna Online

@php // Logika Fallback jika variabel dari Controller belum ada $tOnline = $totalOnline ?? \App\Models\User::where('last_seen', '>=', now()->subMinutes(5))->count(); $oGuru = $onlineGuru ?? \App\Models\User::where('last_seen', '>=', now()->subMinutes(5))->whereIn('role', ['guru','Guru'])->count(); $oSiswa = $onlineSiswa ?? \App\Models\User::where('last_seen', '>=', now()->subMinutes(5))->where('role', 'siswa')->count(); $tot = $tOnline > 0 ? $tOnline : 1; $pG = ($oGuru / $tot) * 100; $pS = ($oSiswa / $tot) * 100; @endphp
Guru: {{ $oGuru }} Siswa: {{ $oSiswa }}
{{-- ==================================================== --}} {{-- 2. DATA SEKOLAH (1/3 KIRI) & STATISTIK KEHADIRAN (2/3 KANAN) --}} {{-- ==================================================== --}}

Rincian Lembaga ({{ isset($data['sekolahs']) ? $data['sekolahs']->count() : 0 }})

@forelse($data['sekolahs'] ?? [] as $sekolah)
{{ Str::limit($sekolah->nama_sekolah, 20) }}
{{ $sekolah->kelas_count }} Rombel
@forelse($sekolah->kelas as $kelas) @empty @endforelse
Kelas L P Tot
{{ $kelas->nama_kelas }} {{ $kelas->L_count }} {{ $kelas->P_count }} {{ $kelas->total_siswa }}
Belum ada data.
@empty

Belum ada data lembaga cabang.
@endforelse

Rekap & Tren Kehadiran

Hari ini: {{ $data['siswa']['kehadiran_hari_ini'] ?? 0 }}% Hadir
{{-- 👇 BLOK BARU: RINCIAN DETAIL ABSENSI HARI INI 👇 --}}
Hadir

{{ number_format($data['siswa']['count_hadir'] ?? 0, 0, ',', '.') }}

Izin

{{ number_format($data['siswa']['count_izin'] ?? 0, 0, ',', '.') }}

Sakit

{{ number_format($data['siswa']['count_sakit'] ?? 0, 0, ',', '.') }}

Alpa

{{ number_format($data['siswa']['count_alpa'] ?? 0, 0, ',', '.') }}

{{-- 👆 AKHIR BLOK RINCIAN ABSENSI 👆 --}} {{-- Grafik akan di-render langsung tanpa AJAX --}}
{{-- ==================================================== --}} {{-- 3. ANALISIS KINERJA GURU (SIDAK JURNAL) --}} {{-- ==================================================== --}}
Pengawasan KBM: Guru Belum Mengisi Jurnal
@forelse($guruBelumJurnal ?? [] as $jadwal) @php // Pengecekan Waktu Pintar (Smart Time Logic) $jamMulaiStr = strlen($jadwal->jam_mulai) <= 5 ? $jadwal->jam_mulai . ':00' : $jadwal->jam_mulai; $jamSelesaiStr = strlen($jadwal->jam_selesai) <= 5 ? $jadwal->jam_selesai . ':00' : $jadwal->jam_selesai; $waktuMulai = \Carbon\Carbon::parse(date('Y-m-d') . ' ' . $jamMulaiStr); $waktuSelesai = \Carbon\Carbon::parse(date('Y-m-d') . ' ' . $jamSelesaiStr); $waktuSekarang = \Carbon\Carbon::now(); // Tentukan 3 Status Kondisi $isBelumMulai = $waktuSekarang->lessThan($waktuMulai); $isSedangJalan = $waktuSekarang->between($waktuMulai, $waktuSelesai); $isTerlewat = $waktuSekarang->greaterThan($waktuSelesai); $selisihMenit = round($waktuMulai->diffInMinutes($waktuSekarang)); @endphp @empty @endforelse
Nama Guru / Cabang Mata Pelajaran Kelas Jadwal Status
{{ $jadwal->user->name ?? 'Tidak Ada Guru' }} {{ $jadwal->sekolah->nama_sekolah ?? '-' }}
{{ $jadwal->mataPelajaran->nama_mapel ?? $jadwal->mataPelajaran->nama_pelajaran ?? $jadwal->mapel->nama_mapel ?? '-' }} {{ $jadwal->kelas->nama_kelas ?? '-' }} {{ \Carbon\Carbon::parse($jadwal->jam_mulai)->format('H:i') }} - {{ \Carbon\Carbon::parse($jadwal->jam_selesai)->format('H:i') }} @if($isBelumMulai) Mulai dlm {{ $selisihMenit }} Mnt @elseif($isSedangJalan) Mengajar (-{{ $selisihMenit }} Mnt) @else Sesi Terlewat (Alpa) @endif
KBM Berjalan Tertib

Tidak ada pelanggaran jadwal KBM saat ini.

{{-- ==================================================== --}} {{-- 4. DEMOGRAFI & AI INSIGHT --}} {{-- ==================================================== --}}

Demografi Siswa

Laki-laki {{ number_format($data['siswa']['L'] ?? 0, 0, ',', '.') }} ({{ $data['siswa']['persen_L'] ?? 0 }}%)
Perempuan {{ number_format($data['siswa']['P'] ?? 0, 0, ',', '.') }} ({{ $data['siswa']['persen_P'] ?? 0 }}%)

✨ Analisis Eksekutif AI

AI sedang menganalisis tren saat ini...

@stop @section('css') @stop @section('js') @stop