1st commit: Arsitektur WebGis tersentralisasi dan dokumentasi lengkap
This commit is contained in:
+1131
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,80 @@
|
||||
CREATE TABLE spbu_markers (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_spbu VARCHAR(100) NOT NULL,
|
||||
status_operasional ENUM('Buka 24 Jam', 'Tidak 24 Jam') NOT NULL,
|
||||
no_telp VARCHAR(20) NOT NULL,
|
||||
latitude DECIMAL(10, 8) NOT NULL,
|
||||
longitude DECIMAL(11, 8) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
CREATE TABLE jalan_polylines (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_jalan VARCHAR(100) NOT NULL,
|
||||
status_jalan ENUM('Jalan Nasional', 'Jalan Provinsi', 'Jalan Kabupaten') NOT NULL,
|
||||
jarak_meter INT NOT NULL,
|
||||
koordinat JSON NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
CREATE TABLE tanah_polygons (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_pemilik VARCHAR(100) NOT NULL,
|
||||
status_kepemilikan ENUM('SHM', 'HGB', 'HGU', 'HP') NOT NULL,
|
||||
luas_meter INT NOT NULL,
|
||||
koordinat JSON NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
ALTER TABLE spbu_markers
|
||||
ADD COLUMN alamat TEXT AFTER no_telp;
|
||||
CREATE TABLE rumah_ibadah (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(150) NOT NULL,
|
||||
jenis ENUM('Masjid', 'Gereja', 'Vihara', 'Pura', 'Klenteng') NOT NULL,
|
||||
radius_meter INT NOT NULL,
|
||||
alamat TEXT,
|
||||
latitude DOUBLE NOT NULL,
|
||||
longitude DOUBLE NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE rumah_penduduk (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_kk VARCHAR(100) NOT NULL,
|
||||
agama VARCHAR(50),
|
||||
jml_tanggungan INT DEFAULT 0,
|
||||
pengeluaran INT NOT NULL,
|
||||
pmt_lantai INT DEFAULT 0,
|
||||
pmt_dinding INT DEFAULT 0,
|
||||
pmt_sanitasi INT DEFAULT 0,
|
||||
pmt_penerangan INT DEFAULT 0,
|
||||
pmt_air INT DEFAULT 0,
|
||||
pmt_score INT NOT NULL,
|
||||
status_kemiskinan ENUM('Sangat Miskin', 'Miskin', 'Rentan Miskin', 'Tidak Miskin') NOT NULL,
|
||||
alamat TEXT,
|
||||
latitude DOUBLE NOT NULL,
|
||||
longitude DOUBLE NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE log_bantuan (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
id_penduduk INT NOT NULL,
|
||||
beras_kg INT DEFAULT 0,
|
||||
minyak_l INT DEFAULT 0,
|
||||
gula_kg INT DEFAULT 0,
|
||||
telur_kg INT DEFAULT 0,
|
||||
susu_kaleng INT DEFAULT 0,
|
||||
tunai_rp INT DEFAULT 0,
|
||||
catatan TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (id_penduduk) REFERENCES rumah_penduduk(id) ON DELETE CASCADE
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS garis_kemiskinan (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
tahun YEAR NOT NULL,
|
||||
nilai_rupiah INT NOT NULL,
|
||||
is_active BOOLEAN DEFAULT FALSE,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
INSERT INTO garis_kemiskinan (tahun, nilai_rupiah, is_active)
|
||||
VALUES (2026, 700000, TRUE);
|
||||
@@ -0,0 +1,82 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>WebGIS Pontianak V4</title>
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/leaflet.css" />
|
||||
<link rel="stylesheet" href="../assets/style.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="sidebar-container">
|
||||
<div id="sidebar-header">WebGis-Pontianak</div>
|
||||
<!-- Tab Navigasi -->
|
||||
<div class="sidebar-tabs">
|
||||
<button class="tab-btn active" onclick="switchTab('tab-kemiskinan')">Pemetaan</button>
|
||||
<button class="tab-btn" onclick="switchTab('tab-filter')">Filter Map</button>
|
||||
</div>
|
||||
<!-- TAB 1: KEMISKINAN (BARU) -->
|
||||
<div id="tab-kemiskinan" class="tab-content active">
|
||||
<div class="control-panel">
|
||||
<button class="btn-gps" onclick="lokasiSaya()">📍 Arahkan ke Lokasi Saya</button>
|
||||
<!-- Input Garis Kemiskinan -->
|
||||
<div class="add-marker-box" style="margin-bottom: 0; padding: 10px 12px;">
|
||||
<label>Batas Garis Kemiskinan (Rp):</label>
|
||||
<div style="display:flex; gap:8px; margin-top:5px;">
|
||||
<input type="number" id="input-garis-kemiskinan" placeholder="Loading..." class="modern-input">
|
||||
<button class="btn btn-save" onclick="eksekusiUpdateGaris()" style="padding:8px 12px;">Simpan</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Tombol Kelola Program Pelatihan -->
|
||||
<button class="btn btn-warning" onclick="bukaModalPelatihan()" style="margin-bottom: 10px; width: 100%; display: flex; align-items: center; justify-content: center; gap: 8px;">
|
||||
<span style="font-size: 1.2rem;">📋</span> Kelola Program Pelatihan
|
||||
</button>
|
||||
<!-- Tombol Tambah Marker Modern -->
|
||||
<div class="modern-action-box">
|
||||
<label>Mode Penambahan Data:</label>
|
||||
<select id="pilihan-marker-baru" class="modern-select">
|
||||
<option value="ibadah">🕌 Pusat Radius (Rumah Ibadah)</option>
|
||||
<option value="penduduk">🏠 Data Keluarga (Penduduk)</option>
|
||||
</select>
|
||||
<button class="btn-modern-add" id="btn-add-kemiskinan" onclick="toggleKemiskinanMode()">
|
||||
<span class="icon">+</span> Aktifkan Kursor Marker
|
||||
</button>
|
||||
</div>
|
||||
<!-- Legenda Peta -->
|
||||
<div class="map-legend">
|
||||
<h4 class="legend-title">Keterangan Marker</h4>
|
||||
<div class="legend-item"><span class="legend-color" style="background-color: var(--gold); border-radius:4px;"></span> Pusat Radius Ibadah</div>
|
||||
<div class="legend-item"><span class="legend-color" style="background-color: #3182CE;"></span> Keluarga Bernaung</div>
|
||||
<div class="legend-item"><span class="legend-color" style="background-color: #805AD5;"></span> Keluarga Luar Naungan</div>
|
||||
<div class="legend-item"><span class="legend-color" style="background-color: #E53E3E;"></span> Kondisi Darurat (Musibah)</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="kemiskinan-card-container" class="card-list-area"></div>
|
||||
</div>
|
||||
|
||||
<!-- TAB 2: FILTER & SPBU (LAMA) -->
|
||||
<div id="tab-filter" class="tab-content">
|
||||
<div id="filter-bar">
|
||||
<button class="filter-tool-btn" onclick="bukaModalFilterLayer()">⚙️</button>
|
||||
<span class="filter-label">Status SPBU:</span>
|
||||
<button class="filter-tool-btn" onclick="bukaModalFilterSPBU()">🔍</button>
|
||||
</div>
|
||||
<div id="card-container" class="card-list-area"></div>
|
||||
</div>
|
||||
|
||||
<button id="toggle-sidebar" onclick="toggleSidebar()">❮</button>
|
||||
</div>
|
||||
|
||||
<?php include '../components/modals.php'; ?>
|
||||
|
||||
<button id="btn-selesai-jalan" onclick="selesaiGambarJalan()">✓ Selesai Gambar Jalan</button>
|
||||
<button id="btn-selesai-tanah" onclick="selesaiGambarTanah()">✓ Selesai Area Tanah</button>
|
||||
|
||||
<div id="map"></div>
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/leaflet.js"></script>
|
||||
<script src="app.js?v=<?= time(); ?>"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user