Memuat data...
{:else if !$authIsTeacher}Anda tidak memiliki akses ke halaman ini.
{:else} {#if students.length === 0}Belum ada data siswa. Gunakan Import CSV untuk menambah siswa pertama.
{:else}| Nama Siswa | {#each lessons as lesson}{lesson.title} | {/each}Selesai | |
|---|---|---|---|
| studentSelection.toggle(student.id as string)} aria-label={`Pilih ${student.nama_siswa}`} /> | {student.nama_siswa} | {#each lessons as lesson} {@const key = lesson.filename.replace('.md', '')} {@const status = student[key]} {@const violation = student[key + '_has_violation']} {@const violationReason = student[key + '_termination_reason']} {@const violationTime = student[key + '_attempt_finished_at']} {@const evalScore = student[key + '_eval']} {@const diagScore = student[key + '_diag']} {@const diagUnmastered = parseUnmastered(student[key + '_diag_unmastered'])}
{#if status === 'completed'}
✓
{:else if status && status !== 'not_started'}
{status}
{:else}
—
{/if}
{#if violation}
⚠ Pelanggaran
{/if}
{#if evalScore}
Eval: {evalScore}
{/if}
{#if diagScore}
Diag: {diagScore}
{#if diagUnmastered.length > 0}
{diagUnmastered.length} belum dikuasai
{/if}
{/if}
{#if status && status !== 'not_started'}
{/if}
|
{/each}
{student.completed_count}/{totalLessons} |