@php /** @var \App\Models\Classroom $classroom */ $classroom = $this->record; $snapshot = $this->getSnapshot(); $roster = $this->getRoster(); $fmtScore = fn ($v) => $v === null ? '—' : (string) $v; $fmtLastSeen = function ($dt) { if ($dt === null) return ['label' => 'Never', 'color' => '#C9302C']; $days = $dt->diffInDays(now()); if ($days < 1) return ['label' => 'today', 'color' => '#16A34A']; if ($days < 3) return ['label' => $days.'d ago', 'color' => '#16A34A']; if ($days < 7) return ['label' => $days.'d ago', 'color' => '#CA8A04']; return ['label' => $days.'d ago', 'color' => '#C9302C']; }; @endphp {{-- Summary header --}}
@php $stats = [ ['label' => 'Enrolled', 'value' => $snapshot?->enrolled_count ?? count($roster), 'color' => '#960000'], ['label' => 'Active last 7d', 'value' => $snapshot?->active_students_7d ?? '—', 'color' => '#16A34A'], ['label' => 'Items last 7d', 'value' => $snapshot?->items_administered_7d ?? '—', 'color' => '#3BA9F4'], ['label' => 'Avg Vocabile', 'value' => $snapshot?->avg_vocabile_score ?? '—', 'color' => '#BF9237'], ]; @endphp @foreach ($stats as $s)
{{ $s['value'] }}
{{ $s['label'] }}
@endforeach
@if ($snapshot && $snapshot->avg_vocabile_score !== null)
Distribution
25th pct: {{ $snapshot->score_p25 ?? '—' }}  ·  Median: {{ $snapshot->score_p50 ?? '—' }}  ·  75th pct: {{ $snapshot->score_p75 ?? '—' }}
@endif {{-- Roster --}}
Roster ({{ count($roster) }})
@if (empty($roster))
No students enrolled yet. Share the QR code or class code {{ $classroom->join_code }} so students can join.
@else @foreach ($roster as $row) @php $lastSeen = $fmtLastSeen($row['last_seen']); @endphp @endforeach
Student Vocabile Band Last seen Sessions 7d
{{ $row['name'] }}
{{ $row['email'] }}
{{ $fmtScore($row['vocabile_score']) }} @if ($row['level_code']) {{ $row['level_code'] }} @else @endif {{ $lastSeen['label'] }} {{ $row['sessions_7d'] }} Open →
@endif