Skip to content

Fix filter kecamatan tampil tanpa memilih kabupaten terlebih dahulu - #1107

Merged
analisopendesa merged 5 commits into
rilis-devfrom
fix/default-filter
Aug 12, 2026
Merged

Fix filter kecamatan tampil tanpa memilih kabupaten terlebih dahulu#1107
analisopendesa merged 5 commits into
rilis-devfrom
fix/default-filter

Conversation

@pandigresik

Copy link
Copy Markdown
Contributor

Pull Request: Fix filter kecamatan tampil tanpa memilih kabupaten terlebih dahulu

Description

Memperbaiki bug di halaman dasbor (/dasbor) di mana opsi filter kecamatan dapat tampil tanpa pengguna memilih kabupaten terlebih dahulu. Perbaikan dilakukan dengan memastikan default filter kabupaten mengikuti identitas kabupaten aplikasi (config('app.kodeKabupatenApi')) sehingga cascade filter kabupaten → kecamatan → desa berjalan pada urutan yang benar saat halaman dimuat, sekaligus menghapus pemanggilan inisialisasi berulang pada blok dasbor (summary, peta, dan tabel penduduk) agar setiap API hanya dipanggil satu kali.

Changes made:

  1. Bug Fix: app/Listeners/LoginListener.php — Saat login, session('kabupaten.kode_kabupaten') kini menggunakan default identitas kabupaten aplikasi (config('app.kodeKabupatenApi')) menggantikan null ketika user tidak memiliki kode_kabupaten (mis. role administrator)
  2. Bug Fix: resources/views/dasbor/tabel_penduduk.blade.php — Menambahkan deferLoading: 0 (menahan request awal DataTable server-side) dan menghapus trigger('change')draw() saat inisialisasi
  3. Bug Fix: resources/views/dasbor/summary.blade.php — Menghapus $('#summary_block').trigger('change') saat inisialisasi
  4. Bug Fix: resources/views/dasbor/peta.blade.php — Menghapus $('#map').trigger('change') saat inisialisasi
  5. Bug Fix: resources/views/dasbor/index.blade.php — Menambahkan fallback polling yang memicu pemuatan data satu kali setelah daftar kabupaten termuat, hanya ketika kabupaten belum otomatis terseleksi
  6. Chore: .gitignore — Menambahkan direktori tooling lokal (specs/, .opencode/, .specify/)

Reason for change:

  • Bug Perbaikan filter kecamatan yang tampil tanpa pilih opsi kabupaten terlbih dahulu #1105: Opsi filter kecamatan dapat muncul sebelum kabupaten dipilih karena blok dasbor dimuat terlebih dahulu tanpa menunggu cascade filter kabupaten selesai
  • Konsistensi default: Tanpa default kode kabupaten di session, filter tidak mengikuti identitas kabupaten aplikasi sehingga urutan cascade filter tidak deterministik saat pertama kali dimuat
  • Efisiensi: Inisialisasi blok memicu draw()/request API berulang (summary, tabel penduduk, dan peta dipanggil lebih dari satu kali saat load)

Impact of change:

Urutan filter benar: Opsi kabupaten muncul terlebih dahulu, opsi kecamatan hanya setelah kabupaten dipilih
Default filter mengikuti identitas: Filter kabupaten otomatis terseleksi sesuai identitas kabupaten aplikasi
Performa: Setiap API (data-website, wilayah/penduduk, get-list-coordinate) hanya dipanggil satu kali saat halaman dimuat

Related Issue

#1105

Steps to Reproduce

Sebelum (masalah):

  1. Login ke OpenKab (role administrator)
  2. Buka halaman dasbor (/dasbor)
  3. Filter kecamatan sudah menampilkan opsi meskipun kabupaten belum dipilih
  4. Blok summary, peta, dan tabel penduduk dimuat berulang kali saat halaman dibuka
  5. ❌ Opsi kecamatan tampil tanpa pilih kabupaten, dan request API terpanggil lebih dari satu kali

Sesudah (solusi):

  1. Login ke OpenKab
  2. Buka halaman dasbor (/dasbor)
  3. Filter kabupaten otomatis terseleksi sesuai identitas kabupaten aplikasi
  4. Opsi kecamatan hanya muncul setelah kabupaten dipilih
  5. ✅ Data dasbor dimuat satu kali dengan urutan filter yang benar

