diff --git a/app/Enums/Modul.php b/app/Enums/Modul.php index 1175c99e..6bd3b2d0 100644 --- a/app/Enums/Modul.php +++ b/app/Enums/Modul.php @@ -175,76 +175,76 @@ final class Modul extends Enum ], [ 'icon' => 'far fa-fw fa-circle', - 'text' => 'Data Presisi Pangan', + 'text' => 'Pangan', 'url' => 'data-presisi/pangan', 'permission' => 'datapresisi-pangan', ], [ 'icon' => 'far fa-fw fa-circle', - 'text' => 'Data Sandang', + 'text' => 'Sandang', 'url' => 'data-pokok/sandang', 'permission' => 'datapokok-sandang', ], [ 'icon' => 'far fa-fw fa-circle', - 'text' => 'Data Papan', + 'text' => 'Papan', 'url' => 'satu-data/dtks/papan', 'permission' => 'datapokok-papan', ], [ 'icon' => 'far fa-fw fa-circle', - 'text' => 'Data Presisi Pendidikan', + 'text' => 'Kesehatan', + 'url' => 'data-presisi/kesehatan', + 'permission' => 'datapresisi-kesehatan', + ], + [ + 'icon' => 'far fa-fw fa-circle', + 'text' => 'Pendidikan', 'url' => 'data-presisi/pendidikan', 'permission' => 'datapresisi-pendidikan', ], [ 'icon' => 'far fa-fw fa-circle', - 'text' => 'Data Presisi Seni Budaya', - 'url' => 'data-presisi/seni-budaya', - 'permission' => 'datapresisi-seni-budaya', + 'text' => 'Jaminan Sosial', + 'url' => 'data-pokok/jaminan-sosial', + 'permission' => 'datapokok-jaminan-sosial', ], [ 'icon' => 'far fa-fw fa-circle', - 'text' => 'Data Presisi Ketenagakerjaan', + 'text' => 'Ketenagakerjaan', 'url' => 'data-presisi/ketenagakerjaan', 'permission' => 'datapresisi-ketenagakerjaan', - ], + ], [ 'icon' => 'far fa-fw fa-circle', - 'text' => 'Data Presisi Kesehatan', - 'url' => 'data-presisi/kesehatan', - 'permission' => 'datapresisi-kesehatan', - ], - [ - 'icon' => 'far fa-fw fa-circle', - 'text' => 'Data Infrastruktur', - 'url' => 'data-pokok/infrastruktur', - 'permission' => 'datapokok-infrastruktur', - ], + 'text' => 'Adat', + 'url' => 'data-presisi/adat', + 'permission' => 'datapresisi-adat', + ], [ 'icon' => 'far fa-fw fa-circle', - 'text' => 'Data Pariwisata', - 'url' => 'data-pokok/pariwisata', - 'permission' => 'datapokok-pariwisata', + 'text' => 'Agama', + 'url' => 'data-pokok/agama', + 'permission' => 'datapokok-agama-adat', ], [ 'icon' => 'far fa-fw fa-circle', - 'text' => 'Jaminan Sosial', - 'url' => 'data-pokok/jaminan-sosial', - 'permission' => 'datapokok-jaminan-sosial', - ], + 'text' => 'Seni Budaya', + 'url' => 'data-presisi/seni-budaya', + 'permission' => 'datapresisi-seni-budaya', + ], [ 'icon' => 'far fa-fw fa-circle', - 'text' => 'Data Agama', - 'url' => 'data-pokok/agama', - 'permission' => 'datapokok-agama-adat', + 'text' => 'Pariwisata', + 'url' => 'data-pokok/pariwisata', + 'permission' => 'datapokok-pariwisata', ], [ 'icon' => 'far fa-fw fa-circle', - 'text' => 'Data Adat', - 'url' => 'data-presisi/adat', - 'permission' => 'datapresisi-adat', - ], + 'text' => 'Data Infrastruktur', + 'url' => 'data-pokok/infrastruktur', + 'permission' => 'datapokok-infrastruktur', + ], [ 'icon' => 'far fa-fw fa-circle', 'text' => 'Laporan Pengisian', diff --git a/app/Enums/StatusKelengkapanPresisiEnum.php b/app/Enums/StatusKelengkapanPresisiEnum.php new file mode 100644 index 00000000..9969252b --- /dev/null +++ b/app/Enums/StatusKelengkapanPresisiEnum.php @@ -0,0 +1,79 @@ + 'Tidak Lengkap', + self::LENGKAP_SEBAGIAN => 'Lengkap Sebagian', + self::DATA_LENGKAP => 'Data Lengkap', + default => 'Status Tidak Diketahui', + }; + } + + public static function getBadgeClass($value): string + { + return match ($value) { + self::DATA_LENGKAP => 'label-success', + self::LENGKAP_SEBAGIAN => 'label-warning', + self::TIDAK_LENGKAP => 'label-danger', + default => 'label-default', + }; + } + + public static function getAll(): array + { + return [ + self::TIDAK_LENGKAP => 'Tidak Lengkap', + self::LENGKAP_SEBAGIAN => 'Lengkap Sebagian', + self::DATA_LENGKAP => 'Data Lengkap', + ]; + } +} \ No newline at end of file diff --git a/app/Helpers/general.php b/app/Helpers/general.php index db446d88..6d797c60 100644 --- a/app/Helpers/general.php +++ b/app/Helpers/general.php @@ -32,7 +32,7 @@ */ function openkab_versi() { - return 'v2602.0.0'; + return 'v2603.0.0'; } } diff --git a/app/Http/Controllers/DataPresisiPanganController.php b/app/Http/Controllers/DataPresisiPanganController.php index e614e8a5..0f4f10b7 100644 --- a/app/Http/Controllers/DataPresisiPanganController.php +++ b/app/Http/Controllers/DataPresisiPanganController.php @@ -13,6 +13,17 @@ public function index() return view('data_pokok.data_presisi.pangan.index', compact('title')); } + public function detailData() + { + $colomn = ''; + $title = 'Data Presisi Pangan '.request('judul'); + $filter = request('filter'); + if($filter['tipe'] && $filter['nilai']){ + $colomn = $filter['tipe'].':'.$filter['nilai']; + } + return view('data_pokok.data_presisi.pangan.detail_data', compact('title', 'colomn')); + } + public function detail(Request $request) { $data = json_decode($request->data); diff --git a/app/Http/Controllers/StatistikPanganController.php b/app/Http/Controllers/StatistikPanganController.php index 46228e03..51d40ec3 100644 --- a/app/Http/Controllers/StatistikPanganController.php +++ b/app/Http/Controllers/StatistikPanganController.php @@ -7,7 +7,7 @@ class StatistikPanganController extends Controller public function index() { return view('presisi.statistik.pangan', [ - 'detailLink' => url(''), + 'detailLink' => url('data-presisi/pangan/detail_data'), 'judul' => 'Pangan' ]); } diff --git a/catatan_rilis.md b/catatan_rilis.md index abc24016..654eb629 100644 --- a/catatan_rilis.md +++ b/catatan_rilis.md @@ -1,30 +1,15 @@ -Di rilis ini, versi 2602.0.0 berisi penambahan dan perbaikan yang diminta pengguna. +Di rilis ini, versi 2603.0.0 berisi penambahan dan perbaikan yang diminta pengguna. #### Penambahan Fitur -1. [#883](https://github.com/OpenSID/OpenKab/issues/883) Penambahan fitur download untuk data desa. -2. [#884](https://github.com/OpenSID/OpenKab/issues/884) Penambahan fitur download data kecamatan. -3. [#885](https://github.com/OpenSID/OpenKab/issues/885) Penambahan fungsi ekspor excel pada data daftar data keluarga. -4. [#896](https://github.com/OpenSID/OpenKab/issues/896) Penambahan fungsi cetak pada data presisi infrastruktur. -5. [#897](https://github.com/OpenSID/OpenKab/issues/897) Penambahan fungsi cetak pada data presisi pariwisata. -6. [#905](https://github.com/OpenSID/OpenKab/issues/905) Penambahan fungsi expor data presisi pangan. -7. [#902](https://github.com/OpenSID/OpenKab/issues/902) Penambahan fitur expor & cetak pada halaman data peserta bantuan. -8. [#907](https://github.com/OpenSID/OpenKab/issues/907) Penambahan fitur expor excel pada data presisi pendidikan. -9. [#906](https://github.com/OpenSID/OpenKab/issues/906) Penambahan fitur expor excel pada data presisi pangan. -10. [#916](https://github.com/OpenSID/OpenKab/issues/916) Penambahan fitur expor excel pada data presisi ketenagakerjaan. -11. [#908](https://github.com/OpenSID/OpenKab/issues/908) Penambahan fitur expor excel pada data presisi seni budaya. -12. [#919](https://github.com/OpenSID/OpenKab/issues/919) Penambahan fitur expor excel pada data presisi infrastruktur. -13. [#921](https://github.com/OpenSID/OpenKab/issues/921) Penambahan fitur expor excel pada data presisi jaminan sosial. -14. [#920](https://github.com/OpenSID/OpenKab/issues/920) Penambahan fitur expor excel pada data presisi parawisata. -15. [#923](https://github.com/OpenSID/OpenKab/issues/923) Penambahan fitur expor excel pada data presisi adat. -16. [#922](https://github.com/OpenSID/OpenKab/issues/922) Penambahan expor excel pada data presisi agama. +1. [#933](https://github.com/OpenSID/OpenKab/issues/933) Penambahan fungsi filter data Belum Lengkap pada data presisi. + #### Perbaikan BUG -1. [#893](https://github.com/OpenSID/OpenKab/issues/893) Perbaiki UI Layout dashboard dan sidebar. + #### Perubahan Teknis -1. [#892](https://github.com/OpenSID/OpenKab/issues/892) Perbaikan tag style agar tidak dianggap error ketika csp aktif. -2. [#886](https://github.com/OpenSID/OpenKab/issues/886) Ubah label cetak menjadi excel pada laporan bulanan. -3. [#903](https://github.com/OpenSID/OpenKab/issues/903) Ubah fungsi cetak ke expor excel pada halaman rincian kependudukan bulanan. \ No newline at end of file +1. [#932](https://github.com/OpenSID/OpenKab/issues/932) Mengurutkan daftar menu pada OpenKab. +2. [#935](https://github.com/OpenSID/OpenKab/issues/935) Perubahan router yang mendukung server. \ No newline at end of file diff --git a/database/migrations/2026_02_10_142214_urutkan_menu.php b/database/migrations/2026_02_10_142214_urutkan_menu.php new file mode 100644 index 00000000..d887fccb --- /dev/null +++ b/database/migrations/2026_02_10_142214_urutkan_menu.php @@ -0,0 +1,26 @@ +update(['menu_order' => null]); + Artisan::call('admin:menu-update'); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // tidak bisa dikembalikan + } +}; diff --git a/resources/views/components/filter-status-presisi.blade.php b/resources/views/components/filter-status-presisi.blade.php new file mode 100644 index 00000000..b3681113 --- /dev/null +++ b/resources/views/components/filter-status-presisi.blade.php @@ -0,0 +1,8 @@ +
+ +
\ No newline at end of file diff --git a/resources/views/components/filter-tahun.blade.php b/resources/views/components/filter-tahun.blade.php index f23a189c..37fe3266 100644 --- a/resources/views/components/filter-tahun.blade.php +++ b/resources/views/components/filter-tahun.blade.php @@ -3,10 +3,11 @@ @php $currentYear = date('Y'); $startYear = $currentYear - 5; + $selectedYear = $selectedYear ?? $currentYear; @endphp @for($year = $currentYear; $year >= $startYear; $year--) - + @endfor \ No newline at end of file diff --git a/resources/views/data_pokok/agama/cetak.blade.php b/resources/views/data_pokok/agama/cetak.blade.php index 06673ce1..11cc2ab1 100644 --- a/resources/views/data_pokok/agama/cetak.blade.php +++ b/resources/views/data_pokok/agama/cetak.blade.php @@ -16,8 +16,7 @@ NO - NIK - NOMOR KK + NIK NAMA AGAMA FREKWENSI MENGIKUTI KEGIATAN KEAGAMAAN DALAM SETAHUN @@ -35,31 +34,20 @@ const header = @include('layouts.components.header_bearer_api_gabungan'); $.ajax({ - url: `{{ config('app.databaseGabunganUrl') . '/api/v1/data-presisi/agama' }}?${filter}`, + url: `{{ config('app.databaseGabunganUrl') . '/api/v1/data-presisi/agama/rtm' }}?${filter}`, headers: header, method: 'get', success: function(json) { - var no = 1; - // Transform the included array into an object - const transformedIncluded = json.included.reduce((acc, item) => { - if (!acc[item.type]) { - acc[item.type] = {}; - } - acc[item.type][item.id] = item.attributes; - return acc; - }, {}); + var no = 1; json.data.forEach(function(item) { var row = ` ${no} - ${transformedIncluded.penduduk[item - .relationships.penduduk.data.id].nik || 'N/A'} - ${transformedIncluded.penduduk[item - .relationships.penduduk.data.id].keluarga?.no_kk || 'N/A'} - ${transformedIncluded.penduduk[item - .relationships.penduduk.data.id].nama || 'N/A'} + ${item.attributes.nik || 'N/A'} + ${item.attributes.kepala_keluarga || 'N/A'} + ${item.attributes.jumlah_anggota || 'N/A'} ${item.attributes.agama || 'N/A'} - ${item.attributes.frekwensi || 'N/A'} + ${item.attributes.frekwensi_mengikuti_kegiatan || 'N/A'} ` $('#tabel-sandang tbody').append(row) diff --git a/resources/views/data_pokok/agama/index.blade.php b/resources/views/data_pokok/agama/index.blade.php index 7099f2a4..f043ccb8 100644 --- a/resources/views/data_pokok/agama/index.blade.php +++ b/resources/views/data_pokok/agama/index.blade.php @@ -31,6 +31,7 @@
+
@@ -72,7 +73,7 @@ let transformedIncluded = {}; document.addEventListener("DOMContentLoaded", function(event) { const header = @include('layouts.components.header_bearer_api_gabungan'); - var url = new URL("{{ config('app.databaseGabunganUrl') . '/api/v1/data-presisi/agama' }}"); + var url = new URL("{{ config('app.databaseGabunganUrl') . '/api/v1/data-presisi/agama/rtm' }}"); url.searchParams.set("kode_kabupaten", "{{ session('kabupaten.kode_kabupaten') ?? '' }}"); url.searchParams.set("kode_kecamatan", "{{ session('kecamatan.kode_kecamatan') ?? '' }}"); url.searchParams.set("config_desa", "{{ session('desa.id') ?? '' }}"); @@ -97,48 +98,17 @@ "filter[search]": row.search.value, "filter[kode_desa]": $("#kode_desa").val(), "filter[tahun]": $("#filter-tahun").val(), + "filter[status_kelengkapan]": $('#filter-status-kelengkapan').val(), }; }, dataSrc: function(json) { - - if (json.data.length > 0) { - json.recordsTotal = json.meta.pagination.total - json.recordsFiltered = json.meta.pagination.total + json.recordsTotal = json.meta?.pagination?.total || 0 + json.recordsFiltered = json.meta?.pagination?.total || 0 + if (json.data.length > 0) { data_grafik = []; - // Transform the included array into an object - transformedIncluded = json.included.reduce((acc, item) => { - if (!acc[item.type]) { - acc[item.type] = {}; - } - acc[item.type][item.id] = item.attributes; - return acc; - }, {}); - json.data.forEach(function(item, index) { data_grafik.push(item.attributes) - item.attributes.nik = transformedIncluded.penduduk[item - .relationships.penduduk.data.id].nik; - item.attributes.nama = transformedIncluded.penduduk[item - .relationships.penduduk.data.id].nama; - if (!item.attributes.frekwensi) { - item.attributes.frekwensi = 'TIDAK TAHU' - } - item.attributes.dtks = transformedIncluded.rtm[item - .relationships.rtm.data.id].dtks ? 'Terdaftar' : - 'Tidak Terdaftar'; - item.attributes.tgl_daftar = transformedIncluded.rtm[item - .relationships.rtm.data.id].tgl_daftar; - item.attributes.jumlah_kk = transformedIncluded.rtm[item - .relationships.rtm.data.id].jumlah_kk; - item.attributes.alamat = transformedIncluded.keluarga[item - .relationships.keluarga.data.id].alamat; - item.attributes.dusun = transformedIncluded.keluarga[item - .relationships.keluarga.data.id].wilayah?.dusun; - item.attributes.rt = transformedIncluded.keluarga[item - .relationships.keluarga.data.id].wilayah?.rt; - item.attributes.rw = transformedIncluded.keluarga[item - .relationships.keluarga.data.id].wilayah?.rw; - }) + }) grafikPie() return json.data; } @@ -153,15 +123,12 @@ className: 'text-nowrap', data: function(data) { let d = data.attributes let obj = { - 'rtm_id': data.relationships.rtm.data.id, - 'no_kartu_rumah': transformedIncluded.rtm[data.relationships.rtm - .data.id].no_kk, - 'nama_kepala_keluarga': d.nama, - 'alamat': transformedIncluded.keluarga[data.relationships - .keluarga.data.id].alamat, - 'jumlah_anggota': d.anggota_count, - 'jumlah_kk': transformedIncluded.rtm[data.relationships.rtm - .data.id].jumlah_kk, + 'rtm_id': data.id, + 'no_kartu_rumah': d.no_kk, + 'nama_kepala_keluarga': d.kepala_keluarga, + 'alamat': d.alamat, + 'jumlah_anggota': d.jumlah_anggota, + 'jumlah_kk': d.jumlah_kk, } let jsonData = encodeURIComponent(JSON.stringify(obj)); const _url = @@ -182,18 +149,15 @@ className: 'text-nowrap', }, { data: "attributes.nik", - name: "penduduk.nik", + orderable: false, }, { - data: "attributes.nama", - name: "rtm.nama_kepala_keluarga", - orderable: false + data: "attributes.kepala_keluarga", + orderable: false, }, { - data: "attributes.anggota_count", - name: null, + data: "attributes.jumlah_anggota", orderable: false, - searchable: false }, { data: "attributes.agama", @@ -202,8 +166,8 @@ className: 'text-nowrap', searchable: false }, { - data: "attributes.frekwensi", - name: "frekwensi_mengikuti_kegiatan_setahun", + data: "attributes.frekwensi_mengikuti_kegiatan", + name: "frekwensi_mengikuti_kegiatan", orderable: false, searchable: false }, @@ -260,7 +224,7 @@ function format(data) { `; } - $('#filter-tahun').on('change', function() { + $('#filter-tahun, #filter-status-kelengkapan').on('change', function() { agama.ajax.reload(); data_grafik = []; grafikPie(); diff --git a/resources/views/data_pokok/data_presisi/adat/index.blade.php b/resources/views/data_pokok/data_presisi/adat/index.blade.php index 857f8a38..366ccb14 100644 --- a/resources/views/data_pokok/data_presisi/adat/index.blade.php +++ b/resources/views/data_pokok/data_presisi/adat/index.blade.php @@ -29,8 +29,9 @@
-
+
+
@@ -88,9 +89,10 @@ return { "page[size]": row.length, "page[number]": (row.start / row.length) + 1, - "filter[search]": row.search.value, - "sort": "id", + "filter[search]": row.search.value, + "sort": "id", "filter[tahun]": $('#filter-tahun').val(), + "filter[status_kelengkapan]": $('#filter-status-kelengkapan').val(), }; }, dataSrc: function(json) { @@ -216,7 +218,7 @@ function format(data) { `; } // Event listener for year filter change - $('#filter-tahun').on('change', function() { + $('#filter-tahun, #filter-status-kelengkapan').on('change', function() { adat.ajax.reload(); data_grafik = []; grafikPie(); diff --git a/resources/views/data_pokok/data_presisi/kesehatan/index.blade.php b/resources/views/data_pokok/data_presisi/kesehatan/index.blade.php index 5f3ba5da..dffa2ed7 100644 --- a/resources/views/data_pokok/data_presisi/kesehatan/index.blade.php +++ b/resources/views/data_pokok/data_presisi/kesehatan/index.blade.php @@ -29,6 +29,7 @@
+
@@ -86,6 +87,7 @@ "page[number]": (row.start / row.length) + 1, "filter[search]": row.search.value, "filter[tahun]": $('#filter-tahun').val(), + "filter[status_kelengkapan]": $('#filter-status-kelengkapan').val(), "sort": "id" }; }, @@ -210,7 +212,7 @@ function format(data) { `; } // Event listener for year filter change - $('#filter-tahun').on('change', function() { + $('#filter-tahun, #filter-status-kelengkapan').on('change', function() { dtks.ajax.reload(); data_grafik = []; grafikPie(); diff --git a/resources/views/data_pokok/data_presisi/ketenagakerjaan/index.blade.php b/resources/views/data_pokok/data_presisi/ketenagakerjaan/index.blade.php index 6c7e40fd..6b5fdffc 100644 --- a/resources/views/data_pokok/data_presisi/ketenagakerjaan/index.blade.php +++ b/resources/views/data_pokok/data_presisi/ketenagakerjaan/index.blade.php @@ -29,6 +29,7 @@
+
@@ -89,12 +90,14 @@ "kode_kecamatan": "{{ session('kecamatan.kode_kecamatan') ?? '' }}", "config_desa": "{{ session('desa.id') ?? '' }}", "filter[tahun]": $('#filter-tahun').val(), + "filter[status_kelengkapan]": $('#filter-status-kelengkapan').val(), }; }, dataSrc: function(json) { - if (json.data.length > 0) { - json.recordsTotal = json.meta.pagination.total - json.recordsFiltered = json.meta.pagination.total + // Set default values untuk recordsTotal dan recordsFiltered + json.recordsTotal = json.meta?.pagination?.total || 0; + json.recordsFiltered = json.meta?.pagination?.total || 0; + if (json.data.length > 0) { data_grafik = []; json.data.forEach(function(item, index) { data_grafik.push(item.attributes) @@ -210,7 +213,7 @@ function format(data) { `; } // Event listener for year filter change - $('#filter-tahun').on('change', function() { + $('#filter-tahun, #filter-status-kelengkapan').on('change', function() { dtks.ajax.reload(); data_grafik = []; grafikPie(); diff --git a/resources/views/data_pokok/data_presisi/pangan/detail_data.blade.php b/resources/views/data_pokok/data_presisi/pangan/detail_data.blade.php new file mode 100644 index 00000000..e4c07119 --- /dev/null +++ b/resources/views/data_pokok/data_presisi/pangan/detail_data.blade.php @@ -0,0 +1,218 @@ +@extends('layouts.index') + +@section('title', $title) + +@section('content_header') +

{{ $title }}

+@stop + +@section('content') +@include('partials.breadcrumbs') + +
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NONIKNOMOR KKNAMAJENIS LAHANLUAS LAHANLUAS TANAMSTATUS LAHANKOMODITI UTAMA TANAMAN PANGANKOMODITI TANAMAN PANGAN LAINNYAJUMLAH BERDASARKAN JENIS KOMODITIUSIA KOMODITIJENIS PETERNAKANJUMLAH POPULASIJENIS PERIKANANFREKWENSI MAKANAN PERHARIFREKWENSI KONSUMSI SAYUR PERHARIFREKWENSI KONSUMSI BUAH PERHARIFREKWENSI KONSUMSI DAGING PERHARILONGITUDELATITUDETANGGAL PENGISIANSTATUS PENGISIAN
+
+
+
+
+
+@endsection + +@section('js') + +@endsection \ No newline at end of file diff --git a/resources/views/data_pokok/data_presisi/pangan/index.blade.php b/resources/views/data_pokok/data_presisi/pangan/index.blade.php index 4b799bfe..97f79751 100644 --- a/resources/views/data_pokok/data_presisi/pangan/index.blade.php +++ b/resources/views/data_pokok/data_presisi/pangan/index.blade.php @@ -28,7 +28,8 @@
- + +
@@ -87,6 +88,7 @@ "page[number]": (row.start / row.length) + 1, "filter[search]": row.search.value, "filter[tahun]": $('#filter-tahun').val(), + "filter[status_kelengkapan]": $('#filter-status-kelengkapan').val(), }; }, dataSrc: function(json) { @@ -251,7 +253,7 @@ function format(data) { `; } // Event listener for year filter change - $('#filter-tahun').on('change', function() { + $('#filter-tahun, #filter-status-kelengkapan').on('change', function() { dtks.ajax.reload(); data_grafik = []; grafikPie(); diff --git a/resources/views/data_pokok/data_presisi/pendidikan/index.blade.php b/resources/views/data_pokok/data_presisi/pendidikan/index.blade.php index b623bc6f..80f76f02 100644 --- a/resources/views/data_pokok/data_presisi/pendidikan/index.blade.php +++ b/resources/views/data_pokok/data_presisi/pendidikan/index.blade.php @@ -29,6 +29,7 @@
+
@@ -89,12 +90,14 @@ "kode_kecamatan": "{{ session('kecamatan.kode_kecamatan') ?? '' }}", "config_desa": "{{ session('desa.id') ?? '' }}", "filter[tahun]": $('#filter-tahun').val(), + "filter[status_kelengkapan]": $('#filter-status-kelengkapan').val(), }; }, dataSrc: function(json) { - if (json.data.length > 0) { - json.recordsTotal = json.meta.pagination.total - json.recordsFiltered = json.meta.pagination.total + // Set default values untuk recordsTotal dan recordsFiltered + json.recordsTotal = json.meta?.pagination?.total || 0; + json.recordsFiltered = json.meta?.pagination?.total || 0; + if (json.data.length > 0) { data_grafik = []; json.data.forEach(function(item, index) { data_grafik.push(item.attributes) @@ -211,7 +214,7 @@ function format(data) { `; } // Event listener for year filter change - $('#filter-tahun').on('change', function() { + $('#filter-tahun, #filter-status-kelengkapan').on('change', function() { dtks.ajax.reload(); data_grafik = []; grafikPie(); diff --git a/resources/views/data_pokok/data_presisi/seni_budaya/index.blade.php b/resources/views/data_pokok/data_presisi/seni_budaya/index.blade.php index be4037a5..de4a6e32 100644 --- a/resources/views/data_pokok/data_presisi/seni_budaya/index.blade.php +++ b/resources/views/data_pokok/data_presisi/seni_budaya/index.blade.php @@ -29,6 +29,7 @@
+
@@ -91,12 +92,14 @@ "kode_kecamatan": "{{ session('kecamatan.kode_kecamatan') ?? '' }}", "config_desa": "{{ session('desa.id') ?? '' }}", "filter[tahun]": $('#filter-tahun').val(), + "filter[status_kelengkapan]": $('#filter-status-kelengkapan').val(), }; }, dataSrc: function(json) { - if (json.data && json.data.length > 0) { - json.recordsTotal = json.meta.pagination.total; - json.recordsFiltered = json.meta.pagination.total; + // Set default values untuk recordsTotal dan recordsFiltered + json.recordsTotal = json.meta?.pagination?.total || 0; + json.recordsFiltered = json.meta?.pagination?.total || 0; + if (json.data && json.data.length > 0) { data_grafik = []; json.data.forEach(function(item, index) { data_grafik.push(item.attributes); @@ -210,7 +213,7 @@ function format(data) { `; } // Event listener for year filter change - $('#filter-tahun').on('change', function() { + $('#filter-tahun, #filter-status-kelengkapan').on('change', function() { dtks.ajax.reload(); data_grafik = []; grafikPie(); diff --git a/resources/views/data_pokok/jaminan_sosial/cetak.blade.php b/resources/views/data_pokok/jaminan_sosial/cetak.blade.php index b332593e..044af128 100644 --- a/resources/views/data_pokok/jaminan_sosial/cetak.blade.php +++ b/resources/views/data_pokok/jaminan_sosial/cetak.blade.php @@ -16,8 +16,7 @@ NO - NIK - NOMOR KK + NIK NAMA JENIS BANTUAN SOSIAL YANG PERNAH DITERIMA JENIS GANGGUAN MENTAL YANG DIDERITA @@ -36,29 +35,18 @@ const header = @include('layouts.components.header_bearer_api_gabungan'); $.ajax({ - url: `{{ config('app.databaseGabunganUrl') . '/api/v1/data-presisi/jaminan-sosial' }}?${filter}`, + url: `{{ config('app.databaseGabunganUrl') . '/api/v1/data-presisi/jaminan-sosial/rtm' }}?${filter}`, headers: header, method: 'get', success: function(json) { - var no = 1; - // Transform the included array into an object - const transformedIncluded = json.included.reduce((acc, item) => { - if (!acc[item.type]) { - acc[item.type] = {}; - } - acc[item.type][item.id] = item.attributes; - return acc; - }, {}); + var no = 1; json.data.forEach(function(item) { var row = ` ${no} - ${transformedIncluded.penduduk[item - .relationships.penduduk.data.id].nik || 'N/A'} - ${transformedIncluded.penduduk[item - .relationships.penduduk.data.id].keluarga?.no_kk || 'N/A'} - ${transformedIncluded.penduduk[item - .relationships.penduduk.data.id].nama || 'N/A'} + ${item.attributes.nik || 'N/A'} + ${item.attributes.kepala_keluarga || 'N/A'} + ${item.attributes.jumlah_anggota || 'N/A'} ${item.attributes.jns_bantuan || 'TIDAK TAHU'} ${item.attributes.jns_gangguan_mental || 'TIDAK TAHU'} ${item.attributes.terapi_gangguan_mental || 'TIDAK TAHU'} diff --git a/resources/views/data_pokok/jaminan_sosial/index.blade.php b/resources/views/data_pokok/jaminan_sosial/index.blade.php index 01f87127..b7ce3232 100644 --- a/resources/views/data_pokok/jaminan_sosial/index.blade.php +++ b/resources/views/data_pokok/jaminan_sosial/index.blade.php @@ -57,6 +57,7 @@
+
@@ -98,7 +99,7 @@ let transformedIncluded = {}; document.addEventListener("DOMContentLoaded", function(event) { const header = @include('layouts.components.header_bearer_api_gabungan'); - var url = new URL("{{ config('app.databaseGabunganUrl') . '/api/v1/data-presisi/jaminan-sosial' }}"); + var url = new URL("{{ config('app.databaseGabunganUrl') . '/api/v1/data-presisi/jaminan-sosial/rtm' }}"); url.searchParams.set("kode_kabupaten", "{{ session('kabupaten.kode_kabupaten') ?? '' }}"); url.searchParams.set("kode_kecamatan", "{{ session('kecamatan.kode_kecamatan') ?? '' }}"); url.searchParams.set("config_desa", "{{ session('desa.id') ?? '' }}"); @@ -118,60 +119,25 @@ data: function(row) { return { "page[size]": row.length, - "page[number]": (row.start / row.length) + 1, - 'include': 'anggota,penduduk,rtm,keluarga', - "filter[search]": row.search.value, + "page[number]": (row.start / row.length) + 1, + "sort": "id", + "filter[search]": row.search.value, + "filter[tahun]": $('#filter-tahun').val(), + "filter[status_kelengkapan]": $('#filter-status-kelengkapan').val(), }; }, dataSrc: function(json) { - - if (json.data.length > 0) { - json.recordsTotal = json.meta.pagination.total - json.recordsFiltered = json.meta.pagination.total + json.recordsTotal = json.meta?.pagination?.total || 0 + json.recordsFiltered = json.meta?.pagination?.total || 0 + if (json.data.length > 0) { data_grafik = []; - // Transform the included array into an object - transformedIncluded = json.included.reduce((acc, item) => { - if (!acc[item.type]) { - acc[item.type] = {}; - } - acc[item.type][item.id] = item.attributes; - return acc; - }, {}); - json.data.forEach(function(item, index) { data_grafik.push(item.attributes) - item.attributes.nik = transformedIncluded.penduduk[item - .relationships.penduduk.data.id].nik; - item.attributes.nama = transformedIncluded.penduduk[item - .relationships.penduduk.data.id].nama; - if (!item.attributes.jns_bantuan) { - item.attributes.jns_bantuan = 'TIDAK TAHU' - } - if (!item.attributes.jns_gangguan_mental) { - item.attributes.jns_gangguan_mental = 'TIDAK TAHU' - } - if (!item.attributes.terapi_gangguan_mental) { - item.attributes.terapi_gangguan_mental = 'TIDAK TAHU' - } - item.attributes.dtks = transformedIncluded.rtm[item - .relationships.rtm.data.id].dtks ? 'Terdaftar' : - 'Tidak Terdaftar'; - item.attributes.tgl_daftar = transformedIncluded.rtm[item - .relationships.rtm.data.id].tgl_daftar; - item.attributes.jumlah_kk = transformedIncluded.rtm[item - .relationships.rtm.data.id].jumlah_kk; - item.attributes.alamat = transformedIncluded.keluarga[item - .relationships.keluarga.data.id].alamat; - item.attributes.dusun = transformedIncluded.keluarga[item - .relationships.keluarga.data.id].wilayah?.dusun; - item.attributes.rt = transformedIncluded.keluarga[item - .relationships.keluarga.data.id].wilayah?.rt; - item.attributes.rw = transformedIncluded.keluarga[item - .relationships.keluarga.data.id].wilayah?.rw; - }) + }) grafikPie() return json.data; } + return false; }, }, @@ -183,15 +149,12 @@ className: 'text-nowrap', data: function(data) { let d = data.attributes let obj = { - 'rtm_id': data.relationships.rtm.data.id, - 'no_kartu_rumah': transformedIncluded.rtm[data.relationships.rtm - .data.id].no_kk, - 'nama_kepala_keluarga': d.nama, - 'alamat': transformedIncluded.keluarga[data.relationships - .keluarga.data.id].alamat, - 'jumlah_anggota': d.anggota_count, - 'jumlah_kk': transformedIncluded.rtm[data.relationships.rtm - .data.id].jumlah_kk, + 'rtm_id': data.id, + 'no_kartu_rumah': d.no_kk, + 'nama_kepala_keluarga': d.kepala_keluarga, + 'alamat': d.alamat, + 'jumlah_anggota': d.jumlah_anggota, + 'jumlah_kk': d.jumlah_kk, } let jsonData = encodeURIComponent(JSON.stringify(obj)); const _url = @@ -212,18 +175,15 @@ className: 'text-nowrap', }, { data: "attributes.nik", - name: "penduduk.nik", + orderable: false, }, { - data: "attributes.nama", - name: "penduduk.nama", - orderable: false + data: "attributes.kepala_keluarga", + orderable: false, }, { - data: "attributes.anggota_count", - name: null, + data: "attributes.jumlah_anggota", orderable: false, - searchable: false }, { data: "attributes.jns_bantuan", @@ -261,7 +221,7 @@ className: 'text-nowrap', } }); - $('#filter-tahun').on('change', function() { + $('#filter-tahun, #filter-status-kelengkapan').on('change', function() { jaminanSosial.ajax.reload(); data_grafik = []; grafikPie(); diff --git a/resources/views/presisi/statistik/pangan.blade.php b/resources/views/presisi/statistik/pangan.blade.php index db8c577e..0f604936 100644 --- a/resources/views/presisi/statistik/pangan.blade.php +++ b/resources/views/presisi/statistik/pangan.blade.php @@ -5,463 +5,461 @@ @section('title', 'Data Statistik') @section('content_header') -

Data Statistik {{ $judul }}

+

Data Statistik {{ $judul }}

@stop @section('content') - @include('partials.breadcrumbs') -
-
-
-
-

Statistik {{ $judul }}

-
- -
-
-
- +@include('partials.breadcrumbs') +
+
+
+
+

Statistik {{ $judul }}

+
+
+
+ +
-
-
-
-
-

+
+
+
+
+
+

+
+
+ +
+
-
-
- - - -
- -
- -
-
- -
-
- -
+
+ +
+
+
-
-
-
-
-
- -
-
+
+
+
+
+
+
+
+
+
-
-
- -
-
+
+
+
+
+
-
- - - - - - - - - -
NoNilaiJumlah
-
+
+ + + + + + + + + +
NoNilaiJumlah
+
@endsection @section('js') - - @include('statistik.chart') - +@include('statistik.chart') + -@endsection -@push('css') - -@endpush + // Event listener for year filter change + $('#filter-tahun').on('change', function() { + statistik.ajax.reload(); + }); + $(document).on('click', '#reset', function(e) { + e.preventDefault(); + statistik.ajax.reload(); + }); + }); + +@endsection +@push('css') + +@endpush \ No newline at end of file diff --git a/resources/views/presisi/statistik/senibudaya.blade.php b/resources/views/presisi/statistik/senibudaya.blade.php index 50e0e0f5..44506d8a 100644 --- a/resources/views/presisi/statistik/senibudaya.blade.php +++ b/resources/views/presisi/statistik/senibudaya.blade.php @@ -389,7 +389,7 @@ className: 'dt-body-right', urlDetail.searchParams.set('nama', nilai); urlDetail.searchParams.set('tipe', $('.pilih-kategori > a.active').text().trim()); urlDetail.searchParams.set('chart-view', true); - + return `${nilai}` } diff --git a/routes/web.php b/routes/web.php index 78851184..013484a9 100644 --- a/routes/web.php +++ b/routes/web.php @@ -316,6 +316,7 @@ Route::prefix('pangan')->group(function () { Route::get('/', [App\Http\Controllers\DataPresisiPanganController::class, 'index'])->name('data-pokok.data-presisi-pangan.index'); Route::get('/detail', [App\Http\Controllers\DataPresisiPanganController::class, 'detail'])->name('data-pokok.data-presisi-pangan.detail'); + Route::get('detail_data', [App\Http\Controllers\DataPresisiPanganController::class, 'detailData'])->name('data-pokok.data-presisi-pangan.detail_data'); Route::get('cetak', [App\Http\Controllers\DataPresisiPanganController::class, 'cetak'])->name('data-pokok.data-presisi-pangan.cetak'); }) ->middleware(['permission:datapresisi-pangan-read']); diff --git a/tests/Feature/DataPresisiFilterTahunJavaScriptTest.php b/tests/Feature/DataPresisiFilterTahunJavaScriptTest.php index 25c6a913..f83c133d 100644 --- a/tests/Feature/DataPresisiFilterTahunJavaScriptTest.php +++ b/tests/Feature/DataPresisiFilterTahunJavaScriptTest.php @@ -34,9 +34,9 @@ public function test_filter_tahun_javascript_event_listener_exists_in_all_module $content = $response->getContent(); // Test JavaScript event listener untuk filter tahun - $hasEventListener = strpos($content, "filter-tahun').on('change'") !== false || - strpos($content, "#filter-tahun').on('change'") !== false || - strpos($content, "$('#filter-tahun').on('change'") !== false; + $hasEventListener = strpos($content, "filter-tahun, #filter-status-kelengkapan').on('change'") !== false || + strpos($content, "#filter-tahun, #filter-status-kelengkapan').on('change'") !== false || + strpos($content, "$('#filter-tahun, #filter-status-kelengkapan').on('change'") !== false; if ($hasEventListener) { $successCount++; diff --git a/tests/Feature/JaminanSosialTest.php b/tests/Feature/JaminanSosialTest.php index 61a39be2..d3ee6de0 100644 --- a/tests/Feature/JaminanSosialTest.php +++ b/tests/Feature/JaminanSosialTest.php @@ -108,7 +108,7 @@ public function test_jaminan_sosial_has_filter_tahun_functionality() $content = $response->getContent(); // Test filter tahun change event listener exists - $this->assertStringContainsString("$('#filter-tahun').on('change'", $content, 'Event listener filter tahun tidak ditemukan'); + $this->assertStringContainsString("$('#filter-tahun, #filter-status-kelengkapan').on('change'", $content, 'Event listener filter tahun tidak ditemukan'); $this->assertStringContainsString('jaminanSosial.ajax.reload()', $content, 'DataTable reload pada filter tahun tidak ditemukan'); $this->assertStringContainsString('grafikPie()', $content, 'Grafik reload pada filter tahun tidak ditemukan'); } @@ -144,8 +144,7 @@ public function test_jaminan_sosial_uses_correct_api_filters() // Test filter parameters in DataTable $this->assertStringContainsString('"page[size]"', $content, 'Filter page[size] tidak ditemukan'); - $this->assertStringContainsString('"page[number]"', $content, 'Filter page[number] tidak ditemukan'); - $this->assertStringContainsString("'include': 'anggota,penduduk,rtm,keluarga'", $content, 'Include relationships tidak ditemukan'); + $this->assertStringContainsString('"page[number]"', $content, 'Filter page[number] tidak ditemukan'); $this->assertStringContainsString('"filter[search]"', $content, 'Filter search tidak ditemukan'); } }