@extends('layouts.app') @php $evaluationAssessmentMode = $section === 'evaluasi' && request()->query('mode') === 'penilaian'; $sectionTitles = [ 'skk' => 'Distribusi SKK', 'jadwal' => 'Jadwal Pelajaran', 'peta-materi' => 'Peta Materi', 'materi' => 'Kelola Materi', 'tugas' => 'Tugas & Penilaian', 'evaluasi' => $evaluationAssessmentMode ? 'Penilaian Evaluasi' : 'Evaluasi & Bank Soal', ]; @endphp @section('title', $sectionTitles[$section]) @section('content')

Standar Isi dan ProsesManajemen KBM{{ $sectionTitles[$section] }}

{{ $sectionTitles[$section] }}

@if ($period) Tahun Pelajaran {{ $period->tahun_pelajaran }} · Semester {{ $period->semester }} @if ($activePeriod && ($activePeriod->tahun_pelajaran !== $period->tahun_pelajaran || $activePeriod->semester !== $period->semester)) Periode dipilih @endif @else Periode akademik aktif belum diatur. @endif

@if ($section === 'jadwal' && $classId && $class)
Cetak Jadwal @if ($context->level === 'pkbm' && $period?->semester === 'Genap')
@csrf
@endif
@endif
@if (session('status'))
{{ session('status') }}
@endif @if ($errors->any()) @endif @include('pkbm.partials.period-selector', [ 'periods' => $periods, 'period' => $period, 'activePeriod' => $activePeriod, ]) @if (! $period)

Atur periode akademik aktif sebelum mengelola jadwal, materi, tugas, atau evaluasi.

@endif @if ($section === 'jadwal')
@if ($period && $class) @if ($context->level === 'pkbm')

Atur jadwal pelajaran

Tambahkan hari dan jam pelajaran melalui formulir.

Tambah hari atau jam pelajaran

@csrf
@endif

{{ $class->nama_kelas }} · {{ $period->semester }}

@forelse ($rows->groupBy('hari') as $day => $dayRows)

{{ $day }}

@foreach ($dayRows as $row) @endforeach
JamPelajaran / Metode / Pengampu
{{ $row->jam_ke }}
{{ $row->nama_mapel ?: 'Kosong' }}
{{ $row->metode ?: 'Metode belum ditentukan' }} · {{ $row->teacher_names ?: 'Belum ditugaskan' }}
@if ($context->level === 'pkbm')
@csrf @method('DELETE')
@endif
@empty

Jadwal kelas ini belum diatur untuk periode aktif.

@endforelse
@elseif ($period)

Pilih kelas untuk melihat jadwal.

@endif @elseif ($section === 'skk')
@foreach (['A' => 'Paket A · Tingkat 1–6', 'B' => 'Paket B · Tingkat 7–9', 'C' => 'Paket C · Tingkat 10–12'] as $key => $label) $package === $key, 'sp-btn-secondary' => $package !== $key])>{{ $label }} @endforeach
@foreach ($grades as $grade)@endforeach @forelse ($subjects as $subject) @foreach ($grades as $grade) @php $assignment = $assignments[$subject->id.'-'.$grade] ?? null; @endphp @endforeach @empty @endforelse @if ($assignments->isNotEmpty()) @foreach ($grades as $grade) @endforeach @endif
Mata PelajaranTingkat {{ $grade }}
{{ $subject->nama_mapel }} @if ($assignment) @if ($context->level === 'pkbm')
@csrf
@else {{ number_format((float) $assignment->skk, 1, ',', '.') }} @endif @else — @endif
Belum ada penugasan guru mapel pada paket ini.
Total per tingkat {{ number_format($skkTotals[$grade] ?? 0, 1, ',', '.') }}
@if ($assignments->isNotEmpty())

Total keseluruhan SKK

Akumulasi dari seluruh tingkatan pada paket ini

{{ number_format($overallSkk, 1, ',', '.') }} SKK

@endif
@elseif ($section === 'peta-materi')
@if ($grade && $subjectId) @endif
@if ($grade && $subjectId)

Tambah BAB

Tingkat {{ $grade }} · {{ $subjects->firstWhere('id', $subjectId)?->nama_mapel }}

@csrf

Pertemuan ke-1

@endif @if ($grade && $subjectId)

Daftar Peta Materi

