From 749b45f2c82fbe83bea58aaf515568675a641bd2 Mon Sep 17 00:00:00 2001 From: Habibie Date: Wed, 19 Aug 2026 14:25:33 +0700 Subject: [PATCH 1/3] perbaiki data desa tidak tampil --- app/Http/Controllers/DesaController.php | 4 ++++ .../components/wilayah_filter_js.blade.php | 23 +++++++++++++++++-- resources/views/dasbor/summary.blade.php | 19 +++++++-------- resources/views/desa/index.blade.php | 21 ++++++++++------- 4 files changed, 48 insertions(+), 19 deletions(-) diff --git a/app/Http/Controllers/DesaController.php b/app/Http/Controllers/DesaController.php index 2ac184c80..4fc81d4db 100644 --- a/app/Http/Controllers/DesaController.php +++ b/app/Http/Controllers/DesaController.php @@ -14,6 +14,10 @@ public function index() 'kode_kecamatan' => null, ]); + $filters = collect($filters)->map(function ($value) { + return in_array($value, ['null', 'undefined'], true) ? null : $value; + })->all(); + return view('desa.index', compact('filters')); } diff --git a/resources/views/components/wilayah_filter_js.blade.php b/resources/views/components/wilayah_filter_js.blade.php index 8316c297d..88f54d19d 100644 --- a/resources/views/components/wilayah_filter_js.blade.php +++ b/resources/views/components/wilayah_filter_js.blade.php @@ -7,6 +7,10 @@ }; const identitasOpenkab = $(`meta[name="${AJAX_PARAMS_CONFIG.metaTagName}"]`).attr('content') || ''; let isAutoLoad = false; + let urlFilterRestoring = false; + const queryKodeKabupaten = new URLSearchParams(window.location.search).get('filter[kode_kabupaten]'); + const queryKodeKecamatan = new URLSearchParams(window.location.search).get('filter[kode_kecamatan]'); + const queryKodeDesa = new URLSearchParams(window.location.search).get('filter[kode_desa]'); let urlKabupaten = "{{ config('app.databaseGabunganUrl') . '/api/v1/statistik-web/get-list-kabupaten' }}?" + @@ -20,7 +24,6 @@ var optionEmpty = new Option("", ""); $("#filter_kabupaten").append(optionEmpty); - const queryKodeKabupaten = new URLSearchParams(window.location.search).get('filter[kode_kabupaten]'); const filterValue = queryKodeKabupaten || identitasOpenkab; for (var i = 0; i < data.length; i++) { @@ -30,6 +33,7 @@ if (data[i].kode_kabupaten === filterValue) { isAutoLoad = true; + urlFilterRestoring = true; $("#filter_kabupaten").val(filterValue).trigger('change'); } } @@ -75,8 +79,18 @@ $("#filter_kecamatan").append(newOption); } $('#filter_kecamatan').prop('disabled', false); + if (urlFilterRestoring && queryKodeKecamatan) { + $('#filter_kecamatan').val(queryKodeKecamatan); + if ($('#filter_kecamatan').val() === queryKodeKecamatan) { + $('#filter_kecamatan').trigger('change'); + } else { + urlFilterRestoring = false; + } + } else { + urlFilterRestoring = false; + } if (isAutoLoad) { - $('#bt_filter').trigger('click'); + $('#bt_filter, #filter').trigger('click'); isAutoLoad = false; } }) @@ -104,6 +118,11 @@ $("#filter_desa").append(newOption); } $('#filter_desa').prop('disabled', false); + if (urlFilterRestoring && queryKodeDesa) { + $('#filter_desa').val(queryKodeDesa); + $('#filter_desa').trigger('change'); + } + urlFilterRestoring = false; }) } }) diff --git a/resources/views/dasbor/summary.blade.php b/resources/views/dasbor/summary.blade.php index e99c96941..1c85e4f6b 100644 --- a/resources/views/dasbor/summary.blade.php +++ b/resources/views/dasbor/summary.blade.php @@ -30,9 +30,9 @@ $(`.kategori-item .jumlah-${index}-elm`).closest('.item-box').find('a') .data( 'filter', { - 'kode_kabupaten': kabupaten, - 'kode_kecamatan': kecamatan, - 'kode_desa': desa, + 'kode_kabupaten': kabupaten || '', + 'kode_kecamatan': kecamatan || '', + 'kode_desa': desa || '', 'nama_kabupaten': $('#filter_kabupaten').find(':selected') .text(), 'nama_kecamatan': $('#filter_kecamatan').find(':selected') @@ -47,12 +47,13 @@ event.preventDefault(); let url = $(this).data('url'); let _url = new URL(url); - _url.searchParams.set('filter[kode_kabupaten]', $(this).data('filter')['kode_kabupaten']); - _url.searchParams.set('filter[kode_kecamatan]', $(this).data('filter')['kode_kecamatan']); - _url.searchParams.set('filter[kode_desa]', $(this).data('filter')['kode_desa']); - _url.searchParams.set('filter[nama_kabupaten]', $(this).data('filter')['nama_kabupaten']); - _url.searchParams.set('filter[nama_kecamatan]', $(this).data('filter')['nama_kecamatan']); - _url.searchParams.set('filter[nama_desa]', $(this).data('filter')['nama_desa']); + let filter = $(this).data('filter'); + ['kode_kabupaten', 'kode_kecamatan', 'kode_desa', 'nama_kabupaten', 'nama_kecamatan', 'nama_desa'] + .forEach(function(key) { + if (filter[key]) { + _url.searchParams.set('filter[' + key + ']', filter[key]); + } + }); window.location.href = _url.href; }) }) diff --git a/resources/views/desa/index.blade.php b/resources/views/desa/index.blade.php index 85118e13c..4d659c1fe 100644 --- a/resources/views/desa/index.blade.php +++ b/resources/views/desa/index.blade.php @@ -132,25 +132,30 @@ class="fas fa-search"> serverSide: true, autoWidth: false, ordering: true, + order: [ + [1, 'asc'] + ], searchPanes: { viewTotal: false, columns: [0] }, ajax: { url: urlPenduduk, + headers: header, method: 'get', data: function(row) { return { "page[size]": row.length, "page[number]": (row.start / row.length) + 1, "filter[search]": row.search.value, - "filter[kode_kabupaten]": $("#filter_kabupaten").val(), - "filter[kode_kecamatan]": $("#filter_kecamatan").val(), - "filter[kode_desa]": $("#filter_desa").val(), - "sort": (row.order[0]?.dir === "asc" ? "" : "-") + row.columns[row + "filter[kode_kabupaten]": $("#filter_kabupaten").val() || '', + "filter[kode_kecamatan]": $("#filter_kecamatan").val() || '', + "filter[kode_desa]": $("#filter_desa").val() || '', + "sort": row.columns[row.order[0]?.column]?.name ? + (row.order[0]?.dir === "asc" ? "" : "-") + row.columns[row .order[0] ?.column] - ?.name + ?.name : undefined }; }, dataSrc: function(json) { @@ -173,7 +178,7 @@ className: 'text-nowrap', } }, { - targets: [0, 1, 2, 3], + targets: 0, orderable: false, searchable: false, }, @@ -210,8 +215,8 @@ className: 'text-center' $(document).on('click', '#reset', function(e) { e.preventDefault(); $('#filter_kabupaten').val('').change(); - $('#filter_kabupaten').val('').change(); - $('#filter_kabupaten').val('').change(); + $('#filter_kecamatan').val('').change(); + $('#filter_desa').val('').change(); pendudukDatatable.ajax.reload(); }); From 717d29d51aa51c9823e478a15fc2b5313a7b9e66 Mon Sep 17 00:00:00 2001 From: Habibie Date: Wed, 19 Aug 2026 14:39:26 +0700 Subject: [PATCH 2/3] test filter desa --- tests/Feature/DesaControllerTest.php | 44 ++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 tests/Feature/DesaControllerTest.php diff --git a/tests/Feature/DesaControllerTest.php b/tests/Feature/DesaControllerTest.php new file mode 100644 index 000000000..4d35bb869 --- /dev/null +++ b/tests/Feature/DesaControllerTest.php @@ -0,0 +1,44 @@ +get(route('desa.index')); + + $response->assertStatus(200); + $response->assertViewIs('desa.index'); + } + + #[Test] + public function it_normalizes_null_string_filter_values() + { + $response = $this->get(route('desa.index') . '?filter[kode_kabupaten]=5102&filter[kode_kecamatan]=&filter[kode_desa]=null&filter[nama_kabupaten]=Tabanan&filter[nama_kecamatan]=&filter[nama_desa]='); + + $response->assertStatus(200); + $response->assertViewHas('filters', function ($filters) { + return $filters['kode_kabupaten'] === '5102' + && empty($filters['kode_kecamatan']) + && $filters['kode_desa'] === null; + }); + } + + #[Test] + public function it_does_not_render_option_with_null_string_value() + { + $response = $this->get(route('desa.index') . '?filter[kode_kabupaten]=5102&filter[kode_kecamatan]=&filter[kode_desa]=null&filter[nama_kabupaten]=Tabanan&filter[nama_kecamatan]=&filter[nama_desa]='); + + $response->assertStatus(200); + $response->assertDontSee('value="null"'); + $response->assertSee('Tabanan'); + } +} \ No newline at end of file From 4f65c87209bb98ce8f7ae0ad2a7eaec62ef1bf6f Mon Sep 17 00:00:00 2001 From: Abah Roland <59082428+vickyrolanda@users.noreply.github.com> Date: Wed, 19 Aug 2026 15:10:17 +0700 Subject: [PATCH 3/3] [ci skip] memutahrikan catatan rilis --- catatan_rilis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/catatan_rilis.md b/catatan_rilis.md index 095dca669..872405925 100644 --- a/catatan_rilis.md +++ b/catatan_rilis.md @@ -9,7 +9,7 @@ Di rilis ini, versi 2608.0.1 berisi penambahan dan perbaikan yang diminta penggu 3. [#1111](https://github.com/OpenSID/OpenKab/issues/1111) Perbaikan style pada halaman slide tertutupi card icon penduduk. 4. [#1262](https://github.com/OpenSID/OpenKab/issues/1262) Perbaikan grafik tidak tampil pada Profile Kependudukan - Kesehatan. 5. [#1260](https://github.com/OpenSID/OpenKab/issues/1260) Perbaikan Error 500 gagal ambil data statistik partisipasi sekolah dan ijazah tertinggi. - +6. [#1265](https://github.com/OpenSID/OpenKab/issues/1265) perbaikan data desa tidak tampil di OpenKab. #### Perubahan Teknis