From af593691b2e48309a639121216e3404266ae884f Mon Sep 17 00:00:00 2001 From: MAGHFIRA IZZATI Date: Mon, 8 Jun 2026 11:20:30 +0700 Subject: [PATCH] updatee --- 01/api/add_columns.php | 28 ----- 01/api/check_db.php | 24 ---- 01/api/debug_input.php | 15 --- 01/api/fix_tables.php | 46 ------- 01/api/fix_walikota.php | 19 --- 01/api/setup_kemiskinan_ibadah.sql | 49 -------- 01/api/setup_login.php | 50 -------- 01/api/setup_users.sql | 14 --- 01/api/setup_warga.php | 27 ---- 01/api/setup_webgis.sql | 60 --------- 01/api/test_desc.php | 5 - 01/api/test_enum.php | 11 -- 01/api/update_db.sql | 38 ------ 01/api/update_kemiskinan.php | 12 +- 01/index.html | 194 ++++++++++++++++++++--------- 01/test_jalan.php | 10 -- 01/test_jalan2.php | 10 -- 17 files changed, 143 insertions(+), 469 deletions(-) delete mode 100644 01/api/add_columns.php delete mode 100644 01/api/check_db.php delete mode 100644 01/api/debug_input.php delete mode 100644 01/api/fix_tables.php delete mode 100644 01/api/fix_walikota.php delete mode 100644 01/api/setup_kemiskinan_ibadah.sql delete mode 100644 01/api/setup_login.php delete mode 100644 01/api/setup_users.sql delete mode 100644 01/api/setup_warga.php delete mode 100644 01/api/setup_webgis.sql delete mode 100644 01/api/test_desc.php delete mode 100644 01/api/test_enum.php delete mode 100644 01/api/update_db.sql delete mode 100644 01/test_jalan.php delete mode 100644 01/test_jalan2.php diff --git a/01/api/add_columns.php b/01/api/add_columns.php deleted file mode 100644 index d2af4e9..0000000 --- a/01/api/add_columns.php +++ /dev/null @@ -1,28 +0,0 @@ -query($sql); - preg_match('/ADD COLUMN (\w+)/', $sql, $m); - $colName = $m[1] ?? $sql; - if ($result) { - echo "Kolom $colName: OK\n"; - } else { - - if ($conn->errno == 1060) { - echo "Kolom $colName: Sudah ada (skip)\n"; - } else { - echo "Kolom $colName: GAGAL - " . $conn->error . "\n"; - } - } -} - -echo "\nDatabase sudah siap!\n"; -?> diff --git a/01/api/check_db.php b/01/api/check_db.php deleted file mode 100644 index 736e7bc..0000000 --- a/01/api/check_db.php +++ /dev/null @@ -1,24 +0,0 @@ -query("SHOW TABLES"); -if($res) { - while($row = $res->fetch_array()) { - echo $row[0] . "
"; - } -} else { - echo "Error showing tables: " . $conn->error; -} - -echo "
"; - -$sql = "INSERT INTO spbu (nama,no,status,lat,lng) VALUES ('Test','123','Ya','0','0')"; -if($conn->query($sql)){ - echo "Insert SPBU success: ID " . $conn->insert_id; -}else{ - echo "Insert SPBU error: " . $conn->error; -} -?> diff --git a/01/api/debug_input.php b/01/api/debug_input.php deleted file mode 100644 index 1f5123f..0000000 --- a/01/api/debug_input.php +++ /dev/null @@ -1,15 +0,0 @@ - $raw, - "json_decoded" => json_decode($raw, true), - "json_error" => json_last_error_msg(), - "request_method" => $_SERVER['REQUEST_METHOD'], - "content_type" => $_SERVER['CONTENT_TYPE'] ?? 'not set', -]); -?> diff --git a/01/api/fix_tables.php b/01/api/fix_tables.php deleted file mode 100644 index 7a23885..0000000 --- a/01/api/fix_tables.php +++ /dev/null @@ -1,46 +0,0 @@ -query($sql) === TRUE) { - echo "Tabel berhasil dibuat/diperbarui.
"; - } else { - echo "Error: " . $conn->error . "
"; - } -} -echo "Selesai!"; -?> diff --git a/01/api/fix_walikota.php b/01/api/fix_walikota.php deleted file mode 100644 index cf4db89..0000000 --- a/01/api/fix_walikota.php +++ /dev/null @@ -1,19 +0,0 @@ -query("SELECT username, nama_lengkap, role FROM users WHERE username='walikota'"); -$row = $r->fetch_assoc(); -echo "Data di DB:\n"; -print_r($row); - -// Fix: update role ke walikota jika salah -$fix = $conn->query("UPDATE users SET role='walikota' WHERE username='walikota'"); -echo "\nUpdate role: " . ($fix ? "OK (affected: ".$conn->affected_rows.")" : "GAGAL - ".$conn->error) . "\n"; - -// Cek lagi setelah fix -$r2 = $conn->query("SELECT username, nama_lengkap, role FROM users WHERE username='walikota'"); -$row2 = $r2->fetch_assoc(); -echo "\nData setelah fix:\n"; -print_r($row2); -?> diff --git a/01/api/setup_kemiskinan_ibadah.sql b/01/api/setup_kemiskinan_ibadah.sql deleted file mode 100644 index c9dcd65..0000000 --- a/01/api/setup_kemiskinan_ibadah.sql +++ /dev/null @@ -1,49 +0,0 @@ -CREATE DATABASE IF NOT EXISTS kemiskinan_ibadah - CHARACTER SET utf8mb4 - COLLATE utf8mb4_unicode_ci; - -USE kemiskinan_ibadah; - -DROP TABLE IF EXISTS rumah_ibadah; -DROP TABLE IF EXISTS kemiskinan; - -CREATE TABLE kemiskinan ( - id INT AUTO_INCREMENT PRIMARY KEY, - nama_kk VARCHAR(200) NOT NULL, - jumlah_kk INT NOT NULL DEFAULT 1, - alamat TEXT NOT NULL, - lat DECIMAL(10,7) NOT NULL, - lng DECIMAL(10,7) NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - -CREATE TABLE rumah_ibadah ( - id INT AUTO_INCREMENT PRIMARY KEY, - nama_rumah_ibadah VARCHAR(200) NOT NULL, - penanggung_jawab VARCHAR(200) NOT NULL, - alamat TEXT NOT NULL, - radius INT NOT NULL DEFAULT 500, - lat DECIMAL(10,7) NOT NULL, - lng DECIMAL(10,7) NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - -INSERT INTO kemiskinan (nama_kk, jumlah_kk, alamat, lat, lng) VALUES -('Siti Aminah', 4, 'Jl. Tanjung Raya II, Pontianak Timur', -0.0268500, 109.3611200), -('Budi Santoso', 5, 'Jl. Panglima Aim, Pontianak Timur', -0.0314200, 109.3553800), -('Rohani', 3, 'Gg. Karya Bakti, Pontianak Kota', -0.0226400, 109.3337600), -('M. Yusuf', 6, 'Jl. Kom Yos Sudarso, Pontianak Barat', -0.0149800, 109.3079200), -('Nurhayati', 2, 'Jl. Imam Bonjol, Pontianak Selatan', -0.0412200, 109.3420600), -('Hendra Saputra', 4, 'Jl. Parit H. Husin II, Pontianak Tenggara', -0.0556100, 109.3659200), -('Ramlah', 5, 'Jl. Gusti Situt Mahmud, Pontianak Utara', 0.0021400, 109.3288800), -('Agus Salim', 3, 'Jl. Sungai Raya Dalam, Pontianak Tenggara', -0.0614600, 109.3785400); - -INSERT INTO rumah_ibadah (nama_rumah_ibadah, penanggung_jawab, alamat, radius, lat, lng) VALUES -('Masjid Raya Mujahidin', 'H. Ahmad Fauzi', 'Jl. Jenderal Ahmad Yani, Pontianak', 800, -0.0446400, 109.3369800), -('Gereja Katedral Santo Yosef', 'Pastor Markus', 'Jl. Pattimura, Pontianak Kota', 650, -0.0241300, 109.3374500), -('Vihara Bodhisatva Karaniya Metta', 'Lina Wijaya', 'Jl. Sultan Muhammad, Pontianak Kota', 500, -0.0212600, 109.3413400), -('Masjid Jami Sultan Syarif Abdurrahman', 'H. Sulaiman', 'Kampung Beting, Pontianak Timur', 700, -0.0264100, 109.3567600), -('Gereja HKBP Pontianak', 'St. Daniel Simanjuntak', 'Jl. Gajah Mada, Pontianak Selatan', 550, -0.0356200, 109.3459600), -('Pura Giripati Mulawarman', 'I Wayan Sudana', 'Jl. Adi Sucipto, Pontianak Tenggara', 500, -0.0643600, 109.3774200); diff --git a/01/api/setup_login.php b/01/api/setup_login.php deleted file mode 100644 index acf9bd4..0000000 --- a/01/api/setup_login.php +++ /dev/null @@ -1,50 +0,0 @@ -query($sql_table)) { - echo "

✓ Tabel users berhasil dibuat.

"; -} else { - echo "

✗ Gagal membuat tabel users: " . $conn->error . "

"; -} - -// 2. Insert akun admin default (password: admin123) -$password_hash = password_hash('admin123', PASSWORD_BCRYPT); - -$stmt = $conn->prepare("INSERT IGNORE INTO users (username, password, nama_lengkap, role) VALUES (?, ?, ?, 'admin')"); -$username = 'admin'; -$nama = 'Administrator'; -$stmt->bind_param('sss', $username, $password_hash, $nama); - -if ($stmt->execute()) { - if ($stmt->affected_rows > 0) { - echo "

✓ Akun admin berhasil dibuat.

"; - } else { - echo "

⚠ Akun admin sudah ada (tidak diubah).

"; - } -} else { - echo "

✗ Gagal membuat akun admin: " . $stmt->error . "

"; -} - -$stmt->close(); -$conn->close(); - -echo "
"; -echo "

Kredensial Login:

"; -echo "

Username: admin

"; -echo "

Password: admin123

"; -echo "
"; -echo "

PENTING: Hapus file ini setelah setup selesai!

"; -?> diff --git a/01/api/setup_users.sql b/01/api/setup_users.sql deleted file mode 100644 index f3294c3..0000000 --- a/01/api/setup_users.sql +++ /dev/null @@ -1,14 +0,0 @@ -USE kemiskinan_ibadah; - -CREATE TABLE IF NOT EXISTS users ( - id INT AUTO_INCREMENT PRIMARY KEY, - username VARCHAR(100) NOT NULL UNIQUE, - password VARCHAR(255) NOT NULL, - nama_lengkap VARCHAR(200) NOT NULL, - role ENUM('admin','operator') NOT NULL DEFAULT 'operator', - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- Password default: admin123 (bcrypt hashed) -INSERT IGNORE INTO users (username, password, nama_lengkap, role) VALUES -('admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Administrator', 'admin'); diff --git a/01/api/setup_warga.php b/01/api/setup_warga.php deleted file mode 100644 index ac09c35..0000000 --- a/01/api/setup_warga.php +++ /dev/null @@ -1,27 +0,0 @@ -query($sql) === TRUE) { - echo "Table 'warga' created successfully\n"; -} else { - echo "Error creating table: " . $conn->error . "\n"; -} - -$conn->close(); -?> diff --git a/01/api/setup_webgis.sql b/01/api/setup_webgis.sql deleted file mode 100644 index 0575ac2..0000000 --- a/01/api/setup_webgis.sql +++ /dev/null @@ -1,60 +0,0 @@ -CREATE DATABASE IF NOT EXISTS webgis - CHARACTER SET utf8mb4 - COLLATE utf8mb4_unicode_ci; - -USE webgis; - -CREATE TABLE IF NOT EXISTS spbu ( - id INT AUTO_INCREMENT PRIMARY KEY, - nama VARCHAR(200) NOT NULL, - no VARCHAR(60) NOT NULL, - status ENUM('Ya','Tidak') NOT NULL DEFAULT 'Tidak', - lat DECIMAL(10,7) NOT NULL, - lng DECIMAL(10,7) NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - -CREATE TABLE IF NOT EXISTS jalan ( - id INT AUTO_INCREMENT PRIMARY KEY, - nama VARCHAR(200) NOT NULL, - status ENUM('Nasional','Provinsi','Kabupaten') NOT NULL DEFAULT 'Kabupaten', - panjang DECIMAL(12,2) NOT NULL DEFAULT 0, - koordinat LONGTEXT NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - -CREATE TABLE IF NOT EXISTS parsil ( - id INT AUTO_INCREMENT PRIMARY KEY, - nama VARCHAR(200) NOT NULL, - pemilik VARCHAR(200) NOT NULL, - status ENUM('SHM','HGB','Sewa','Lainnya') NOT NULL DEFAULT 'SHM', - luas DECIMAL(14,2) NOT NULL DEFAULT 0, - koordinat LONGTEXT NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - -CREATE TABLE IF NOT EXISTS kemiskinan ( - id INT AUTO_INCREMENT PRIMARY KEY, - nama_kk VARCHAR(200) NOT NULL, - jumlah_kk INT NOT NULL DEFAULT 1, - alamat TEXT NOT NULL, - lat DECIMAL(10,7) NOT NULL, - lng DECIMAL(10,7) NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - -CREATE TABLE IF NOT EXISTS masjid ( - id INT AUTO_INCREMENT PRIMARY KEY, - nama_masjid VARCHAR(200) NOT NULL, - pic_masjid VARCHAR(200) NOT NULL, - alamat_masjid TEXT NOT NULL, - radius INT NOT NULL DEFAULT 500, - lat DECIMAL(10,7) NOT NULL, - lng DECIMAL(10,7) NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/01/api/test_desc.php b/01/api/test_desc.php deleted file mode 100644 index 1631c60..0000000 --- a/01/api/test_desc.php +++ /dev/null @@ -1,5 +0,0 @@ -query('DESCRIBE jalan'); -while($row = $res->fetch_assoc()) echo json_encode($row)."\n"; -?> diff --git a/01/api/test_enum.php b/01/api/test_enum.php deleted file mode 100644 index 0f1aa06..0000000 --- a/01/api/test_enum.php +++ /dev/null @@ -1,11 +0,0 @@ -prepare("INSERT INTO jalan (nama, status, panjang, koordinat) VALUES (?, ?, ?, ?)"); -$nama = 'Test'; -$status = 'Jalan Kabupaten'; -$panjang = 10; -$koordinat = '[]'; -$stmt->bind_param("ssds", $nama, $status, $panjang, $koordinat); -$stmt->execute(); -echo $stmt->error; -?> diff --git a/01/api/update_db.sql b/01/api/update_db.sql deleted file mode 100644 index 3c8ff7f..0000000 --- a/01/api/update_db.sql +++ /dev/null @@ -1,38 +0,0 @@ -USE kemiskinan_ibadah; - --- 1. Update USERS table role ENUM -ALTER TABLE users MODIFY COLUMN role ENUM('admin', 'operator', 'walikota') NOT NULL DEFAULT 'operator'; - --- 2. Add walikota user (password: walikota123, hash generated previously or will generate) --- Let's use the hash for 'walikota123': $2y$10$w6QO8q/s28pX83JgY3WvM.Hw2N2G1aN9M0iR8L7Pq4z8i5u0N72E. (Wait, let's just create a PHP script to insert to avoid hash issues) - --- 3. Modify KEMISKINAN table -ALTER TABLE kemiskinan -ADD COLUMN tanggal_lahir DATE NULL AFTER nama_kk, -ADD COLUMN pendidikan VARCHAR(100) NULL AFTER tanggal_lahir, -ADD COLUMN riwayat_penyakit TEXT NULL AFTER pendidikan; - --- 4. Create LAPORAN_MASYARAKAT table -CREATE TABLE IF NOT EXISTS laporan_masyarakat ( - id INT AUTO_INCREMENT PRIMARY KEY, - nama_pelapor VARCHAR(150) NOT NULL, - kontak VARCHAR(50) NULL, - deskripsi_laporan TEXT NOT NULL, - lat DECIMAL(10,7) NOT NULL, - lng DECIMAL(10,7) NOT NULL, - foto VARCHAR(255) NULL, - status ENUM('menunggu', 'diproses', 'selesai') NOT NULL DEFAULT 'menunggu', - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- 5. Create HISTORI_BANTUAN table -CREATE TABLE IF NOT EXISTS histori_bantuan ( - id INT AUTO_INCREMENT PRIMARY KEY, - kemiskinan_id INT NOT NULL, - jenis_bantuan VARCHAR(150) NOT NULL, - tanggal DATE NOT NULL, - keterangan TEXT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - FOREIGN KEY (kemiskinan_id) REFERENCES kemiskinan(id) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/01/api/update_kemiskinan.php b/01/api/update_kemiskinan.php index c1c21cd..0507933 100644 --- a/01/api/update_kemiskinan.php +++ b/01/api/update_kemiskinan.php @@ -10,7 +10,6 @@ $jumlah_kk = isset($data['jumlah_kk']) ? intval($data['jumlah_kk']) : $alamat = $conn->real_escape_string($data['alamat'] ?? ''); $lat = isset($data['lat']) ? floatval($data['lat']) : 0; $lng = isset($data['lng']) ? floatval($data['lng']) : 0; -// Kolom baru $tanggal_lahir = $conn->real_escape_string($data['tanggal_lahir'] ?? ''); $pendidikan = $conn->real_escape_string($data['pendidikan'] ?? ''); $riwayat_penyakit = $conn->real_escape_string($data['riwayat_penyakit'] ?? ''); @@ -22,6 +21,7 @@ if ($id <= 0 || $nama_kk === '') { $tgl_val = !empty($tanggal_lahir) ? "'$tanggal_lahir'" : "NULL"; +// 1. Update tabel kemiskinan $sql = "UPDATE kemiskinan SET nama_kk='$nama_kk', jumlah_kk=$jumlah_kk, @@ -34,8 +34,18 @@ $sql = "UPDATE kemiskinan SET WHERE id=$id"; if ($conn->query($sql)) { + // 2. Sync data ke tabel warga (baris Kepala Keluarga) + $sql_warga = "UPDATE warga SET + nama_warga='$nama_kk', + tanggal_lahir=$tgl_val, + pendidikan='$pendidikan', + riwayat_penyakit='$riwayat_penyakit' + WHERE kemiskinan_id=$id AND hubungan_keluarga='Kepala Keluarga'"; + $conn->query($sql_warga); + echo json_encode(["status" => "success"]); } else { echo json_encode(["status" => "error", "message" => $conn->error]); } ?> + diff --git a/01/index.html b/01/index.html index a94c94b..a28fc62 100644 --- a/01/index.html +++ b/01/index.html @@ -4098,9 +4098,9 @@ map.fitBounds(bounds, { padding: [24, 24], maxZoom: 13 }); } - console.log('Layer kecamatan berhasil dimuat:', kecLayer.getLayers().length, 'fitur'); + // log removed }) - .catch(err => console.log('Admin Kecamatan Error:', err)); + .catch(err => {}); } /* ── MODE ── */ @@ -4402,19 +4402,19 @@ map.closePopup(); setMode(null); - ensureLayerVisible('jalan', jalan.id); - focusFeature('jalan', jalan.id); + ensureLayerVisible('jalan', d.id); + focusFeature('jalan', d.id); } else { - console.log(response); + // log removed alert("Gagal simpan jalan"); } }) .catch(err => { - console.log(err); + // log removed alert("Error simpan jalan"); }); @@ -4423,7 +4423,7 @@ const pts = normalizeLinePoints(d.pts); if (pts.length < 2) { - console.log('Format koordinat jalan tidak valid:', d.pts); + // log removed return; } @@ -4663,19 +4663,19 @@ } else { - console.log(response); + // log removed alert("Gagal simpan parsil"); } }) - .catch(err => console.log("Parsil Error:", err)); + .catch(err => {}); } function renderParsil(d) { const pts = normalizePolyPoints(d.pts); if (pts.length < 3) { - console.log('Format koordinat parsil tidak valid:', d.pts); + // log removed return; } @@ -4904,7 +4904,7 @@ state.featureRefs[type] = {}; if (type === 'kemiskinan') state.kkLayerRefs = {}; const list = document.getElementById('list-' + type); - list.querySelectorAll('.dcard').forEach(x => x.remove()); + if (list) list.querySelectorAll('.dcard').forEach(x => x.remove()); state[type].forEach(d => { if (type === 'spbu') { @@ -5320,7 +5320,7 @@ }); }) - .catch(err => console.log("SPBU Error:", err)); + .catch(err => {}); } @@ -5358,7 +5358,7 @@ }); }) - .catch(err => console.log("Jalan Error:", err)); + .catch(err => {}); } @@ -5397,7 +5397,7 @@ }); }) - .catch(err => console.log("Parsil Error:", err)); + .catch(err => {}); } /* ── KEMISKINAN ── */ @@ -5522,6 +5522,22 @@ +
+ + +
+
+ + +
@@ -5654,13 +5670,13 @@ renderDashboard(); if (window._tmpM) { map.closePopup(); map.removeLayer(window._tmpM); window._tmpM = null; } setMode(null); - ensureLayerVisible('jalan', jalan.id); - focusFeature('jalan', jalan.id); + ensureLayerVisible('kemiskinan', d.id); + focusFeature('kemiskinan', d.id); } else { alert("Gagal simpan: " + (response.message || 'Error')); } }) - .catch(err => { console.log(err); alert("Terjadi error"); }); + .catch(err => { alert("Terjadi error"); }); } function renderKemiskinan(d) { @@ -5762,64 +5778,114 @@ }); renderDashboard(); if (state.masjid.length) refreshType('masjid'); - }).catch(err => console.log("Kemiskinan Error:", err)); + }).catch(err => {}); } function openEditKemiskinan(id) { const d = getById('kemiskinan', id); if (!d) return; + const existing = document.getElementById('ek-overlay'); + if (existing) existing.remove(); + const pendOpts = ['', 'Tidak Sekolah', 'SD/Sederajat', 'SMP/Sederajat', 'SMA/Sederajat', 'D3/S1', 'S2/S3']; const pendSelects = pendOpts.map(v => ``).join(''); - const html = `
-

Edit KK Miskin

- - - - - - - - - - - - - - - - - - - -
`; - map.closePopup(); - L.popup({ maxWidth: 330, autoPanPaddingTopLeft: [0, 80], autoPanPaddingBottomRight: [0, 20] }).setLatLng([d.lat, d.lng]).setContent(html).openOn(map); + const curStatus = getKKStatus(id); + + const overlay = document.createElement('div'); + overlay.className = 'hb-overlay'; + overlay.id = 'ek-overlay'; + overlay.innerHTML = ` +
+
+
+
+
Edit Data KK Miskin
+
${escapeText(d.nama_kk)}
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
`; + document.body.appendChild(overlay); + // Close on backdrop click + overlay.addEventListener('click', e => { if (e.target === overlay) overlay.remove(); }); } function saveEditKemiskinan(id) { - const nama_kk = document.getElementById('e-k-nama').value.trim(); - const jumlah_kk = document.getElementById('e-k-jumlah').value.trim(); - const alamat = document.getElementById('e-k-alamat').value.trim(); - const lat = parseFloat(document.getElementById('e-k-lat').value); - const lng = parseFloat(document.getElementById('e-k-lng').value); - const status = document.getElementById('e-k-status')?.value || getKKStatus(id); - const tanggal_lahir = document.getElementById('e-k-tgl-lahir')?.value || ''; - const pendidikan = document.getElementById('e-k-pendidikan')?.value || ''; - const riwayat_penyakit = document.getElementById('e-k-riwayat')?.value.trim() || ''; + const nama_kk = document.getElementById('ek-nama')?.value.trim(); + const jumlah_kk = document.getElementById('ek-jumlah')?.value.trim(); + const alamat = document.getElementById('ek-alamat')?.value.trim(); + const lat = parseFloat(document.getElementById('ek-lat')?.value); + const lng = parseFloat(document.getElementById('ek-lng')?.value); + const status = document.getElementById('ek-status')?.value || getKKStatus(id); + const tanggal_lahir = document.getElementById('ek-tgl-lahir')?.value || ''; + const pendidikan = document.getElementById('ek-pendidikan')?.value || ''; + const riwayat_penyakit = document.getElementById('ek-riwayat')?.value.trim() || ''; if (!nama_kk || !jumlah_kk || !alamat || !Number.isFinite(lat) || !Number.isFinite(lng)) { - alert('Data belum valid'); return; + alert('Lengkapi data: Nama, Jumlah Jiwa, dan Alamat wajib diisi!'); return; } + const btn = document.querySelector('#ek-overlay .hb-submit'); + if (btn) { btn.disabled = true; btn.innerHTML = ' Menyimpan...'; } + fetch('api/update_kemiskinan.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ id, nama_kk, jumlah_kk, alamat, lat, lng, tanggal_lahir, pendidikan, riwayat_penyakit }) }).then(res => res.json()).then(resp => { - if (resp.status !== 'success') { alert('Gagal update'); return; } + if (resp.status !== 'success') { + alert('Gagal menyimpan: ' + (resp.message || 'Error')); + if (btn) { btn.disabled = false; btn.innerHTML = ' Simpan Perubahan'; } + return; + } const d = getById('kemiskinan', id); if (!d) return; d.nama_kk = nama_kk; d.jumlah_kk = parseInt(jumlah_kk); d.alamat = alamat; d.lat = lat; d.lng = lng; d.tanggal_lahir = tanggal_lahir; d.pendidikan = pendidikan; d.riwayat_penyakit = riwayat_penyakit; @@ -5827,16 +5893,20 @@ const mapStatus = getStatusMap(); mapStatus[String(id)] = status; localStorage.setItem(statusStoreKey, JSON.stringify(mapStatus)); - // Simpan status ke database fetch('api/update_status_kemiskinan.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ id: parseInt(id), status }) - }).catch(() => console.warn('Gagal simpan status ke DB')); + }).catch(() => {}); renderDashboard(); refreshType('kemiskinan'); map.closePopup(); + document.getElementById('ek-overlay')?.remove(); + showToast('✅ Data berhasil disimpan', 'success'); focusFeature('kemiskinan', id); - }).catch(() => alert('Error update data')); + }).catch(() => { + alert('Error jaringan, coba lagi'); + if (btn) { btn.disabled = false; btn.innerHTML = ' Simpan Perubahan'; } + }); } /* ── MASJID ── */ @@ -5983,7 +6053,7 @@ if (window._tmpC) { map.removeLayer(window._tmpC); window._tmpC = null; } setMode(null); } else { alert("Gagal simpan database"); } - }).catch(err => { console.log(err); alert("Terjadi error"); }); + }).catch(err => { alert("Terjadi error"); }); } function renderMasjid(d) { @@ -6046,7 +6116,7 @@ addCard('masjid', m.id, m.nama_masjid, m.pic_masjid, 'Rumah Ibadah', '#0f6250'); }); renderDashboard(); - }).catch(err => console.log("Masjid Error:", err)); + }).catch(err => {}); } function openEditMasjid(id) { diff --git a/01/test_jalan.php b/01/test_jalan.php deleted file mode 100644 index e6e781b..0000000 --- a/01/test_jalan.php +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/01/test_jalan2.php b/01/test_jalan2.php deleted file mode 100644 index 32a4ea1..0000000 --- a/01/test_jalan2.php +++ /dev/null @@ -1,10 +0,0 @@ -