Tingkat {{ $grade }} · {{ $subjects->firstWhere('id', $subjectId)?->nama_mapel }} · {{ $maps->count() }} pertemuan

@if ($maps->isEmpty())

Belum ada data materi untuk mata pelajaran ini.

@else
@foreach ([1 => 'SEMESTER 1', 2 => 'SEMESTER 2'] as $semester => $semesterTitle) @php($semesterChapters = $maps->where('semester', (string) $semester)->groupBy('bab_ke'))
{{ $semester }}

{{ $semesterTitle }}

{{ $semesterChapters->count() }} BAB
@forelse ($semesterChapters as $babKe => $meetings) @php($chapter = $meetings->first())
{{ $babKe }}

{{ $chapter->nama_bab }}

@csrf @method('DELETE')
@foreach ($meetings as $meeting)
Pertemuan {{ $meeting->pertemuan ?: '—' }} {{ $meeting->judul_materi ?: '(Belum ada judul materi)' }}
{{ $meeting->material_count }} Modul
@csrf @method('DELETE')
@csrf @method('PUT')

Edit Pertemuan

@endforeach
@csrf

Tambah Pertemuan · BAB {{ $babKe }}

@csrf

Edit BAB

Perubahan berlaku untuk semua pertemuan dalam BAB ini.

@empty

Belum ada data materi pada semester ini.

@endforelse
@endforeach
@endif
@endif @elseif ($section === 'materi')

Materi tingkat {{ $grade ?: '—' }}{{ $subjectId ? ' · '.($subjects->firstWhere('id', $subjectId)?->nama_mapel ?? '') : '' }}

Materi tingkat dapat digunakan kembali pada tahun ajaran berikutnya.

@if ($grade && $subjectId && $materials->isNotEmpty())
@endif @if ($grade && $subjectId)@endif
@if ($grade && $subjectId)

{{ $editMaterial ? 'Edit Materi' : 'Tambah Materi' }}

@csrf @if ($editMaterial)@endif

Tingkat {{ $editMaterial?->id_tingkatan ?: $grade }}

{{ $subjects->firstWhere('id', (int) ($editMaterial->id_mapel ?? $subjectId))?->nama_mapel }}

@if ($maps->isEmpty())

Belum ada BAB pada peta materi.

Materi wajib ditempatkan pada pertemuan di peta materi. Buat BAB dan pertemuannya terlebih dahulu.

Buka Peta Materi
@else

Tidak menemukan BAB? Tambahkan lewat Peta Materi.

@endif
{!! ($editMaterial && in_array($editMaterial->tipe, ['teks', 'html'], true)) ? $editMaterial->konten : '' !!}

Format teks disimpan sebagai HTML dan dibersihkan dari skrip berbahaya.

@endif @if ($materials->isEmpty())
Belum ada materi pada periode aktif.
@else @php($materialsByChapter = $materials->groupBy(fn ($material) => $material->id_peta_materi ? 'map-'.$material->id_peta_materi : 'without-map'))
@foreach ($materials as $material) @php($isScheduled = $material->tanggal_tampil && $material->tanggal_tampil > today()->toDateString()) @php($contentTypeLabel = $material->tipe === 'link' ? 'Tautan' : ($material->tipe === 'html' ? 'HTML' : ucfirst($material->tipe)))
$loop->index % 4 === 0, 'bg-gradient-to-br from-pink-500 to-fuchsia-700' => $loop->index % 4 === 1, 'bg-gradient-to-br from-amber-500 to-orange-700' => $loop->index % 4 === 2, 'bg-gradient-to-br from-violet-500 to-purple-700' => $loop->index % 4 === 3, ])> $isScheduled, 'bg-emerald-600' => ! $isScheduled, ])>{{ $isScheduled ? 'Terjadwal' : 'Tampil' }} {{ $contentTypeLabel }}
{{ $material->nama_bab ? 'BAB '.$material->bab_ke.': '.$material->nama_bab : 'Tanpa BAB' }}{{ $material->pertemuan ? ' · Pertemuan '.$material->pertemuan : '' }}

{{ $material->judul }}

Kelas: {{ $material->class_names ?: '—' }}

{{ $material->tanggal_tampil ?: '—' }}

{{ $material->nama_mapel }}
@if ($material->file_path)@endif
@csrf @method('DELETE')
@endforeach
@endif @elseif ($section === 'tugas')

