Commit Graph
17 Commits
Author SHA1 Message Date
Novy San87 629f6efb08 feat: form presensi manual (attendances/create) — opsi status PKL (P ungu) + warna selaras (S=amber); rotasi H→S→I→P→A→T; tombol bulk 'Semua PKL'; legenda & teks info 2026-08-22 20:14:08 +07:00
Novy San87 25da284ca2 feat: dukung status PKL/Magang (pkl) dari e-jurnal — validasi sync + pkl; rekap mingguan/bulanan kolom P; export Excel kolom P; warna selaras e-jurnal (S=amber, P=violet) 2026-08-22 20:10:34 +07:00
Novy San87 3169c636c5 Tooltip kustom premium via Alpine directive x-tooltip
- Directive global di app.js: satu tooltip singleton di body, posisi dari
  getBoundingClientRect (fixed, tidak terpotong overflow-hidden), animasi
  fade + slide halus, delay 120ms anti-kedip, fallback ke bawah jika di
  tepi atas viewport, clamp ke viewport
- Tooltip gelap glass: bg-slate-900/95 + ring + shadow + backdrop-blur
- Badge kalender pelanggaran ('X pelanggaran') & presensi ('X siswa, Y
  alpha') beralih dari :title native ke x-tooltip
- Sembunyi otomatis saat scroll/resize/klik
2026-08-03 18:08:57 +07:00
Novy San87 349ebb2b30 Poles halaman Presensi Siswa premium
- 4 KPI card gradient (siswa/alpha hari ini & bulan ini) + icon watermark
  membesar saat hover — konsisten dgn dashboard
- Kalender: badge 'X presensi' bulan berjalan, tombol Hari Ini, nav pill
  glass, hari ini gradient+ring+label, badge gradient emerald/merah + glow,
  indikator alpha mini per tanggal, legend pill
- JS: currentMonth() + monthTotal
2026-08-03 18:05:53 +07:00
Novy San87 151a66639b Poles UI/UX premium: fondasi global
- Font Plus Jakarta Sans (Google Fonts) menggantikan font sistem default
- Sidebar: brand area gradient + nama sekolah, nav aktif jadi pill gradient
  biru-indigo + chevron, label grup lebih elegan, footer badge NOCTKJ.net
- Topbar: sticky + backdrop-blur glass
- Background utama: gradient halus slate → biru samar
- Kartu standar premium (.card) + tombol (.btn-primary/.btn-outline) + input
  seragam di CSS; kartu utama halaman diseragamkan rounded-2xl
- Border global diselaraskan ke palet slate; scrollbar & seleksi teks premium
- Verifikasi: 29 test / 99 assertion, blade cache OK, vite build OK
2026-08-03 14:27:03 +07:00
Novy San87 58ffd06625 fix: presensi - filter tanggal-kelas live, urutan tanggal di depan, pembersihan data yatim 2026-08-02 20:57:14 +07:00
Novy San87 0a5f471854 fix: default presensi 'belum', perbesar tombol rekap & bulk H/S/I/A/T
- Default status per jam dari 'hadir' jadi 'belum' (abu-abu '—')
- Tambah validasi skip 'belum' saat simpan
- Tombol bulk H/S/I/A/T diperbesar (w-8 h-8, border-2)
- Tombol Rekap Presensi diubah ke gradien violet-indigo
- Gradien tombol Lanjutkan & Simpan konsisten
2026-07-28 12:37:43 +07:00
Bro 4784a0d357 fix: alignment tombol Lanjutkan
Sebelum: pakai items-end — tombol turun karena
kolom pertama ada legend ekstra.
Sesudah: padding-top manual agar lurus dengan input.
2026-07-24 18:21:25 +07:00
Bro 3287268ff1 feat: UI premium halaman Input Presensi
- Filter card: gradient putih-abu, hover shadow, icon di label
- Tombol Lanjutkan: gradient blue, shadow lebih dalam
- Info bar: gradient with icon box + badge kelas biru
- Tabel: sticky student column dengan avatar rounded-xl
  gradient hover di baris & hover avatar berubah warna
- Tombol status: ukuran naik w-10 h-10 rounded-xl
  border lebih tebal, hover scale 110%, active scale 95%
- Bulk set: compact bg box, tombol hover scale
- Bottom: card terpisah untuk legend + submit
  dengan gradient putih-abu border
- Info box: gradient emerald-teal dengan icon box shadow
- Ukuran font konsisten, spacing lebih lapang
2026-07-24 18:18:41 +07:00
Bro 5df740fcf8 feat: status presensi per kelas di dropdown input
Dropdown kelas sekarang menampilkan:
- ⬜ Nama Kelas → belum ada data presensi
- ✅ Nama Kelas (5/36) → sudah terisi (X siswa terdata dari total)
- Legend kecil di bawah dropdown sebagai panduan
2026-07-24 18:12:39 +07:00
Bro 129d3456a9 fix: style kalender kembali ke grid bersih, tetap klikable
Style balik ke versi awal (putih, border tipis, badge pojok),
tapi seluruh kotak bisa diklik (pake <a> tag).
Legend diperbarui.
2026-07-24 18:09:50 +07:00
Bro e4e0b234f6 feat: kalender presensi full-kotak warna + klik
Sebelum: badge kecil merah/hijau di pojok, susah diklik.
Sesudah: seluruh kotak tanggal berwarna (merah=ada alpha,
hijau=semua hadir), bisa diklik langsung untuk input presensi.
- Info jumlah siswa & alpha di dalam kotak
- Legend yang lebih jelas
2026-07-24 18:07:58 +07:00
Novy San87 fb5e349ae6 feat: add Open Graph meta tags for social preview 2026-07-23 11:59:12 +07:00
Novy San87 9e1b5c34e5 feat: rekap presensi harian, mingguan, bulanan + export excel
- Add 3 jenis rekap presensi (harian/mingguan/bulanan) per kelas
- Weekly recap: tabel H,S,I,A per hari + kolom TOTAL
- Alpha proporsional: A = jam_alpha / total_jam
- Pemisah border antar hari dan kolom TOTAL
- Export Excel rekap mingguan (.xlsx)
- Fix max_input_vars PHP limit (1000→5000)
- Fix Carbon date object issue di groupBy
2026-07-23 11:11:28 +07:00
Bro 5eb3830895 feat: replace attendance history list with interactive calendar
- Calendar shows per-date student count badge (green=all hadir, red=ada alpha)
- Click badge to go to attendance input for that date
- Prev/next month navigation with API fetch
- Controller passes initial month data inline (no flash on load)
2026-07-23 00:00:21 +07:00
Bro e4fef817b0 fix: attendance stats count based on unique students, not records per lesson-hour 2026-07-22 23:56:57 +07:00
Bro 31ef9c0b0b system-locked violation types (alpha & terlambat) + proporsional poin alpha per jam
- Migration: add is_system column to violation_types, mark alpha & terlambat
- DestroyType guard: system types cannot be deleted
- UpdateType guard: slug tetap walau nama diubah untuk system types
- UI: delete button hidden, badge lock untuk system types
- Seeder: ViolationTypeDefaultsSeeder untuk fresh deploy
- AttendanceController: lookup by slug (alpha/terlambat) instead of fuzzy match
- Alpha auto-violation: poin proporsional per jam (round((points/10)*count), min 1)
- Terlambat auto-violation: poin fix sesuai jenis (2 poin)
- Also handles both A (alpha) and T (terlambat) statuses for auto-violations
2026-07-22 23:55:27 +07:00