Fix resident aid saving bug and implement Bantuan Darurat status
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
--green: #22c55e;
|
||||
--red: #ef4444;
|
||||
--yellow: #f59e0b;
|
||||
--purple: #a855f7;
|
||||
--glass: rgba(255,255,255,0.04);
|
||||
--glass-hover: rgba(255,255,255,0.07);
|
||||
--radius: 12px;
|
||||
@@ -167,6 +168,7 @@ html, body {
|
||||
.stat-card.green::before { background: linear-gradient(90deg, var(--green), #16a34a); }
|
||||
.stat-card.red::before { background: linear-gradient(90deg, var(--red), #b91c1c); }
|
||||
.stat-card.yellow::before { background: linear-gradient(90deg, var(--yellow), #d97706); }
|
||||
.stat-card.purple::before { background: linear-gradient(90deg, var(--purple), #7e22ce); }
|
||||
.stat-card:hover { transform: translateY(-2px); box-shadow: var(--shadow); }
|
||||
|
||||
.stat-icon { font-size: 26px; margin-bottom: 8px; }
|
||||
@@ -176,6 +178,7 @@ html, body {
|
||||
.stat-card.green .stat-value { color: var(--green); }
|
||||
.stat-card.red .stat-value { color: var(--red); }
|
||||
.stat-card.yellow .stat-value { color: var(--yellow); }
|
||||
.stat-card.purple .stat-value { color: var(--purple); }
|
||||
|
||||
/* ── CARDS ──────────────────────────────────────────────────────── */
|
||||
.card {
|
||||
@@ -227,6 +230,7 @@ html, body {
|
||||
.badge-sudah { background: rgba(34,197,94,0.15); color: var(--green); }
|
||||
.badge-belum { background: rgba(239,68,68,0.14); color: var(--red); }
|
||||
.badge-menunggu { background: rgba(245,158,11,0.15); color: var(--yellow); }
|
||||
.badge-darurat { background: rgba(168,85,247,0.15); color: var(--purple); }
|
||||
.badge-admin { background: rgba(91,127,255,0.15); color: var(--accent); }
|
||||
.badge-operator { background: rgba(34,197,94,0.12); color: var(--green); }
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
--green: #22c55e;
|
||||
--red: #ef4444;
|
||||
--yellow: #f59e0b;
|
||||
--purple: #a855f7;
|
||||
--glass: rgba(255,255,255,0.04);
|
||||
--glass-hover: rgba(255,255,255,0.07);
|
||||
--radius: 12px;
|
||||
@@ -118,6 +119,7 @@ html, body { height: 100%; overflow: hidden; font-family: 'Plus Jakarta Sans', s
|
||||
.stat-card.green .stat-num { color: var(--green); }
|
||||
.stat-card.red .stat-num { color: var(--red); }
|
||||
.stat-card.yellow .stat-num { color: var(--yellow); }
|
||||
.stat-card.purple .stat-num { color: var(--purple); }
|
||||
|
||||
/* Tabs */
|
||||
.sidebar-tabs {
|
||||
@@ -183,6 +185,7 @@ html, body { height: 100%; overflow: hidden; font-family: 'Plus Jakarta Sans', s
|
||||
.badge-belum { background: rgba(239,68,68,0.15); color: var(--red); }
|
||||
.badge-sudah { background: rgba(34,197,94,0.15); color: var(--green); }
|
||||
.badge-menunggu { background: rgba(245,158,11,0.15); color: var(--yellow); }
|
||||
.badge-darurat { background: rgba(168,85,247,0.15); color: var(--purple); }
|
||||
|
||||
/* Nearest tag */
|
||||
.nearest-tag { font-size: 9px; color: var(--accent); background: rgba(91,127,255,0.12); padding: 2px 6px; border-radius: 4px; }
|
||||
|
||||
+9
-6
@@ -55,8 +55,8 @@ const JENIS_EMOJI = {
|
||||
Pura: '🛕', Vihara: '🛕',
|
||||
Klenteng: '⛩️', Lainnya: '🙏'
|
||||
};
|
||||
const STATUS_COLOR = { sudah: '#22c55e', menunggu: '#f59e0b', belum: '#ef4444' };
|
||||
const STATUS_LABEL = { sudah: 'Sudah Dibantu', menunggu: 'Menunggu Verif.', belum: 'Belum Dibantu' };
|
||||
const STATUS_COLOR = { sudah: '#22c55e', menunggu: '#f59e0b', belum: '#ef4444', darurat: '#a855f7' };
|
||||
const STATUS_LABEL = { sudah: 'Sudah Dibantu', menunggu: 'Menunggu Verif.', belum: 'Belum Dibantu', darurat: 'Bantuan Darurat (Musibah)' };
|
||||
|
||||
// ── HELPERS ──────────────────────────────────────────────────────
|
||||
function fmtRadius(v) { v = parseInt(v); return v >= 1000 ? (v/1000).toFixed(1)+' km' : v+' m'; }
|
||||
@@ -97,7 +97,8 @@ function createMiskinIcon(status) {
|
||||
const c = STATUS_COLOR[status] || '#ef4444';
|
||||
const glow = c.replace('#','') === '22c55e'
|
||||
? 'rgba(34,197,94,0.55)' : c === '#f59e0b'
|
||||
? 'rgba(245,158,11,0.55)' : 'rgba(239,68,68,0.55)';
|
||||
? 'rgba(245,158,11,0.55)' : status === 'darurat'
|
||||
? 'rgba(168,85,247,0.55)' : 'rgba(239,68,68,0.55)';
|
||||
return L.divIcon({
|
||||
html: `<div style="background:${c};width:20px;height:20px;border-radius:50%;
|
||||
border:3px solid #fff;box-shadow:0 2px 8px ${glow};"></div>`,
|
||||
@@ -316,11 +317,13 @@ function updateStats() {
|
||||
document.getElementById('stat-miskin').textContent = allMiskin.length;
|
||||
document.getElementById('stat-sudah').textContent = allMiskin.filter(m => m.status_bantuan === 'sudah').length;
|
||||
document.getElementById('stat-belum').textContent = allMiskin.filter(m => m.status_bantuan === 'belum').length;
|
||||
const elDarurat = document.getElementById('stat-darurat');
|
||||
if (elDarurat) elDarurat.textContent = allMiskin.filter(m => m.status_bantuan === 'darurat').length;
|
||||
document.getElementById('count-ibadah').textContent = allIbadah.length;
|
||||
document.getElementById('count-miskin').textContent = allMiskin.length;
|
||||
|
||||
const totalNominal = allMiskin.reduce((acc, m) => {
|
||||
return acc + (m.status_bantuan === 'sudah' && m.nominal_bantuan ? parseFloat(m.nominal_bantuan) : 0);
|
||||
return acc + ((m.status_bantuan === 'sudah' || m.status_bantuan === 'darurat') && m.nominal_bantuan ? parseFloat(m.nominal_bantuan) : 0);
|
||||
}, 0);
|
||||
const elNominal = document.getElementById('stat-nominal');
|
||||
if (elNominal) elNominal.textContent = fmtRupiah(totalNominal);
|
||||
@@ -674,7 +677,7 @@ window.openEditMiskin = function (id) {
|
||||
|
||||
function _toggleBantuanFields() {
|
||||
const st = document.getElementById('miskin-status').value;
|
||||
const showBantuan = (st === 'sudah' || st === 'menunggu');
|
||||
const showBantuan = (st === 'sudah' || st === 'menunggu' || st === 'darurat');
|
||||
document.getElementById('bantuan-fields').style.display = showBantuan ? 'block' : 'none';
|
||||
const ketWrap = document.getElementById('keterangan-menunggu-wrap');
|
||||
if (ketWrap) ketWrap.style.display = (st === 'menunggu') ? 'block' : 'none';
|
||||
@@ -775,7 +778,7 @@ async function _saveMiskin() {
|
||||
|
||||
try {
|
||||
const url = editId ? `${BASE_URL}/api/penduduk_miskin.php?id=${editId}` : `${BASE_URL}/api/penduduk_miskin.php`;
|
||||
const resp = await fetch(url, { method: editId?'PUT':'POST', body: fd });
|
||||
const resp = await fetch(url, { method: 'POST', body: fd });
|
||||
const json = await resp.json();
|
||||
if (json.success) {
|
||||
window.closeModalMiskin();
|
||||
|
||||
Reference in New Issue
Block a user