{{ __('Students Enrolled') }}
{{ $snapshots->count() }}
{{ __('Class Average GPA') }}
{{ number_format($snapshots->avg('gpa'), 2) }}
{{ __('Pass Rate') }}
@php $passRate = $snapshots->filter(fn($s) => $s->subjects_failed == 0)->count() / max($snapshots->count(), 1) * 100; @endphp{{ number_format($passRate, 1) }}%
{{ __('Avg Attendance') }}
{{ number_format($snapshots->avg('overall_attendance_percentage'), 1) }}%
| {{ __('Rank') }} | {{ __('Student') }} | {{ __('GPA') }} | {{ __('Grade') }} | {{ __('Avg Score') }} | {{ __('Subjects') }} | {{ __('Attendance') }} | {{ __('OPS Tier') }} | {{ __('Trend') }} |
|---|---|---|---|---|---|---|---|---|
|
{{ $snapshot->class_rank ?? '—' }}
|
{{ strtoupper(substr($snapshot->student->name ?? 'S', 0, 1)) }}
{{ $snapshot->student->name ?? 'Unknown' }} {{ $snapshot->student->email ?? '' }} |
{{ number_format($snapshot->gpa ?? 0, 2) }} /4.0 | @php $grade = $snapshot->overall_grade_letter ?? '—'; $gradeColor = match(true) { in_array($grade, ['A+', 'A']) => 'bg-emerald-100 text-emerald-800 dark:bg-emerald-900/30 dark:text-emerald-400 border-emerald-200 dark:border-emerald-800/50', in_array($grade, ['B+', 'B']) => 'bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400 border-blue-200 dark:border-blue-800/50', in_array($grade, ['C+', 'C']) => 'bg-amber-100 text-amber-800 dark:bg-amber-900/30 dark:text-amber-400 border-amber-200 dark:border-amber-800/50', in_array($grade, ['D+', 'D']) => 'bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-400 border-orange-200 dark:border-orange-800/50', default => 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400 border-red-200 dark:border-red-800/50', }; @endphp {{ $grade }} | {{ $snapshot->average_score ? number_format($snapshot->average_score, 1).'%' : '—' }} |
{{ $snapshot->subjects_passed }}
/
{{ $snapshot->subjects_total }}
@if($snapshot->subjects_failed > 0)
({{ $snapshot->subjects_failed }} failed)
@endif
|
@php $att = $snapshot->overall_attendance_percentage ?? 0; @endphp
{{ number_format($att, 0) }}%
|
@php $tier = $snapshot->ops_tier ?? 'Bronze'; $tierColor = match($tier) { 'Diamond' => 'text-cyan-700 bg-cyan-50 border-cyan-200 dark:text-cyan-400 dark:bg-cyan-900/20 dark:border-cyan-800', 'Platinum' => 'text-purple-700 bg-purple-50 border-purple-200 dark:text-purple-400 dark:bg-purple-900/20 dark:border-purple-800', 'Gold' => 'text-amber-700 bg-amber-50 border-amber-200 dark:text-amber-400 dark:bg-amber-900/20 dark:border-amber-800', 'Silver' => 'text-slate-700 bg-slate-50 border-slate-200 dark:text-slate-300 dark:bg-slate-700 dark:border-slate-600', default => 'text-orange-700 bg-orange-50 border-orange-200 dark:text-orange-400 dark:bg-orange-900/20 dark:border-orange-800', }; @endphp {{ $tier }} |
@php
$trend = $snapshot->trend ?? 'new';
$trendIcon = match($trend) {
'improving' => '',
'declining' => '',
'stable' => '',
default => '—',
};
@endphp
{!! $trendIcon !!}
|