Tugas tingkat {{ $grade ?: '—' }}

Tugas mengikuti tingkatan, bukan nama rombongan belajar.

@if ($grade && $subjectId)@endif
@if ($grade && $subjectId)

{{ $editTask ? 'Edit Tugas' : 'Buat Tugas' }}

@csrf @if ($editTask)@endif

Tingkat {{ $editTask?->id_tingkatan ?: $grade }} · {{ $subjects->firstWhere('id', (int) ($editTask->id_mapel ?? $subjectId))?->nama_mapel }}

@if ($context->level === 'pkbm')
@endif
@endif
@forelse ($tasks as $task) @empty@endforelse
TugasMapel / KelasBatas waktuJawabanNilai & aksi
{{ $task->judul }}
{{ $task->tipe }}
{{ $task->nama_mapel }}
{{ $task->class_names }}
{{ $task->deadline ?: 'Tanpa batas waktu' }}{{ $task->submission_count }}
Edit
@csrf @method('DELETE')
Lihat / nilai
@foreach ($task->answers as $answer)

{{ $answer->nama_siswa }}

{{ $answer->jawaban_teks ?: 'Tanpa jawaban teks.' }}

@if ($answer->file_jawaban)Unduh lampiran@endif
@csrf @method('PUT')
@endforeach
Belum ada tugas pada periode aktif.
@elseif ($section === 'evaluasi')

{{ request()->query('mode') === 'penilaian' ? 'Pilih evaluasi untuk dinilai' : 'Pilih sasaran evaluasi' }}

@if ($grade && $subjectId && $materialId && request()->query('mode') !== 'penilaian') @endif
@if (request()->query('mode') === 'penilaian')@endif
@if ($grade && $subjectId && $materialId) @unless (request()->query('mode') === 'penilaian')

Tambah soal evaluasi

@csrf
@foreach (['a' => 'A', 'b' => 'B', 'c' => 'C', 'd' => 'D', 'e' => 'E'] as $key => $letter)
@endforeach

Pilihan ganda, menjodohkan, dan tabel dinilai otomatis. Esai diperiksa guru. Nilai evaluasi yang selesai masuk ke komponen Tugas dan Evaluasi.

Daftar soal evaluasi · {{ $materials->firstWhere('id', $materialId)?->judul }}

{{ $questions->count() }} soal · Tingkat {{ $grade }}

@forelse ($questions as $question)
{{ strtoupper($question->tipe_soal) }} · {{ number_format((float) $question->bobot, 2, ',', '.') }} poin

{{ $question->pertanyaan }}

@csrf @method('DELETE')
@empty

Belum ada soal untuk materi ini.

@endforelse
@endunless

{{ request()->query('mode') === 'penilaian' ? 'Penilaian evaluasi' : 'Hasil evaluasi' }} · {{ $evaluationResults->count() }} siswa

Nilai evaluasi yang selesai otomatis masuk ke komponen Tugas dan Evaluasi di Manajemen Raport.

@forelse ($evaluationResults as $result)
{{ $result->nama_siswa }} {{ $result->nilai !== null ? 'Nilai '.number_format((float) $result->nilai, 2, ',', '.') : 'Menunggu penilaian esai' }} · {{ $result->waktu_selesai }}
@if ($period) Lihat di Manajemen Raport @endif @foreach ($result->answers as $answer)

{{ $answer->pertanyaan }}

@if (in_array($answer->tipe_soal, ['tabel', 'menjodohkan'], true) && isset($answer->response_items))
@foreach ($answer->response_items as $response) @endforeach
{{ $answer->tipe_soal === 'tabel' ? 'Pernyataan' : 'Butir' }}Jawaban siswa
{{ $response['label'] }}{{ $response['answer'] }}
@else

Jawaban: {{ $answer->jawaban }}

@endif

Bobot {{ number_format((float) $answer->bobot, 2, ',', '.') }} poin · Nilai otomatis/manual: {{ $answer->nilai === null ? 'Belum dinilai' : number_format((float) $answer->nilai, 2, ',', '.') }}

@csrf @method('PUT')
@endforeach
@empty

Belum ada siswa yang mengumpulkan evaluasi ini.

@endforelse
@endif @endif
@endsection @push('scripts') @endpush