@extends('layouts.app') @section('title', 'Data Siswa') @section('content')
{{-- Header --}}

Data Siswa

Daftar siswa aktif — sinkron dari Database Kesiswaan

{{ $students->total() }} siswa @if(request()->anyFilled(['search','class_level','class_name','department'])) {{ $students->total() }} ditemukan @endif
{{-- Filter Card --}}
{{-- Search --}}
{{-- Dropdowns: Jurusan → Tingkat Kelas → Kelas --}}
@if(request()->anyFilled(['search','class_level','class_name','department'])) Reset @endif
{{-- Table --}}
@forelse($students as $s) @php $pts = $s->total_points; // Avatar warna bervariasi per nama (konsisten utk nama yg sama) $avatarGradients = [ 'from-blue-500 to-indigo-600', 'from-emerald-500 to-teal-600', 'from-violet-500 to-purple-600', 'from-rose-500 to-pink-600', 'from-amber-500 to-orange-600', 'from-sky-500 to-cyan-600', ]; $avatarG = $avatarGradients[ord(strtoupper(substr($s->full_name, 0, 1) ?: 'A')) % count($avatarGradients)]; @endphp {{-- Siswa --}} {{-- NISN --}} {{-- Kelas --}} {{-- Jurusan --}} {{-- Pelanggaran --}} {{-- Total Poin --}} {{-- Aksi --}} @empty @endforelse
Siswa NISN Pelanggaran Total Poin Aksi
{{ strtoupper(substr($s->full_name, 0, 1)) }}

{{ $s->full_name }}

{{ $s->nisn ?? '—' }}
{{ $s->nisn ?? '—' }} {{ $s->violations_count }}x @if($pts >= 100) {{ $pts }} @elseif($pts >= 50) {{ $pts }} @elseif($pts > 0) {{ $pts }} @else 0 @endif Detail

Tidak ada siswa ditemukan

Coba ubah filter atau lakukan sinkronisasi data

{{-- Pagination --}} @if($students->hasPages())
{{ $students->appends(request()->query())->links() }}
@endif {{-- Summary --}}
Menampilkan {{ $students->firstItem() ?? 0 }}–{{ $students->lastItem() ?? 0 }} dari {{ $students->total() }} siswa {{ $students->total() }} total
@push('scripts') @endpush @endsection