Fix: Convert 03PovertyMapping from submodule to regular folder
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
/* ============================================================
|
||||
config.js — Global constants, utilities, shared state
|
||||
Single-admin simplified version
|
||||
============================================================ */
|
||||
'use strict';
|
||||
|
||||
const API = {
|
||||
houses: 'api/houses/index.php',
|
||||
centers: 'api/centers/index.php',
|
||||
aid: 'api/aid/index.php',
|
||||
reports: 'api/reports/index.php',
|
||||
stats: 'api/stats/index.php',
|
||||
users: 'api/users/index.php',
|
||||
logs: 'api/logs/index.php',
|
||||
};
|
||||
|
||||
const POVERTY_COLORS = {
|
||||
sangat_miskin: '#d63230',
|
||||
miskin: '#f76707',
|
||||
rentan_miskin: '#f59e0b',
|
||||
terdata: '#0b9e73',
|
||||
};
|
||||
|
||||
const POVERTY_LABELS = {
|
||||
sangat_miskin: 'Sangat Miskin',
|
||||
miskin: 'Miskin',
|
||||
rentan_miskin: 'Rentan Miskin',
|
||||
terdata: 'Terdata',
|
||||
};
|
||||
|
||||
// Short labels for compact display
|
||||
const POVERTY_SHORT = {
|
||||
sangat_miskin: 'Sgt Miskin',
|
||||
miskin: 'Miskin',
|
||||
rentan_miskin: 'Rentan',
|
||||
terdata: 'Terdata',
|
||||
};
|
||||
|
||||
const CENTER_COLORS = {
|
||||
masjid: '#1d6fa4',
|
||||
gereja: '#7c3aed',
|
||||
klenteng: '#b45309',
|
||||
pura: '#0e7f6e',
|
||||
vihara: '#a16207',
|
||||
};
|
||||
|
||||
const CENTER_ICONS = {
|
||||
masjid: 'fa-mosque',
|
||||
gereja: 'fa-church',
|
||||
klenteng: 'fa-torii-gate',
|
||||
pura: 'fa-om',
|
||||
vihara: 'fa-dharmachakra',
|
||||
};
|
||||
|
||||
const CENTER_LABELS = {
|
||||
masjid: 'Masjid',
|
||||
gereja: 'Gereja',
|
||||
klenteng: 'Klenteng',
|
||||
pura: 'Pura',
|
||||
vihara: 'Vihara',
|
||||
};
|
||||
|
||||
const AID_LABELS = {
|
||||
sembako: 'Sembako',
|
||||
pendanaan: 'Pendanaan',
|
||||
pelatihan: 'Pelatihan',
|
||||
sembako_pendanaan: 'Sembako + Pendanaan',
|
||||
sembako_pelatihan: 'Sembako + Pelatihan',
|
||||
pendanaan_pelatihan: 'Pendanaan + Pelatihan',
|
||||
lengkap: 'Lengkap',
|
||||
};
|
||||
|
||||
const SEVERITY_COLORS = {
|
||||
kritis: '#d63230',
|
||||
berat: '#f76707',
|
||||
sedang: '#f59e0b',
|
||||
ringan: '#0b9e73',
|
||||
};
|
||||
|
||||
const State = {
|
||||
activeFilter: 'all',
|
||||
povertyFilter: '',
|
||||
aidFilter: '',
|
||||
conditionFilter: '',
|
||||
searchQuery: '',
|
||||
centers: [],
|
||||
houses: [],
|
||||
stats: null,
|
||||
};
|
||||
|
||||
function debounce(fn, delay = 300) {
|
||||
let t;
|
||||
return (...args) => { clearTimeout(t); t = setTimeout(() => fn(...args), delay); };
|
||||
}
|
||||
|
||||
function formatRp(n) {
|
||||
if (!n) return 'Rp 0';
|
||||
return 'Rp ' + Number(n).toLocaleString('id-ID');
|
||||
}
|
||||
|
||||
function formatDate(str) {
|
||||
if (!str) return '—';
|
||||
return new Date(str).toLocaleDateString('id-ID', { day:'2-digit', month:'short', year:'numeric' });
|
||||
}
|
||||
|
||||
function formatDateTime(str) {
|
||||
if (!str) return '—';
|
||||
return new Date(str).toLocaleString('id-ID', { day:'2-digit', month:'short', year:'numeric', hour:'2-digit', minute:'2-digit' });
|
||||
}
|
||||
|
||||
function truncate(str, n = 28) {
|
||||
if (!str) return '';
|
||||
return str.length > n ? str.slice(0, n) + '…' : str;
|
||||
}
|
||||
|
||||
function showToast(msg, type = 'success', duration = 2800) {
|
||||
const el = document.getElementById('toast');
|
||||
el.textContent = msg;
|
||||
el.className = 'toast ' + type;
|
||||
el.style.display = 'block';
|
||||
setTimeout(() => { el.style.display = 'none'; }, duration);
|
||||
}
|
||||
|
||||
function showLoading(show = true) {
|
||||
document.getElementById('loading').style.display = show ? 'flex' : 'none';
|
||||
}
|
||||
|
||||
function openModal(id) {
|
||||
const el = document.getElementById(id);
|
||||
if (el) { el.style.display = 'flex'; document.body.style.overflow = 'hidden'; }
|
||||
}
|
||||
function closeModal(id) {
|
||||
const el = document.getElementById(id);
|
||||
if (el) { el.style.display = 'none'; document.body.style.overflow = ''; }
|
||||
}
|
||||
|
||||
document.addEventListener('click', (e) => {
|
||||
if (e.target.classList.contains('modal-overlay')) {
|
||||
e.target.style.display = 'none';
|
||||
document.body.style.overflow = '';
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user