feat: add dashboard feature with modular API endpoints and UI integration

This commit is contained in:
Syariffullah
2026-06-11 09:17:48 +07:00
parent b77d4f6869
commit db3ff299c1
13 changed files with 1054 additions and 17 deletions
+15 -3
View File
@@ -165,9 +165,13 @@
rightPanelTitle.textContent = '🏠 Penduduk Miskin';
const canManage = !!(window.currentUser && (window.currentUser.role === 'admin' || window.currentUser.role === 'pengelola'));
if (canManage) {
const isPengelola = window.currentUser.role === 'pengelola';
const addLabel = isPengelola
? '<i class="fas fa-plus"></i> Tambah <span style="font-size:10px;opacity:0.8;">(dalam radius)</span>'
: '<i class="fas fa-plus"></i> Tambah';
rightPanelActions.innerHTML = `
<button class="btn-panel-add" id="btnPanelTambahMiskin">
<i class="fas fa-plus"></i> Tambah
${addLabel}
</button>
<button class="btn-panel-import" id="btnPanelImportMiskin">
<i class="fas fa-file-import"></i> Impor
@@ -177,7 +181,10 @@
window.currentAddMode = 'miskin_click';
document.getElementById('map').style.cursor = 'crosshair';
if (window.cursorTooltip) {
window.cursorTooltip.textContent = 'Klik di peta untuk tentukan lokasi penduduk miskin';
const tipText = isPengelola
? 'Klik di dalam radius ibadah Anda untuk tambah penduduk'
: 'Klik di peta untuk tentukan lokasi penduduk miskin';
window.cursorTooltip.textContent = tipText;
}
});
@@ -232,7 +239,11 @@
}
function buildMiskinCard(d, terurus) {
const canManage = !!(window.currentUser && (window.currentUser.role === 'admin' || window.currentUser.role === 'pengelola'));
// Pengelola hanya boleh edit/hapus penduduk yang dalam radius ibadahnya
const isPengelolaOrAdmin = !!(window.currentUser && (window.currentUser.role === 'admin' || window.currentUser.role === 'pengelola'));
const canManage = isPengelolaOrAdmin && (typeof window.isInMyIbadahRadius === 'function'
? window.isInMyIbadahRadius(d.lat, d.lng)
: true);
const iconCls = terurus ? 'card-icon-miskin-in' : 'card-icon-miskin-out';
const badge = d.kategori_bantuan === 'Makan'
? '<span class="data-card-badge badge-orange">Bantuan Makan</span>'
@@ -287,6 +298,7 @@
${actionButtons}
</div>
<div class="data-card-expand">
<div class="expand-row"><span>Kepala Keluarga</span><span>${escHtml(d.nama)}</span></div>
<div class="expand-row"><span>Kategori Bantuan</span><span>${escHtml(d.kategori_bantuan)}</span></div>
<div class="expand-row"><span>Jumlah Jiwa</span><span>${d.jumlah_jiwa || '-'}</span></div>
<div class="expand-row"><span>Status</span><span>${terurus ? 'Terurus ✅' : 'Tidak Terurus ⚠️'}</span></div>