const RI = (() => {
let all = [], editId = null;
const DEMO = [
{ id:1, nama:"Masjid Jami' Pontianak", jenis:'Masjid', kecamatan:'Pontianak Timur', kontak:'0561-732001', radius_meter:350, jumlah_kk:3, jumlah_penduduk:8, lat:-0.02596, lng:109.34307 },
{ id:2, nama:'Gereja Katedral Pontianak', jenis:'Gereja', kecamatan:'Pontianak Selatan', kontak:'0561-766000', radius_meter:300, jumlah_kk:2, jumlah_penduduk:5, lat:-0.03200, lng:109.33200 },
{ id:3, nama:'Vihara Bodhisattva Karaniya Metta', jenis:'Vihara', kecamatan:'Pontianak Kota', kontak:'0561-733456', radius_meter:300, jumlah_kk:2, jumlah_penduduk:4, lat:-0.02100, lng:109.33800 },
{ id:4, nama:'Klenteng Kwan Ti Miau', jenis:'Klenteng', kecamatan:'Pontianak Kota', kontak:'0561-740123', radius_meter:280, jumlah_kk:1, jumlah_penduduk:2, lat:-0.01900, lng:109.34100 },
{ id:5, nama:'Masjid Mujahidin Pontianak', jenis:'Masjid', kecamatan:'Pontianak Selatan', kontak:'0561-764567', radius_meter:400, jumlah_kk:1, jumlah_penduduk:2, lat:-0.04800, lng:109.32500 },
{ id:6, nama:'Gereja GPIB Immanuel', jenis:'Gereja', kecamatan:'Pontianak Kota', kontak:'0561-735890', radius_meter:300, jumlah_kk:1, jumlah_penduduk:1, lat:-0.02800, lng:109.34500 },
];
const JENIS_EMOJI = { Masjid:'๐', Gereja:'โช', Vihara:'๐', Pura:'๐', Klenteng:'๐ฎ', Lainnya:'๐๏ธ' };
const JENIS_COLOR = { Masjid:'#06d6a0', Gereja:'#4cc9f0', Vihara:'#ffd166', Pura:'#f97316', Klenteng:'#b48eff', Lainnya:'#6b7a99' };
async function load() {
try { all = await Api.get('/rumah-ibadah'); } catch { all = DEMO; }
render(all);
}
function render(data) {
ge('ri-grid').innerHTML = data.map(r => `
${JENIS_EMOJI[r.jenis]||'๐๏ธ'}
${r.nama}
${r.jenis} ยท ${r.kecamatan||'โ'}
${r.jumlah_kk||0}
KK Binaan
${r.jumlah_penduduk||0}
Jiwa
๐ ${r.kontak||'โ'} ยท โญ Radius ${r.radius_meter}m
${App.canEdit() ? `
` : ''}
`).join('');
}
async function showForm(id = null) {
editId = id;
ge('mri-title').textContent = id ? 'โ๏ธ Edit Rumah Ibadah' : '๐ Tambah Rumah Ibadah';
if (id) {
const r = all.find(x => x.id == id) || {};
sv('fri-nama', r.nama); sv('fri-jenis', r.jenis);
sv('fri-radius', r.radius_meter||300); sv('fri-lat', r.lat);
sv('fri-lng', r.lng); sv('fri-kec', r.kecamatan);
sv('fri-kontak', r.kontak); sv('fri-alamat', r.alamat);
} else {
['fri-nama','fri-kec','fri-kontak','fri-alamat'].forEach(i => sv(i,''));
sv('fri-radius','300'); sv('fri-lat',''); sv('fri-lng','');
}
App.showModal('modal-ri');
}
async function save() {
if (!gv('fri-nama')) { App.toast('Nama wajib diisi','error'); return; }
if (!gv('fri-lat') || !gv('fri-lng')) { App.toast('Koordinat (lat/lng) wajib diisi','error'); return; }
const body = {
nama: gv('fri-nama'), jenis: gv('fri-jenis'),
radius_meter: +gv('fri-radius')||300,
lat: +gv('fri-lat'), lng: +gv('fri-lng'),
kecamatan: gv('fri-kec'), kontak: gv('fri-kontak'), alamat: gv('fri-alamat'),
};
try {
if (editId) { await Api.put(`/rumah-ibadah/${editId}`, body); App.toast('Data diperbarui โ
','success'); }
else { await Api.post('/rumah-ibadah', body); App.toast('Rumah ibadah ditambahkan โ
','success'); }
App.closeModal('modal-ri'); load();
} catch(e) { App.toast(e.message,'error'); }
}
async function hapus(id) {
if (!confirm('Nonaktifkan rumah ibadah ini?')) return;
try { await Api.delete(`/rumah-ibadah/${id}`); App.toast('Dinonaktifkan','success'); load(); }
catch(e) { App.toast(e.message,'error'); }
}
return { load, showForm, save, hapus, getAll: () => all };
})();