Laporan Progress - Elemes LMS

Laporan Progress Siswa

{#if loading}

Memuat data...

{:else if !$authIsTeacher}

Anda tidak memiliki akses ke halaman ini.

{:else}
{students.length} siswa {totalLessons} pelajaran {#if selectionCount > 0} {selectionCount} siswa dipilih {/if}
{#if exportError} {exportError} {/if} Export Laporan
{#if students.length === 0}

Belum ada data siswa. Gunakan Import CSV untuk menambah siswa pertama.

{:else}
{#each lessons as lesson} {/each} {#each students as student} {@const isChecked = selectedIds.includes(student.id as string)} {#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'])} {/each} {/each}
Nama Siswa{lesson.title}Selesai
studentSelection.toggle(student.id as string)} aria-label={`Pilih ${student.nama_siswa}`} /> {student.nama_siswa}
{#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}
{student.completed_count}/{totalLessons}
{/if} (importOpen = false)} onImported={handleImported} /> ({ id: s.id as string, nama_siswa: s.nama_siswa }))} onClose={() => (deleteOpen = false)} onDeleted={handleDeleted} /> {/if}