{% extends "base.html" %} {% block judul %}Nilai {{ peta.nama }} — Informatika UNTAN{% endblock %} {% block isi %}

Input Nilai — {{ peta.nama }} ({{ peta.kode }})

Daftar mahasiswa mengikuti impor kaprodi. Apa pun cara inputnya, pengukuran memakai satu metodologi yang sama: skor per Sub-CPMK digulung ke CPMK lalu CPL (rincian di halaman Metodologi).

{% if kelas_dosen is not none %}
Anda hanya mengampu kelas {{ kelas_dosen|join(', ') }} pada MK ini — daftar & tombol di bawah cuma menampilkan mahasiswa kelas tersebut.
{% endif %} {% if pesan %}
{{ pesan }}
{% endif %} {% for w in peringatan %}
{{ w }}
{% endfor %} {% if komponen_daftar %}

ISI PER KOMPONEN PENILAIAN (cara cepat — nilai per mahasiswa digabung ke Sub-CPMK yang diukur komponen itu)

Komponen berulang (Kuis, Tugas, Presentasi, Tes Lisan) boleh diisi berkali-kali sepanjang semester — tiap sesi dirata-rata otomatis. Komponen sekali-jalan (UTS, UAS) hanya satu sesi; mengisi lagi memperbarui sesi yang sama, bukan menambah. Bila satu instrumen (mis. UTS dengan beberapa kelompok soal) perlu nilai berbeda antar Sub-CPMK, isi lewat grid per Sub-CPMK di bawah.

{% for k in komponen_daftar %} {% endfor %}
Komponen Sub-CPMK Bobot Status
{{ k.nama }}
{{ 'boleh diisi berkali-kali' if k.ulang else 'sekali-jalan' }}
{{ k.n_subs }} {% if k.bobot %}{{ k.bobot }}%{% else %}—{% endif %} {% if k.ulang %} {% if k.n_sesi %}{{ k.n_sesi }} SESI{% else %}BELUM ADA SESI{% endif %} {% else %} {% if k.n_sesi %}SUDAH DIISI{% else %}BELUM DIISI{% endif %} {% endif %} {{ 'Sesi Baru' if k.ulang else ('Edit' if k.n_sesi else 'Isi') }}
{% endif %} {% if tersimpan %}
Data tersimpan: mode {% if tersimpan.data.mode == 'per_mahasiswa' %}PER MAHASISWA ({{ tersimpan.data.mahasiswa|length }} mahasiswa){% else %}BUKTI AGREGAT (rata-rata kelas){% endif %} — terakhir disimpan {{ tersimpan.updated_at }}{% if tersimpan.updated_by %} oleh {{ tersimpan.updated_by }}{% endif %}. {% if tersimpan.data.sumber %}
Riwayat perubahan: {{ tersimpan.data.sumber if tersimpan.data.sumber is string else tersimpan.data.sumber|join(' · ') }}.{% endif %}
{% endif %} {% if grid %} {% set per_mhs = tersimpan and tersimpan.data.mode == 'per_mahasiswa' %}

NILAI PER MAHASISWA (ketik langsung di sel, 0–100; kolom Nilai Akhir & baris rata-rata dihitung dari data tersimpan)

Daftar mahasiswa dari impor kaprodi. Kosongkan sel yang belum dinilai; Simpan Nilai menyimpan persis isi tabel. Nilai Akhir = tertimbang bobot komponen RPS; angkanya diperbarui setelah disimpan.

{% set ada_kelas = grid|selectattr('kelas')|list|length > 0 %} {% set n_kiri = 4 if ada_kelas else 3 %} {% if ada_kelas %}{% endif %} {% for s in peta.subs %}{% endfor %} {% for m in grid %} {% set i = loop.index0 %} {% if ada_kelas %}{% endif %} {% for s in peta.subs %} {% endfor %} {% endfor %} {% if per_mhs and hasil %} {% for s in peta.subs %} {% set info = hasil.sub.get(s.kode) %} {% endfor %} {% for s in peta.subs %} {% set info = hasil.sub.get(s.kode) %} {% endfor %} {% endif %}
No. NPM NamaKelas{{ s.kode }}Nilai Akhir
{{ loop.index }} {{ m.npm }} {{ m.nama }}{{ m.kelas or '—' }}{{ '%.1f'|format(akhir.get(m.npm)) if akhir.get(m.npm) is not none else '—' }}
Rata-rata kelas (tersimpan){{ '%.1f'|format(info.rata) if info else '—' }}{{ '%.1f'|format(akhir.values()|sum / akhir|length) if akhir else '—' }}
% lulus (≥ {{ ambang|round(0)|int }}){{ '%.0f'|format(info.lulus_pct) ~ '%' if info and info.lulus_pct is not none else '—' }}
Disimpan atas nama {{ user.nama }}
{% endif %} {% if hasil %}

HASIL KETERCAPAIAN MK INI (ambang {{ ambang|round(0)|int }}; roll-up bagi rata)

{% for kode_c, v in hasil.cpmk.items() %} {% endfor %}
CPMKSkorSub TernilaiCPL Didukung
{{ kode_c }} {% if v.skor is not none %}{{ '%.2f'|format(v.skor) }}{% else %}—{% endif %} {{ v.n_ternilai }}/{{ v.n_sub }} {{ v.cpl|join(', ') }}
{% for kode_c, v in hasil.cpl.items() %} {% endfor %}
CPL (dalam MK ini)SkorStatus
{{ kode_c }} {% if v.skor is not none %}{{ '%.2f'|format(v.skor) }}{% else %}—{% endif %} {% if v.skor is none %}BELUM TERUKUR {% elif v.skor >= ambang %}TERCAPAI {% else %}DI BAWAH AMBANG{% endif %}
{% endif %} {% endblock %}