document.addEventListener('DOMContentLoaded', async () => { // Init peta const map = GISMap.init('admin-map', {$mapLat}, {$mapLng}, 13); // Load data peta const data = await App.fetchJSON('{$appUrl}/admin/api/peta'); if (data) { const wargaLayer = GISMap.addWargaLayer(data.warga || []); const riLayer = GISMap.addRILayer(data.rumah_ibadah || []); const lapLayer = GISMap.addLaporanLayer(data.laporan || []); const overlays = { '๐ฅ Warga Miskin': wargaLayer, 'โช Rumah Ibadah': riLayer, '๐ Laporan Masuk': lapLayer }; L.control.layers(GISMap.layers, overlays, {position:'topright', collapsed:true}).addTo(map); GISMap.autoFitBounds(); const heat = await App.fetchJSON('{$appUrl}/dinsos/api/heatmap'); if (heat) GISMap.addHeatmap(heat); } else { GISMap.autoFitBounds(true); } // Charts โ data sudah diekstrak bersih di PHP const kec = {$jsonKec}; const kecData = {$jsonKecData}; Charts.bar('chart-kecamatan', kec, [{ label: 'Warga Miskin', data: kecData }]); const bulan = {$jsonBulan}; const bantuanData = {$jsonBantuanData}; Charts.line('chart-bantuan', bulan, [{ label: 'Bantuan Disalurkan', data: bantuanData }]); }); JS; ?>
| Kecamatan | Total | Ekstrem | Blind Spot |
|---|---|---|---|
| = e($k['nama']) ?> | = number_format((int)($k['total'] ?? 0)) ?> | = number_format((int)($k['ekstrem'] ?? 0)) ?> | = number_format((int)($k['blind_spot'] ?? 0)) ?> |