Skip to content

Fix: detail data presisi#1077

Merged
affandii06 merged 4 commits into
rilis-devfrom
fix/detail_data_presisi
Jun 25, 2026
Merged

Fix: detail data presisi#1077
affandii06 merged 4 commits into
rilis-devfrom
fix/detail_data_presisi

Conversation

@pandigresik

@pandigresik pandigresik commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Pull Request: Fix: Perbaikan filter lokasi dan chart Data Presisi

Description

Perbaikan komprehensif pada modul Data Presisi untuk memperbaiki 3 bug utama: (1) chart hanya menampilkan data berdasarkan pagination tabel, (2) filter desa menghasilkan total data tidak akurat, dan (3) statistik detail tidak sesuai. Solusi meliputi refactor chart untuk mengambil data via API terpisah dan konsistensi pengiriman parameter filter lokasi.

Depedency

Gunakan https://github.com/OpenSID/API-Database-Gabungan/pull/439

Changes made:

  1. [Refactor]: Membuat shared partial data_pokok/data_presisi/partials/chart.blade.php untuk menghilangkan duplikasi kode chart di semua modul
  2. [Bug Fix]: Mengubah chart dari menggunakan data lokal (data_grafik) menjadi mengambil data via API statistik dengan parameter filter yang benar
  3. [Bug Fix]: Menambahkan parameter kode_kabupaten, kode_kecamatan, dan config_desa pada request AJAX DataTable di semua halaman
  4. [Refactor]: Mengkonsolidasi ekstraksi nilai session PHP menjadi variabel JavaScript yang dapat digunakan konsisten
  5. [Bug Fix]: Memastikan chart dipanggil dengan parameter filter lokasi saat inisialisasi dan saat filter berubah
  6. [Refactor]: Menghapus variabel data_grafik global dan duplikasi fungsi generateChartData, tampilChart dari setiap chart blade

Reason for change:

  • Chart terbatas pada pagination: Sebelumnya chart dibuat dari data yang sama dengan tabel (hanya 10 data default), sehingga tidak merepresentasikan data keseluruhan
  • Filter desa tidak akurat: Parameter filter lokasi tidak dikirimkan pada AJAX request DataTable, menyebabkan data tidak terfilter dengan benar (contoh: desa Berembeng 813 vs 5111 data aktual)
  • Statistik detail tidak sesuai: Klik detail pada statistik menampilkan data yang tidak sesuai karena parameter filter tidak dikirimkan
  • Duplikasi kode: Setiap modul memiliki fungsi chart yang sama, sulit dimaintain

Impact of change:

Chart Akurat: Chart sekarang mengambil data via API statistik secara terpisah dari tabel, menampilkan semua data yang difilter
Data Terfilter Benar: Total data, anggota RTM, dan statistik sesuai dengan data di SIDP
Kode Terpusat: Shared partial chart.blade.php menghilangkan duplikasi kode di 12+ file chart
Konsistensi: Semua modul (Data Presisi, Data Pokok, DTKS) menggunakan pola yang sama
Filter Konsisten: Parameter lokasi dikirimkan baik di URL, DataTable request, maupun chart API call

Related Issue

Files Modified

Data Presisi - Chart & Index (Refactor chart + filter lokasi)

  • resources/views/data_pokok/data_presisi/adat/chart.blade.php
  • resources/views/data_pokok/data_presisi/adat/index.blade.php
  • resources/views/data_pokok/data_presisi/kesehatan/chart.blade.php
  • resources/views/data_pokok/data_presisi/kesehatan/detail_data.blade.php
  • resources/views/data_pokok/data_presisi/kesehatan/index.blade.php
  • resources/views/data_pokok/data_presisi/ketenagakerjaan/chart.blade.php
  • resources/views/data_pokok/data_presisi/ketenagakerjaan/detail_data.blade.php
  • resources/views/data_pokok/data_presisi/ketenagakerjaan/index.blade.php
  • resources/views/data_pokok/data_presisi/laporan/chart.blade.php
  • resources/views/data_pokok/data_presisi/laporan/index.blade.php
  • resources/views/data_pokok/data_presisi/pangan/chart.blade.php
  • resources/views/data_pokok/data_presisi/pangan/detail_data.blade.php
  • resources/views/data_pokok/data_presisi/pangan/index.blade.php
  • resources/views/data_pokok/data_presisi/pendidikan/chart.blade.php
  • resources/views/data_pokok/data_presisi/pendidikan/detail_data.blade.php
  • resources/views/data_pokok/data_presisi/pendidikan/index.blade.php
  • resources/views/data_pokok/data_presisi/seni_budaya/chart.blade.php
  • resources/views/data_pokok/data_presisi/seni_budaya/detail_data.blade.php
  • resources/views/data_pokok/data_presisi/seni_budaya/index.blade.php

Data Presisi - Detail Data (Filter lokasi)

  • resources/views/data_pokok/data_presisi/aktivitas_keagamaan/detail_data.blade.php
  • resources/views/data_pokok/data_presisi/jaminan_sosial/detail_data.blade.php
  • resources/views/data_pokok/data_presisi/papan/detail_data.blade.php
  • resources/views/data_pokok/data_presisi/sandang/detail_data.blade.php

Data Presisi - Laporan (Filter lokasi)

  • resources/views/data_pokok/data_presisi/laporan/perdesa.blade.php

Data Pokok (Refactor chart + filter lokasi)

  • resources/views/data_pokok/agama/chart.blade.php
  • resources/views/data_pokok/agama/index.blade.php
  • resources/views/data_pokok/jaminan_sosial/chart.blade.php
  • resources/views/data_pokok/jaminan_sosial/index.blade.php
  • resources/views/data_pokok/kesehatan/chart.blade.php
  • resources/views/data_pokok/kesehatan/index.blade.php
  • resources/views/data_pokok/ketenagakerjaan/chart.blade.php
  • resources/views/data_pokok/ketenagakerjaan/index.blade.php
  • resources/views/data_pokok/pendidikan/chart.blade.php
  • resources/views/data_pokok/pendidikan/index.blade.php

DTKS (Refactor chart + filter lokasi)

  • resources/views/dtks/papan/chart.blade.php
  • resources/views/dtks/papan/index.blade.php
  • resources/views/dtks/sandang/chart.blade.php
  • resources/views/dtks/sandang/index.blade.php

New File

  • resources/views/data_pokok/data_presisi/partials/chart.blade.php (shared chart utilities)

Steps to Reproduce

Before fix (problem):

  1. Buka menu Data Presisi → salah satu modul (misal: Kesehatan)
  2. Filter berdasarkan desa tertentu (contoh: Berembeng)
  3. Perhatikan total data di tabel vs data di SIDP
  4. ❌ Total data tidak sesuai (813 vs 5111 data di SIDP)
  5. ❌ Chart hanya menampilkan data sesuai pagination (10 data default)
  6. ❌ Klik detail pada statistik menampilkan data yang tidak sesuai
  7. ❌ Hasil export juga tidak sesuai karena data tidak terfilter

After fix (solution):

  1. Buka menu Data Presisi → salah satu modul (misal: Kesehatan)
  2. Filter berdasarkan desa tertentu
  3. Perhatikan total data di tabel
  4. ✅ Total data sesuai dengan data di SIDP
  5. ✅ Chart menampilkan semua data berdasarkan filter yang dipilih (via API statistik)
  6. ✅ Klik detail pada statistik menampilkan data yang benar
  7. ✅ Hasil export sesuai dengan data yang difilter

Testing on related features:

  • Data Presisi Adat ✅
  • Data Presisi Aktivitas Keagamaan ✅
  • Data Presisi Jaminan Sosial ✅
  • Data Presisi Kesehatan ✅
  • Data Presisi Ketenagakerjaan ✅
  • Data Presisi Laporan ✅
  • Data Presisi Pangan ✅
  • Data Presisi Papan ✅
  • Data Presisi Pendidikan ✅
  • Data Presisi Sandang ✅
  • Data Presisi Seni Budaya ✅
  • Data Pokok Agama ✅
  • Data Pokok Jaminan Sosial ✅
  • Data Pokok Kesehatan ✅
  • Data Pokok Ketenagakerjaan ✅
  • Data Pokok Pendidikan ✅
  • DTKS Papan ✅
  • DTKS Sandang ✅

Checklist

Technical Details

Technical Explanation

1. Shared Chart Partial (partials/chart.blade.php)

Membuat partial terpusat yang berisi fungsi-fungsi chart yang sebelumnya diduplikasi di setiap modul:

@include('data_pokok.data_presisi.partials.chart')

Fungsi yang disediakan:

  • tampilChart(type, canvasId, chartData) - Membuat chart baru dengan Chart.js
  • generateChartData(data, key) - Mengubah data array menjadi format chart
  • randColorRGB() - Generate warna random untuk chart

2. Chart Mengambil Data via API

Sebelumnya: Chart dibuat dari data tabel yang sudah di-load (data_grafik)

// Chart hanya berisi data halaman ini (10 data)
data_grafik = [];
json.data.forEach(function(item) {
    data_grafik.push(item.attributes)
})
grafikPie()

Sesudahnya: Chart mengambil data sendiri via API statistik

function grafikPie(filters) {
    loadChartData(filters, 'barChart', 'bar', 'kategori');
}

function loadChartData(filters, canvasId, chartType, kategori) {
    var params = {
        kategori: kategori,
        'kode_kabupaten': filters.kodeKabupaten,
        'kode_kecamatan': filters.kodeKecamatan,
        'config_desa': filters.configDesa,
    };
    apiProxyGet('data-presisi/modul/statistik', params, function(json) {
        tampilChart(chartType, canvasId, data);
    });
}

3. Konsistensi Parameter Filter Lokasi

Sebelumnya: Parameter tidak dikirim di beberapa tempat

// Hanya di URL, tidak di DataTable request
url.searchParams.set("kode_kabupaten", "{{ session('kabupaten.kode_kabupaten') ?? '' }}");

Sesudahnya: Parameter dikirim di URL, DataTable request, dan chart API

const kodeKabupaten = "{{ session('kabupaten.kode_kabupaten') ?? '' }}";
// Di URL
url.searchParams.set("kode_kabupaten", kodeKabupaten);
// Di DataTable request
data: function(row) {
    return {
        "kode_kabupaten": kodeKabupaten,
        "kode_kecamatan": kodeKecamatan,
        "config_desa": configDesa,
    };
}
// Di chart call
grafikPie({ kodeKabupaten, kodeKecamatan, configDesa });

Configuration changes

Tidak ada perubahan konfigurasi.

Dependencies added

Tidak ada dependency baru. Menggunakan Chart.js yang sudah ada.

Testing

Manual Testing

  • Buka Data Presisi → Adat, filter desa, pastikan data sesuai SIDP
  • Buka Data Presisi → Kesehatan, filter desa, verifikasi chart menampilkan semua data
  • Buka Data Presisi → Ketenagakerjaan, filter desa, cek total anggota RTM
  • Buka Data Presisi → Pendidikan, filter desa, verifikasi statistik detail
  • Buka Data Presisi → Laporan, filter desa, pastikan data perdesa benar
  • Buka Data Presisi → Pangan, filter desa, cek detail data
  • Buka Data Presisi → Papan, filter desa, cek chart dan tabel
  • Buka Data Presisi → Sandang, filter desa, cek detail
  • Buka Data Presisi → Seni Budaya, filter desa, verifikasi chart
  • Buka Data Presisi → Aktivitas Keagamaan, filter desa, cek detail
  • Buka Data Presisi → Jaminan Sosial, filter desa, cek detail
  • Buka Data Pokok → Agama/Kesehatan/Ketenagakerjaan/Pendidikan, pastikan chart berfungsi
  • Buka DTKS → Papan/Sandang, pastikan chart berfungsi
  • Verifikasi chart berubah saat filter tahun/status kelengkapan berubah
  • Regression testing: pastikan fitur lain tidak terpengaruh

Browser Compatibility

  • Chrome/Edge (Chromium)
  • Firefox
  • Safari

Screenshots / Video

Before:

  • Chart hanya menampilkan 10 data (sesuai pagination tabel)
  • Total data desa Berembeng: 5111 (seharusnya 813)
  • Statistik detail tidak sesuai

After:

  • Chart menampilkan semua data berdasarkan filter
  • Total data desa Berembeng sesuai dengan SIDP
  • Statistik detail sesuai dengan yang diklik

Breaking Changes

None

Migration Guide

Not required

References


Additional notes:

Tabel Ringkasan Perubahan per Modul:

Modul Chart Index Detail API Statistik
Adat Refactor Filter - data-presisi/adat/statistik
Aktivitas Keagamaan - - Filter -
Jaminan Sosial Refactor Filter Filter data-presisi/jaminan-sosial/statistik
Kesehatan Refactor Filter Filter data-presisi/kesehatan/statistik
Ketenagakerjaan Refactor Filter Filter ketenagakerjaan/statistik
Laporan Refactor Filter - data-presisi/laporan/statistik
Pangan Refactor Filter Filter data-presisi/pangan/statistik
Papan - - Filter data-presisi/papan/statistik
Pendidikan Refactor Filter Filter pendidikan/statistik
Sandang - - Filter -
Seni Budaya Refactor Filter Filter data-presisi/seni-budaya/statistik

Catatan Penting:

  • Pastikan API statistik di backend sudah mendukung parameter kategori, kode_kabupaten, kode_kecamatan, config_desa
  • Shared partial chart.blade.php menggunakan fungsi apiProxyGet yang harus tersedia di layout
  • Setiap modul chart sekarang memanggil API sendiri, bukan dari data tabel

@pandigresik pandigresik requested a review from affandii06 June 23, 2026 23:14
@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 #1077

@affandii06 affandii06 merged commit 4b8d86c into rilis-dev Jun 25, 2026
@affandii06 affandii06 deleted the fix/detail_data_presisi branch June 25, 2026 03:35
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.

2 participants