Testing pada fitur terkait:

  • Filter kabupaten/kecamatan/desa ✅ Berfungsi sesuai urutan
  • Tombol TAMPILKAN & HAPUS FILTER ✅ Berfungsi
  • Halaman dasbor demografi ✅ Tidak terpengaruh

Checklist

  • I have complied with script writing rules
  • I have followed pull request review process
  • I have created unit test/integration test to verify the fix
  • Manual testing has been done in development environment
  • No console errors or warnings
  • Code has been reviewed by at least 1 person

Technical Details

Technical Explanation

Filter wilayah dasbor bekerja dengan cascade: daftar kabupaten dimuat → jika kode kabupaten identitas (identitas-openkab) cocok, kabupaten otomatis terseleksi → kecamatan dimuat setelahnya → desa menyusul. Sebelum perbaikan, blok dasbor memicu pemuatan datanya sendiri pada DOMContentLoaded (terlepas dari cascade), sehingga opsi kecamatan dan data API muncul tanpa menunggu kabupaten terpilih, dan request API terpanggil berulang (inisialisasi langsung + cascade auto-filter).

Perbaikan:

  • LoginListener menetapkan default session('kabupaten.kode_kabupaten') ke identitas kabupaten agar default filter selalu tersedia dan deterministik.
  • deferLoading: 0 pada DataTable menahan request awal server-side; tabel hanya dimuat saat blok di-trigger('change').
  • Fallback polling di dasbor/index.blade.php memastikan data tetap termuat satu kali saat tidak ada kabupaten yang cocok dengan identitas:
var kabLoaded = false;
var loadAttempts = 0;
var loadInterval = setInterval(function() {
    loadAttempts++;
    kabLoaded = $('#filter_kabupaten option').filter(function() {
        return this.value !== '';
    }).length > 0;
    if (kabLoaded || loadAttempts > 50) {
        clearInterval(loadInterval);
        if (kabLoaded && !$('#filter_kabupaten').val()) {
            $('#bt_filter').trigger('click');
        }
    }
}, 100);

Configuration changes

Tidak ada perubahan konfigurasi aplikasi. Default kode kabupaten session memanfaatkan config('app.kodeKabupatenApi') yang sudah di-set dari tabel identitas di AppServiceProvider.

Dependencies added

No new dependencies

Testing

Manual Testing

  • Login administrator → /dasbor → filter kabupaten otomatis terpilih sesuai identitas, kecamatan hanya muncul setelah kabupaten dipilih
  • Login non-administrator → filter tetap mengikuti kode_kabupaten user
  • Klik TAMPILKAN / HAPUS FILTER → data dimuat ulang satu kali
  • Verifikasi di DevTools bahwa data-website, wilayah/penduduk, dan get-list-coordinate hanya dipanggil satu kali saat load
  • Regression Testing — halaman dasbor demografi dan elemen dasbor tetap tampil

Automated Testing

  • tests/Browser/SmokeDashboardTest.php — 4 passed (32 assertions)
  • tests/Browser/SmokeDashboardDemografiTest.php — 5 passed (52 assertions)

Status: ./vendor/bin/pest tests/Browser/SmokeDashboardTest.php dan tests/Browser/SmokeDashboardDemografiTest.php → semua hijau.

Screenshots / Video

simplescreenrecorder-2026-08-10_13.28.27.mp4

Sebelum:

Opsi kecamatan tampil tanpa memilih kabupaten terlebih dahulu (lihat lampiran issue #1105).

Sesudah:

Hanya opsi kabupaten yang tampil terlebih dahulu; opsi kecamatan muncul setelah kabupaten dipilih. Data dasbor dimuat satu kali.

Breaking Changes

None. Perubahan hanya pada perilaku inisialisasi blok dasbor dan default session; tidak ada perubahan route, tabel, atau kontrak API.

Migration Guide

Not required

References


Additional notes: Pengujian otomatis yang disebutkan dijalankan pada commit 6201c71d (perbaikan default filter kabupaten mengikuti identitas kabupaten). Screenshot "Sesudah" dapat ditambahkan setelah verifikasi di environment staging.

@github-actions

Copy link
Copy Markdown

🔄 AI PR Review sedang antri di server...

Proses review akan segera dimulai di background — hasil akan muncul sebagai komentar setelah selesai.
Powered by CrewAI · PR #1107

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants