Files
d1041231029-sig-b/index.html
T
2026-06-02 12:40:37 +07:00

1556 lines
79 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Map Point Manager</title>
<!-- Leaflet CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/leaflet.min.css" />
<!-- Custom CSS -->
<link rel="stylesheet" href="css/style.css">
<!-- Chart.js for trend visualization -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.9.1/chart.min.js"></script>
<!-- jsPDF for live report preview and download -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.8.4/jspdf.plugin.autotable.min.js"></script>
</head>
<body>
<!-- Login Form (initially visible) -->
<div id="login-overlay" class="login-overlay active">
<div class="login-modal">
<div class="login-header">
<h2>🗺️ WebGIS System</h2>
<p>Sistem Informasi Geografis untuk Pengentasan Kemiskinan</p>
</div>
<form id="login-form" onsubmit="handleLogin(event)">
<div class="form-group">
<label for="login-email">Email</label>
<input type="email" id="login-email" name="email" required placeholder="admin@system.local">
</div>
<div class="form-group">
<label for="login-password">Password</label>
<input type="password" id="login-password" name="password" required placeholder="admin123">
</div>
<div id="login-error" class="login-error"></div>
<button type="submit" class="btn-primary btn-lg" id="login-btn">
Login
</button>
<p class="login-hint">Demo: admin@system.local / admin123</p>
</form>
</div>
</div>
<!-- User Info Bar -->
<div id="user-info-bar" class="user-info-bar" style="display: none;">
<div class="user-info-left">
<span id="current-user-display"></span>
<span id="current-role-display" class="role-badge"></span>
</div>
<div class="user-info-center">
<h1 class="app-title">🗺️ Simpankemis</h1>
</div>
<div class="user-info-right">
<button onclick="handleLogout()" class="btn-logout">Logout</button>
</div>
</div>
<div class="app-container">
<!-- Sidebar -->
<aside class="sidebar">
<div class="sidebar-header">
</div>
<div class="sidebar-tabs">
<button class="tab-button tab-active" onclick="switchTab('beranda', this)">
<span class="tab-icon">🏠</span>
<span class="tab-label">Beranda</span>
</button>
<button class="tab-button" onclick="switchTab('peta', this)">
<span class="tab-icon">🗺️</span>
<span class="tab-label">Peta</span>
</button>
<button class="tab-button" onclick="switchTab('managemen', this)">
<span class="tab-icon">🛠️</span>
<span class="tab-label">Managemen</span>
</button>
<button class="tab-button" onclick="switchTab('laporan', this)">
<span class="tab-icon">📊</span>
<span class="tab-label">Laporan</span>
</button>
<button class="tab-button admin-only" id="users-tab-btn" onclick="switchTab('users', this)" style="display: none;">
<span class="tab-icon">👥</span>
<span class="tab-label">Users</span>
</button>
<button class="tab-button admin-only" id="konfigurasi-tab-btn" onclick="switchTab('konfigurasi', this)" style="display: none;">
<span class="tab-icon">⚙️</span>
<span class="tab-label">Konfigurasi</span>
</button>
</div>
<!-- Beranda Tab (Home/Dashboard) -->
<div class="sidebar-content tab-content tab-active" id="beranda-tab">
<div class="dashboard-container" style="display: flex; flex-direction: column; gap: 20px;">
<!-- KPI Cards Grid -->
<div class="kpi-cards-grid">
<div class="kpi-card">
<div class="kpi-icon">👥</div>
<div class="kpi-content">
<div class="kpi-label">TOTAL PENDUDUK MISKIN</div>
<div class="kpi-value" id="beranda-total-poor">0</div>
<div class="kpi-subtitle">Jiwa</div>
<div class="kpi-trend positive">↑ Turun 1.2% dari lalu</div>
</div>
</div>
<div class="kpi-card">
<div class="kpi-icon">📈</div>
<div class="kpi-content">
<div class="kpi-label">PERSENTASE KEMISKINAN</div>
<div class="kpi-value" id="beranda-percentage">0</div>
<div class="kpi-subtitle">%</div>
<div class="kpi-trend negative">↓ -0.18 poin (Maret 2023)</div>
</div>
</div>
<div class="kpi-card">
<div class="kpi-icon">🎯</div>
<div class="kpi-content">
<div class="kpi-label">TARGET NASIONAL 2024</div>
<div class="kpi-value" id="beranda-target">7.50</div>
<div class="kpi-subtitle">%</div>
<div class="kpi-trend">Pencapaian: 82% dari target</div>
</div>
</div>
</div>
<!-- Trend Charts (Two separate visualizations) -->
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 15px;">
<!-- Chart 1: Total Population vs Total Poor People -->
<div class="trend-section" style="background: rgba(255,255,255,0.1); padding: 15px; border-radius: 8px;">
<h3 style="color: white;">Total Penduduk Miskin vs Total Populasi Indonesia</h3>
<p style="color: rgba(255,255,255,0.8); font-size: 12px; margin-bottom: 10px;">Ringkasan data saat ini</p>
<canvas id="populationChart" style="max-height: 400px; display: none;"></canvas>
<div id="populationChartPlaceholder" style="height: 350px; background: rgba(0,0,0,0.3); border-radius: 6px; display: flex; align-items: center; justify-content: center; color: rgba(255,255,255,0.7);">
Grafik sedang dimuat...
</div>
</div>
<!-- Chart 2: Poverty Percentage vs National Target -->
<div class="trend-section" style="background: rgba(255,255,255,0.1); padding: 15px; border-radius: 8px;">
<h3 style="color: white;">Persentase Kemiskinan vs Target Nasional</h3>
<p style="color: rgba(255,255,255,0.8); font-size: 12px; margin-bottom: 10px;">Ringkasan data saat ini</p>
<canvas id="percentageChart" style="max-height: 400px; display: none;"></canvas>
<div id="percentageChartPlaceholder" style="height: 350px; background: rgba(0,0,0,0.3); border-radius: 6px; display: flex; align-items: center; justify-content: center; color: rgba(255,255,255,0.7);">
Grafik sedang dimuat...
</div>
</div>
</div>
<!-- Region Data Section -->
<div class="region-data-section" style="display: grid; grid-template-columns: 1fr 1fr; gap: 15px;">
<div class="region-list" style="background: rgba(255,255,255,0.08); padding: 15px; border-radius: 8px; border: 1px solid rgba(255,255,255,0.2);">
<h3 style="color: white; margin-bottom: 10px;">5 Provinsi Teratas dengan Titik Kebutuhan Terbanyak</h3>
<div id="beranda-region-list" style="display: flex; flex-direction: column; gap: 8px; font-size: 12px;"></div>
<a href="#" class="view-all-link" style="display: block; margin-top: 10px; color: #667eea; text-decoration: none; font-size: 12px;">LIHAT SEMUA PROVINSI →</a>
</div>
<div class="map-preview" style="background: rgba(0,0,0,0.4); padding: 15px; border-radius: 8px; text-align: center; display: flex; flex-direction: column; justify-content: center; align-items: center; border: 2px dashed rgba(255,255,255,0.3);">
<h3 style="color: white; margin-bottom: 10px;">🗺️ Peta Interaktif Kemiskinan</h3>
<p style="color: rgba(255,255,255,0.7); font-size: 12px; margin-bottom: 10px;">Visualisasi spasial data terpadu...</p>
<button onclick="switchTab('peta')" class="btn-peta" style="background: #667eea; color: white; padding: 8px 16px; border: none; border-radius: 6px; cursor: pointer; font-size: 12px; font-weight: 600;">BUKA PETA</button>
</div>
</div>
</div>
</div>
<!-- Laporan Tab (Report & Download) -->
<div class="sidebar-content tab-content" id="laporan-tab">
<div class="report-shell">
<div class="report-header">
<div>
<h2>📊 Laporan Sistem Informasi Geografis</h2>
</div>
</div>
<div class="report-preview-card">
<div class="report-preview-toolbar">
<div class="report-preview-badge">Live PDF Preview</div>
<div class="report-preview-meta" id="report-preview-meta">Memuat data...</div>
</div>
<iframe id="report-preview-frame" title="PDF Preview"></iframe>
</div>
<div class="report-footer-note">
Download tersedia di kanan bawah panel preview.
<button class="report-download-fab" onclick="downloadCombinedPDF()" title="Download PDF">
📥
</button>
</div>
</div>
</div>
<!-- Peta Tab (Map) -->
<div class="sidebar-content tab-content" id="peta-tab">
<!-- Collapsible household panel -->
<div class="household-panel-wrapper" id="household-panel-wrapper">
<div class="household-panel-header">
<span>🏠 Data & Kontrol</span>
<button class="close-panel-btn" onclick="toggleHouseholdPanel()"></button>
</div>
<div class="stats-grid">
<div class="stats-card">
<div class="stat-number" id="marker-count">0</div>
<div class="stat-label">Households</div>
</div>
<div class="stats-card stats-card-compact">
<div class="stat-number" id="masjid-count">0</div>
<div class="stat-label">Masjids</div>
</div>
<div class="stats-card stats-card-compact">
<div class="stat-number" id="need-point-count">0</div>
<div class="stat-label">Needs</div>
</div>
</div>
<div class="household-panel">
<div class="legend-title">📊 Status Keluarga</div>
<div class="stats-grid household-stats-grid">
<div class="stats-card stats-card-compact">
<div class="stat-number" id="household-total-count">0</div>
<div class="stat-label">Total</div>
</div>
<div class="stats-card stats-card-compact">
<div class="stat-number" id="household-assisted-count">0</div>
<div class="stat-label">Assisted</div>
</div>
<div class="stats-card stats-card-compact">
<div class="stat-number" id="household-verified-count">0</div>
<div class="stat-label">Verified</div>
</div>
</div>
<div class="household-actions">
<button id="add-household-btn" class="btn-primary btn-household btn-compact">
<span class="btn-icon">🏠</span>
<span class="btn-text">Household</span>
</button>
<button id="add-assistance-btn" class="btn-primary btn-assistance btn-compact">
<span class="btn-icon">🎁</span>
<span class="btn-text">Bantuan</span>
</button>
<button id="add-verification-btn" class="btn-primary btn-verification btn-compact">
<span class="btn-icon"></span>
<span class="btn-text">Verifikasi</span>
</button>
<button id="compute-household-scores-btn" class="btn-primary btn-score btn-compact">
<span class="btn-icon">📊</span>
<span class="btn-text">Hitung Skor</span>
</button>
</div>
<!-- Map tool buttons: points, masjid, need-point, lines, polygons -->
<div class="map-tools" style="padding: 8px 10px; display: grid; grid-template-columns: 1fr 1fr; gap: 6px;">
<button id="add-point-btn" class="btn-secondary btn-compact">📍 Titik</button>
<button id="add-masjid-btn" class="btn-secondary btn-compact">🕌 Masjid</button>
<button id="add-need-point-btn" class="btn-secondary btn-compact">⚕️ Kebutuhan</button>
<button id="add-line-btn" class="btn-secondary btn-compact">🛣️ Jalan</button>
<button id="add-polygon-btn" class="btn-secondary btn-compact">📐 Parcel</button>
</div>
<!-- Map mode shortcut removed from sidebar; shortcuts available on the map UI -->
<div class="form-group">
<label for="household-filter-status">Filter Status</label>
<select id="household-filter-status">
<option value="">Semua</option>
<option value="unverified">Belum Verifikasi</option>
<option value="field_verified">Field Verified</option>
<option value="admin_approved">Admin Approved</option>
<option value="needs_review">Perlu Review</option>
<option value="rejected">Ditolak</option>
</select>
</div>
<button type="button" class="btn-secondary btn-compact" onclick="refreshHouseholdPanel()">
🔄 Refresh
</button>
<div class="household-list" id="households-list" style="max-height: 120px; overflow-y: auto;"></div>
<div class="household-priority-box">
<div class="legend-title">🎯 Prioritas</div>
<div class="household-priority-summary" style="font-size: 11px;">
<span>A: <strong id="priority-assisted-count">0</strong></span>
<span>VH: <strong id="priority-very-high-count">0</strong></span>
<span>H: <strong id="priority-high-count">0</strong></span>
<span>M: <strong id="priority-medium-count">0</strong></span>
<span>L: <strong id="priority-low-count">0</strong></span>
</div>
<div class="household-priority-list" id="household-priority-list" style="max-height: 80px; overflow-y: auto;"></div>
</div>
</div>
</div>
<!-- Map Container - displayed when peta tab is active -->
<div id="peta-map-container" style="display: none; width: 100%; height: 100%; position: absolute; top: 0; left: 0; z-index: 1;"></div>
<!-- Map shortcut buttons (top-right corner of the map) -->
<div id="map-shortcuts" aria-hidden="false">
<button id="shortcut-point" class="map-shortcut-btn" title="Add Point">📍</button>
<button id="shortcut-masjid" class="map-shortcut-btn" title="Add Masjid">🕌</button>
<button id="shortcut-need" class="map-shortcut-btn" title="Add Need">⚕️</button>
<button id="shortcut-line" class="map-shortcut-btn" title="Draw Line">🛣️</button>
<button id="shortcut-polygon" class="map-shortcut-btn" title="Draw Polygon">📐</button>
</div>
</div>
<!-- Dashboard Tab (Hidden - for reference) -->
<div class="sidebar-content tab-content" id="dashboard-tab" style="display: none;">
<div class="dashboard-container">
<div class="dashboard-section">
<h3 class="dashboard-title">📊 Summary Statistik Kemiskinan</h3>
<div class="dashboard-stats-grid">
<div class="dashboard-stat-card">
<div class="stat-label">Total Keluarga</div>
<div class="stat-value" id="dash-total-households">0</div>
</div>
<div class="dashboard-stat-card">
<div class="stat-label">Rata-rata Score Kemiskinan</div>
<div class="stat-value" id="dash-avg-score">0</div>
</div>
<div class="dashboard-stat-card">
<div class="stat-label">Sudah Assist</div>
<div class="stat-value" id="dash-assisted">0</div>
</div>
<div class="dashboard-stat-card">
<div class="stat-label">% Terassistansi</div>
<div class="stat-value" id="dash-assisted-pct">0%</div>
</div>
</div>
</div>
<div class="dashboard-section">
<h3 class="dashboard-title">🎯 Status Verifikasi</h3>
<div class="dashboard-status-list" id="dash-status-list"></div>
</div>
<div class="dashboard-section">
<h3 class="dashboard-title">🔺 Prioritas Intervensi</h3>
<div class="dashboard-priority-list" id="dash-priority-list"></div>
</div>
<div class="dashboard-section">
<h3 class="dashboard-title">🗺️ Statistik per Area</h3>
<div class="dashboard-area-list" id="dash-area-list"></div>
</div>
<button type="button" class="btn-secondary" onclick="refreshDashboard()" style="width: 100%;">
🔄 Refresh Dashboard
</button>
</div>
</div>
<!-- Managemen Tab (new) -->
<div class="sidebar-content tab-content" id="managemen-tab" style="display: none;">
<div class="management-panel" style="padding: 12px;">
<h3>🔧 Managemen Point Berkebutuhan</h3>
<p style="font-size:12px; color: rgba(255,255,255,0.8);">Daftar point berkebutuhan (preview). Tampilkan 10 item per halaman.</p>
<div class="management-needpoints-section" style="margin-top:12px;">
<div class="household-list-viewport" id="management-needpoint-list" style="min-height:200px;">
<!-- need point items injected here -->
</div>
<div class="management-needpoint-nav" style="margin-top:10px; display:flex; align-items:center; justify-content:space-between; gap:10px;">
<button class="carousel-arrow left" id="needpoint-prev">◀ Previous</button>
<div id="management-needpoint-pager" style="font-size:12px; color: rgba(255,255,255,0.82);"></div>
<button class="carousel-arrow right" id="needpoint-next">Next ▶</button>
</div>
</div>
<div class="management-score-preview" style="margin-top:14px;">
<div class="management-score-preview-header">
<h4>Preview Skor Prioritas Household</h4>
<button class="btn-primary" id="manage-compute-score-btn">Hitung Skor</button>
</div>
<div class="management-score-grid">
<div class="score-chip assisted">
<div class="score-chip-label">Assisted</div>
<div class="score-chip-value" id="mgmt-assisted-count">0</div>
</div>
<div class="score-chip very-high">
<div class="score-chip-label">Very High</div>
<div class="score-chip-value" id="mgmt-priority-very-high-count">0</div>
</div>
<div class="score-chip high">
<div class="score-chip-label">High</div>
<div class="score-chip-value" id="mgmt-priority-high-count">0</div>
</div>
<div class="score-chip medium">
<div class="score-chip-label">Medium</div>
<div class="score-chip-value" id="mgmt-priority-medium-count">0</div>
</div>
<div class="score-chip low">
<div class="score-chip-label">Low</div>
<div class="score-chip-value" id="mgmt-priority-low-count">0</div>
</div>
</div>
</div>
</div>
</div>
<!-- Old Navigation Tabs (Hidden) -->
<div class="sidebar-content tab-content" id="roads-tab" style="display: none;">
<div class="stats-card">
<div class="stat-number" id="line-count">0</div>
<div class="stat-label">Roads</div>
</div>
<!-- Search & Filter Panel for Roads -->
<details class="filter-group" open>
<summary class="filter-title">🔍 Search & Filter</summary>
<div class="filter-content">
<div class="form-group">
<label for="roads-search">Search by Name</label>
<input type="text" id="roads-search" placeholder="Search roads...">
</div>
<div class="form-group">
<label for="roads-date-from">Created From</label>
<input type="date" id="roads-date-from">
</div>
<div class="form-group">
<label for="roads-date-to">Created To</label>
<input type="date" id="roads-date-to">
</div>
<div class="form-group">
<label for="roads-condition">Condition Status</label>
<select id="roads-condition">
<option value="">All Conditions</option>
<option value="normal">Normal</option>
<option value="minor_damage">Minor Damage</option>
<option value="major_damage">Major Damage</option>
</select>
</div>
<div class="filter-actions">
<button class="btn-small btn-primary" onclick="applyRoadsFilter()">Apply</button>
<button class="btn-small btn-secondary" onclick="clearRoadsFilter()">Clear</button>
</div>
</div>
</details>
<button id="draw-line-btn" class="btn-primary btn-lg" onclick="enableLineDrawMode()">
<span class="btn-icon">🛣️</span>
Draw Road
</button>
<div class="color-legend">
<div class="legend-title">Road Types</div>
<div class="legend-item">
<div class="legend-color" style="background-color: #4CAF50;"></div>
<span>National (Nasional)</span>
</div>
<div class="legend-item">
<div class="legend-color" style="background-color: #2196F3;"></div>
<span>Provincial (Provinsi)</span>
</div>
<div class="legend-item">
<div class="legend-color" style="background-color: #FF9800;"></div>
<span>District (Kabupaten)</span>
</div>
</div>
<div class="instructions-box">
<h3>How to Draw Roads</h3>
<div class="instructions-list">
<div class="instruction-item">
<span class="instruction-num">1</span>
<span>Click "Draw Road" button</span>
</div>
<div class="instruction-item">
<span class="instruction-num">2</span>
<span>Click map points to draw the road</span>
</div>
<div class="instruction-item">
<span class="instruction-num">3</span>
<span>Double-click to finish or click Finish button</span>
</div>
<div class="instruction-item">
<span class="instruction-num">4</span>
<span>Select road type and save</span>
</div>
</div>
</div>
<div class="info-box">
<h3>💡 Length Auto-Calculated</h3>
<p>Road length is automatically calculated based on the points you draw. No manual input needed!</p>
</div>
</div>
<!-- Parcels Tab (Hidden) -->
<div class="sidebar-content tab-content" id="parcels-tab" style="display: none;">
<div class="stats-card">
<div class="stat-number" id="polygon-count">0</div>
<div class="stat-label">Parcels</div>
</div>
<!-- Search & Filter Panel for Parcels -->
<details class="filter-group" open>
<summary class="filter-title">🔍 Search & Filter</summary>
<div class="filter-content">
<div class="form-group">
<label for="parcels-search">Search by Name</label>
<input type="text" id="parcels-search" placeholder="Search parcels...">
</div>
<div class="form-group">
<label for="parcels-date-from">Created From</label>
<input type="date" id="parcels-date-from">
</div>
<div class="form-group">
<label for="parcels-date-to">Created To</label>
<input type="date" id="parcels-date-to">
</div>
<div class="form-group">
<label for="parcels-certificate">Certificate Type</label>
<select id="parcels-certificate">
<option value="">All Types</option>
<option value="SHM">SHM (Hak Milik)</option>
<option value="HGB">HGB (Hak Guna Bangunan)</option>
<option value="HGU">HGU (Hak Guna Usaha)</option>
<option value="HP">HP (Hak Pakai)</option>
</select>
</div>
<div class="filter-actions">
<button class="btn-small btn-primary" onclick="applyParcelsFilter()">Apply</button>
<button class="btn-small btn-secondary" onclick="clearParcelsFilter()">Clear</button>
</div>
</div>
</details>
<button id="draw-polygon-btn" class="btn-primary btn-lg" onclick="enablePolygonDrawMode()">
<span class="btn-icon">🏞️</span>
Draw Parcel
</button>
<div class="color-legend">
<div class="legend-title">Certificate Types</div>
<div class="legend-item">
<div class="legend-color" style="background-color: #4CAF50;"></div>
<span>SHM (Hak Milik)</span>
</div>
<div class="legend-item">
<div class="legend-color" style="background-color: #2196F3;"></div>
<span>HGB (Hak Guna Bangunan)</span>
</div>
<div class="legend-item">
<div class="legend-color" style="background-color: #FF9800;"></div>
<span>HGU (Hak Guna Usaha)</span>
</div>
<div class="legend-item">
<div class="legend-color" style="background-color: #9C27B0;"></div>
<span>HP (Hak Pakai)</span>
</div>
</div>
<div class="instructions-box">
<h3>How to Draw Parcels</h3>
<div class="instructions-list">
<div class="instruction-item">
<span class="instruction-num">1</span>
<span>Click "Draw Parcel" button</span>
</div>
<div class="instruction-item">
<span class="instruction-num">2</span>
<span>Click map points to draw parcel boundary</span>
</div>
<div class="instruction-item">
<span class="instruction-num">3</span>
<span>Right-click to finish or click Finish button</span>
</div>
<div class="instruction-item">
<span class="instruction-num">4</span>
<span>Select certificate type and save</span>
</div>
</div>
</div>
<div class="info-box">
<h3>💡 Area Auto-Calculated</h3>
<p>Parcel area is automatically calculated based on the boundary you draw. No manual input needed!</p>
</div>
</div>
<!-- Pontianak Choropleth Map Tab -->
<div class="sidebar-content tab-content" id="pontianak-tab">
<div class="stats-card">
<div class="stat-label">Pontianak Choropleth Map</div>
</div>
<!-- Layer Selector -->
<div class="layer-selector">
<div class="layer-title">📊 Data Layers</div>
<div class="layer-options">
<!-- Data Visualization Layers -->
<div class="layer-group-title">Data Visualization</div>
<label class="layer-option">
<input type="checkbox" value="population" onchange="toggleChoroplethLayer('population')">
Population Density
</label>
<label class="layer-option">
<input type="checkbox" value="road_density" onchange="toggleChoroplethLayer('road_density')">
Road Network Density
</label>
<label class="layer-option">
<input type="checkbox" value="damaged_roads_density" onchange="toggleChoroplethLayer('damaged_roads_density')">
Damaged Roads Density
</label>
<!-- Reference Layers -->
<div class="layer-group-title">Reference Layers</div>
<label class="layer-option">
<input type="checkbox" value="city_boundary" onchange="toggleChoroplethLayer('city_boundary')">
🏙️ City Boundary
</label>
</div>
</div>
<!-- Legend -->
<div class="choropleth-legend" id="choropleth-legend">
<!-- Dynamically populated -->
</div>
<!-- Export Button -->
<button class="btn-primary btn-lg" onclick="exportChoroplethGeoJSON()">
<span class="btn-icon">📥</span>
Export GeoJSON
</button>
<div class="info-box">
<h3>💡 About This Map</h3>
<p>Interactive choropleth visualization of Pontianak administrative areas with multiple data layers including population density, road network intensity, and damaged roads distribution.</p>
</div>
</div>
<!-- User Management Tab (Admin Only) -->
<div class="sidebar-content tab-content" id="users-tab">
<div class="admin-panel users-panel-shell">
<div class="users-hero">
<div class="users-hero-copy">
<div class="users-kicker">Admin Center</div>
<h3 class="dashboard-title">👥 Manajemen Pengguna</h3>
<p class="users-hero-text">Kelola akun petugas, pimpinan, dan admin dengan tampilan yang lebih rapi dan cepat dibaca.</p>
</div>
<div class="users-hero-badges">
<div class="users-mini-stat">
<span class="users-mini-stat-label">Aktif</span>
<strong id="users-active-count">0</strong>
</div>
<div class="users-mini-stat">
<span class="users-mini-stat-label">Nonaktif</span>
<strong id="users-inactive-count">0</strong>
</div>
</div>
</div>
<div class="users-section-card">
<div class="users-section-header">
<h4>Tambah Pengguna</h4>
<span class="users-section-note">Akun baru akan langsung muncul di daftar bawah.</span>
</div>
<div class="users-form-grid">
<div class="form-group">
<label for="new-user-username">Username</label>
<input type="text" id="new-user-username" placeholder="Masukkan username">
</div>
<div class="form-group">
<label for="new-user-email">Email</label>
<input type="email" id="new-user-email" placeholder="user@example.com">
</div>
<div class="form-group">
<label for="new-user-password">Password Awal</label>
<input type="password" id="new-user-password" placeholder="Minimal 6 karakter">
</div>
<div class="form-group">
<label for="new-user-role">Peran</label>
<select id="new-user-role">
<option value="Petugas">Petugas Data</option>
<option value="Pimpinan">Pimpinan</option>
<option value="Admin">Admin</option>
</select>
</div>
</div>
<button type="button" class="btn-primary users-create-btn" onclick="createNewUser()">
Buat Pengguna Baru
</button>
<div id="user-creation-result" class="users-result" style="display: none;"></div>
</div>
<div class="users-section-card users-list-card">
<div class="users-section-header">
<h4>Daftar Pengguna</h4>
<button type="button" class="btn-secondary users-refresh-btn" onclick="loadUsersList()">
🔄 Refresh Daftar
</button>
</div>
<div class="users-list" id="users-list"></div>
</div>
</div>
</div>
<!-- Configuration Tab (Admin Only) -->
<div class="sidebar-content tab-content" id="konfigurasi-tab">
<div class="admin-panel">
<h3 class="dashboard-title">⚙️ Konfigurasi</h3>
<div class="form-group">
<label for="target-nasional-input">Target Nasional (%)</label>
<input type="number" id="target-nasional-input" min="0" max="100" step="0.01" placeholder="Masukkan target nasional">
</div>
<div class="form-group">
<label for="population-reference-input">Total Populasi Indonesia</label>
<input type="number" id="population-reference-input" min="1" step="1" placeholder="288315899">
</div>
<div class="form-group">
<label>Referensi Populasi Indonesia</label>
<input type="text" value="288.315.899 jiwa" readonly>
</div>
<button type="button" class="btn-primary" id="save-configuration-btn" style="width: 100%;">
💾 Simpan Konfigurasi
</button>
<div id="configuration-result" style="display: none; margin-top: 10px; padding: 10px; border-radius: 4px;"></div>
<hr style="border:0; border-top:1px solid rgba(0,0,0,0.06); margin:12px 0;">
<div class="form-group">
<label for="rendering-mode-select">Rendering Mode</label>
<select id="rendering-mode-select">
<option value="auto">Auto (recommended)</option>
<option value="high">High (show more markers)</option>
<option value="medium">Medium</option>
<option value="low">Low (canvas-only)</option>
</select>
<p id="rendering-mode-hint" style="font-size:12px; color: rgba(0,0,0,0.6); margin-top:6px;">Mode akan mempengaruhi bagaimana titik berkebutuhan dirender pada peta.</p>
</div>
<div class="form-group" style="display:flex; gap:8px;">
<button class="btn-secondary" id="refresh-needpoints-btn">Refresh Need Points</button>
<button class="btn-secondary" id="export-needpoints-btn" onclick="downloadGeojson()">Export GeoJSON</button>
</div>
</div>
</div>
</aside>
<!-- Main Content -->
<main class="main-content">
<div id="map"></div>
</main>
</div>
<!-- Add Point Modal -->
<div id="point-modal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h2 id="modal-title">Add New Point</h2>
<span class="close">&times;</span>
</div>
<form id="point-form">
<div class="form-group">
<label for="point-name">Point/Building Name *</label>
<input type="text" id="point-name" name="name" required
placeholder="e.g., Coffee Shop, Hospital, Restaurant" autofocus>
</div>
<div class="form-group">
<label for="point-nomor-spbu">Nomor SPBU</label>
<input type="text" id="point-nomor-spbu" name="nomor_spbu"
placeholder="e.g., 34.56.100 or Station ID" >
</div>
<div class="form-row">
<div class="form-group">
<label for="point-latitude">Latitude *</label>
<input type="number" id="point-latitude" name="latitude" required
step="any" placeholder="e.g., 37.7749" readonly-display>
</div>
<div class="form-group">
<label for="point-longitude">Longitude *</label>
<input type="number" id="point-longitude" name="longitude" required
step="any" placeholder="e.g., -122.4194" readonly-display>
</div>
</div>
<div class="form-group checkbox-group">
<label class="checkbox-label" for="point-24hours">
<input type="checkbox" id="point-24hours" name="open_24_hours">
<span>Open 24 Hours</span>
</label>
</div>
<div class="form-info" id="form-info"></div>
<div class="form-actions">
<button type="button" class="btn-secondary" onclick="closePointModal()">Cancel</button>
<button type="submit" class="btn-primary">Save Point</button>
</div>
</form>
</div>
</div>
<!-- Edit Point Modal -->
<div id="edit-modal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h2 id="edit-modal-title">Edit Point</h2>
<span class="close" onclick="closeEditModal()">&times;</span>
</div>
<form id="edit-form">
<div class="form-group">
<label for="edit-name">Point/Building Name *</label>
<input type="text" id="edit-name" name="name" required
placeholder="e.g., Coffee Shop, Hospital, Restaurant">
</div>
<div class="form-group">
<label for="edit-nomor-spbu">Nomor SPBU</label>
<input type="text" id="edit-nomor-spbu" name="nomor_spbu"
placeholder="e.g., 34.56.100 or Station ID" >
</div>
<div class="form-row">
<div class="form-group">
<label for="edit-latitude">Latitude *</label>
<input type="number" id="edit-latitude" name="latitude" required
step="any" placeholder="e.g., 37.7749">
</div>
<div class="form-group">
<label for="edit-longitude">Longitude *</label>
<input type="number" id="edit-longitude" name="longitude" required
step="any" placeholder="e.g., -122.4194">
</div>
</div>
<div class="form-group checkbox-group">
<label class="checkbox-label" for="edit-24hours">
<input type="checkbox" id="edit-24hours" name="open_24_hours">
<span>Open 24 Hours</span>
</label>
</div>
<div class="form-actions">
<button type="button" class="btn-secondary" onclick="closeEditModal()">Cancel</button>
<button type="submit" class="btn-primary">Save Changes</button>
</div>
</form>
</div>
</div>
<!-- Create Masjid Modal -->
<div id="masjid-modal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h2>Create Masjid</h2>
<span class="close" onclick="closeMasjidModal()">&times;</span>
</div>
<form id="masjid-form">
<div class="form-group">
<label for="masjid-name">Masjid Name *</label>
<input type="text" id="masjid-name" required placeholder="e.g., Masjid Al-Ikhlas">
</div>
<div class="form-row">
<div class="form-group">
<label for="masjid-latitude">Latitude *</label>
<input type="number" id="masjid-latitude" required step="any" placeholder="e.g., -0.0263">
</div>
<div class="form-group">
<label for="masjid-longitude">Longitude *</label>
<input type="number" id="masjid-longitude" required step="any" placeholder="e.g., 109.3425">
</div>
</div>
<div class="form-group">
<label for="masjid-radius">Radius (meters)</label>
<input type="number" id="masjid-radius" step="1" min="50" max="5000" placeholder="Default 500 if empty">
<small>Jika kosong, radius otomatis 500m.</small>
</div>
<div class="form-info" id="masjid-form-info"></div>
<div class="form-actions">
<button type="button" class="btn-secondary" onclick="closeMasjidModal()">Cancel</button>
<button type="submit" class="btn-primary">Save Masjid</button>
</div>
</form>
</div>
</div>
<!-- Edit Masjid Modal -->
<div id="edit-masjid-modal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h2>Edit Masjid</h2>
<span class="close" onclick="closeEditMasjidModal()">&times;</span>
</div>
<form id="edit-masjid-form">
<div class="form-group">
<label for="edit-masjid-name">Masjid Name *</label>
<input type="text" id="edit-masjid-name" required placeholder="e.g., Masjid Al-Ikhlas">
</div>
<div class="form-row">
<div class="form-group">
<label for="edit-masjid-latitude">Latitude *</label>
<input type="number" id="edit-masjid-latitude" required step="any">
</div>
<div class="form-group">
<label for="edit-masjid-longitude">Longitude *</label>
<input type="number" id="edit-masjid-longitude" required step="any">
</div>
</div>
<div class="form-group">
<label for="edit-masjid-radius">Radius (meters)</label>
<input type="number" id="edit-masjid-radius" step="1" min="50" max="5000" placeholder="Default 500 if empty">
</div>
<div class="form-actions">
<button type="button" class="btn-secondary" onclick="closeEditMasjidModal()">Cancel</button>
<button type="submit" class="btn-primary">Save Changes</button>
</div>
</form>
</div>
</div>
<!-- Create Point Berkebutuhan Modal -->
<div id="need-point-modal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h2>Create Point Berkebutuhan</h2>
<span class="close" onclick="closeNeedPointModal()">&times;</span>
</div>
<form id="need-point-form">
<div class="form-group">
<label for="need-point-name">Point Name *</label>
<input type="text" id="need-point-name" required placeholder="e.g., Titik Kursi Roda RT 05">
</div>
<div class="form-row">
<div class="form-group">
<label for="need-point-latitude">Latitude *</label>
<input type="number" id="need-point-latitude" required step="any" placeholder="e.g., -0.0263">
</div>
<div class="form-group">
<label for="need-point-longitude">Longitude *</label>
<input type="number" id="need-point-longitude" required step="any" placeholder="e.g., 109.3425">
</div>
</div>
<div class="form-info" id="need-point-form-info"></div>
<div class="form-group">
<label for="need-point-household">Nama Rumah / Keluarga</label>
<input type="text" id="need-point-household" placeholder="Opsional - nama rumah/keluarga">
</div>
<div class="form-group">
<label for="need-point-head">Kepala Rumah</label>
<input type="text" id="need-point-head" placeholder="Opsional - nama kepala keluarga">
</div>
<div class="form-group">
<label for="need-point-economic">Keadaan Ekonomi</label>
<select id="need-point-economic">
<option value="sangat_miskin">Sangat Miskin</option>
<option value="miskin">Miskin</option>
<option value="rentan">Rentan</option>
<option value="cukup">Cukup</option>
<option value="baik">Baik</option>
</select>
</div>
<div class="form-actions">
<button type="button" class="btn-secondary" onclick="closeNeedPointModal()">Cancel</button>
<button type="submit" class="btn-primary">Save Point Berkebutuhan</button>
</div>
</form>
</div>
</div>
<!-- Edit Point Berkebutuhan Modal -->
<div id="edit-need-point-modal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h2>Edit Point Berkebutuhan</h2>
<span class="close" onclick="closeEditNeedPointModal()">&times;</span>
</div>
<form id="edit-need-point-form">
<div class="form-group">
<label for="edit-need-point-name">Point Name *</label>
<input type="text" id="edit-need-point-name" required placeholder="e.g., Titik Kursi Roda RT 05">
</div>
<div class="form-row">
<div class="form-group">
<label for="edit-need-point-latitude">Latitude *</label>
<input type="number" id="edit-need-point-latitude" required step="any">
</div>
<div class="form-group">
<label for="edit-need-point-longitude">Longitude *</label>
<input type="number" id="edit-need-point-longitude" required step="any">
</div>
</div>
<div class="form-group">
<label for="edit-need-point-masjid">Masjid Parent (Auto)</label>
<input type="text" id="edit-need-point-masjid" readonly>
<small>Parent akan ditentukan otomatis ke masjid terdekat yang mencakup titik.</small>
</div>
<div class="form-group">
<label for="edit-need-point-household">Nama Rumah / Keluarga</label>
<input type="text" id="edit-need-point-household" placeholder="Nama rumah/keluarga">
</div>
<div class="form-group">
<label for="edit-need-point-head">Kepala Rumah</label>
<input type="text" id="edit-need-point-head" placeholder="Nama kepala keluarga">
</div>
<div class="form-group">
<label for="edit-need-point-economic">Keadaan Ekonomi</label>
<select id="edit-need-point-economic">
<option value="sangat_miskin">Sangat Miskin</option>
<option value="miskin">Miskin</option>
<option value="rentan">Rentan</option>
<option value="cukup">Cukup</option>
<option value="baik">Baik</option>
</select>
</div>
<div class="form-actions">
<button type="button" class="btn-secondary" onclick="closeEditNeedPointModal()">Cancel</button>
<button type="submit" class="btn-primary">Save Changes</button>
</div>
</form>
</div>
</div>
<!-- Create Household Modal -->
<div id="household-modal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h2>Tambah Household</h2>
<span class="close" onclick="closeHouseholdModal()">&times;</span>
</div>
<form id="household-form">
<div class="form-group">
<label for="household-code">Kode Household (Opsional)</label>
<input type="text" id="household-code" placeholder="Kosongkan untuk auto-generate">
</div>
<div class="form-group">
<label for="household-head-name">Nama Kepala Keluarga *</label>
<input type="text" id="household-head-name" required placeholder="e.g., Budi Santoso">
</div>
<div class="form-group">
<label for="household-nik">NIK (Opsional, akan di-hash)</label>
<input type="text" id="household-nik" placeholder="16 digit NIK">
</div>
<div class="form-row">
<div class="form-group">
<label for="household-latitude">Latitude *</label>
<input type="number" id="household-latitude" required step="any" placeholder="e.g., -0.0263">
</div>
<div class="form-group">
<label for="household-longitude">Longitude *</label>
<input type="number" id="household-longitude" required step="any" placeholder="e.g., 109.3425">
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="household-monthly-income">Pendapatan Bulanan (Rp)</label>
<input type="number" id="household-monthly-income" min="0" step="1000" placeholder="e.g., 850000">
</div>
<div class="form-group">
<label for="household-dependents-count">Jumlah Tanggungan</label>
<input type="number" id="household-dependents-count" min="0" max="50" step="1" placeholder="e.g., 3">
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="household-housing-score">Skor Kondisi Hunian (1-5)</label>
<select id="household-housing-score">
<option value="1">1 - Sangat Buruk</option>
<option value="2">2 - Buruk</option>
<option value="3" selected>3 - Sedang</option>
<option value="4">4 - Baik</option>
<option value="5">5 - Sangat Baik</option>
</select>
</div>
<div class="form-group">
<label for="household-employment-status">Status Pekerjaan</label>
<select id="household-employment-status">
<option value="unknown" selected>Unknown</option>
<option value="formal">Formal</option>
<option value="informal">Informal</option>
<option value="unemployed">Unemployed</option>
<option value="daily_worker">Daily Worker</option>
<option value="micro_business">Micro Business</option>
<option value="retired">Retired</option>
</select>
</div>
</div>
<div class="form-group">
<label for="household-verification-status">Verification Status</label>
<select id="household-verification-status">
<option value="unverified" selected>Unverified</option>
<option value="field_verified">Field Verified</option>
<option value="admin_approved">Admin Approved</option>
<option value="needs_review">Needs Review</option>
<option value="rejected">Rejected</option>
</select>
</div>
<div class="form-group">
<label for="household-vulnerability-notes">Catatan Kerentanan</label>
<textarea id="household-vulnerability-notes" rows="3" placeholder="Catatan kondisi khusus household"></textarea>
</div>
<div class="form-actions">
<button type="button" class="btn-secondary" onclick="closeHouseholdModal()">Cancel</button>
<button type="submit" class="btn-primary">Simpan Household</button>
</div>
</form>
</div>
</div>
<!-- Create Assistance Distribution Modal -->
<div id="assistance-modal" class="modal">
<div class="modal-content modal-content-bantuan modal-content-wide">
<div class="modal-header bantuan-modal-header">
<div class="modal-header-copy">
<div class="modal-kicker">Distribusi bantuan</div>
<h2>Catat Bantuan</h2>
<p class="modal-subtitle">Isi data bantuan yang disalurkan ke household terverifikasi.</p>
</div>
<span class="close" onclick="closeAssistanceModal()">&times;</span>
</div>
<div class="bantuan-modal-hero">
<div class="bantuan-hero-card">
<span class="bantuan-hero-label">Household</span>
<strong id="assistance-selected-household-label">Pilih household</strong>
<small id="assistance-selected-household-meta">Data akan terisi otomatis jika tersedia.</small>
</div>
<div class="bantuan-hero-card bantuan-hero-accent">
<span class="bantuan-hero-label">Status</span>
<strong>Bantuan Terencana</strong>
<small>Gunakan data yang jelas agar distribusi mudah dilacak.</small>
</div>
</div>
<form id="assistance-form" class="bantuan-form">
<div class="form-group form-group-span-2">
<label for="assistance-household-id">Household *</label>
<select id="assistance-household-id" required>
<option value="">Pilih household...</option>
</select>
</div>
<div class="form-group">
<label for="assistance-type">Jenis Bantuan *</label>
<select id="assistance-type" required>
<option value="pangan">Pangan</option>
<option value="tunai">Tunai</option>
<option value="kesehatan">Kesehatan</option>
<option value="pendidikan">Pendidikan</option>
<option value="usaha_mikro">Usaha Mikro</option>
<option value="lainnya">Lainnya</option>
</select>
</div>
<div class="form-group">
<label for="assistance-value">Nilai Bantuan (Rp)</label>
<input type="number" id="assistance-value" min="0" step="1000" placeholder="e.g., 250000">
</div>
<div class="form-group">
<label for="assistance-frequency">Frekuensi</label>
<select id="assistance-frequency">
<option value="sekali">Sekali</option>
<option value="mingguan">Mingguan</option>
<option value="bulanan">Bulanan</option>
<option value="triwulanan">Triwulanan</option>
<option value="tahunan">Tahunan</option>
<option value="insidental">Insidental</option>
</select>
</div>
<div class="form-group">
<label for="assistance-date">Tanggal Distribusi *</label>
<input type="date" id="assistance-date" required>
</div>
<div class="form-group">
<label for="assistance-delivery-status">Status Distribusi</label>
<select id="assistance-delivery-status">
<option value="pending">Pending</option>
<option value="delivered">Delivered</option>
<option value="failed">Failed</option>
</select>
</div>
<div class="form-group">
<label for="assistance-delivered-by">Disalurkan Oleh</label>
<input type="text" id="assistance-delivered-by" placeholder="Nama petugas/lembaga">
</div>
<div class="form-group form-group-span-2">
<label for="assistance-notes">Catatan</label>
<textarea id="assistance-notes" rows="3" placeholder="Catatan distribusi"></textarea>
</div>
<div class="form-actions form-actions-bantuan form-group-span-2">
<button type="button" class="btn-secondary" onclick="closeAssistanceModal()">Cancel</button>
<button type="submit" class="btn-primary">Simpan Bantuan</button>
</div>
</form>
</div>
</div>
<!-- Bantuan Manage Modal (specific to a need point) -->
<div id="bantuan-manage-modal" class="modal">
<div class="modal-content modal-content-bantuan modal-content-manage">
<div class="modal-header bantuan-modal-header">
<div class="modal-header-copy">
<div class="modal-kicker">Kelola bantuan</div>
<h2>Rencana Distribusi</h2>
<p class="modal-subtitle">Ikuti alur singkat untuk memastikan bantuan tercatat rapi.</p>
</div>
<span class="close" onclick="closeBantuanManageModal()">&times;</span>
</div>
<div class="bantuan-point-banner">
<span class="bantuan-point-label">Point</span>
<span class="bantuan-point-title">-</span>
</div>
<div class="bantuan-instructions">
<!-- instructions injected by JS -->
</div>
<div class="bantuan-callout">
Pastikan household ini sudah diverifikasi sebelum bantuan dicatat.
</div>
<div class="modal-actions-split">
<button class="btn-secondary" onclick="closeBantuanManageModal()">Tutup</button>
<button class="btn-primary bantuan-open-assistance">Catat Bantuan &raquo;</button>
</div>
</div>
</div>
<!-- Create Verification Log Modal -->
<div id="verification-modal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h2>Catat Verifikasi</h2>
<span class="close" onclick="closeVerificationModal()">&times;</span>
</div>
<form id="verification-form">
<div class="form-group">
<label for="verification-household-id">Household *</label>
<select id="verification-household-id" required>
<option value="">Pilih household...</option>
</select>
</div>
<div class="form-row">
<div class="form-group">
<label for="verification-status">Status Verifikasi *</label>
<select id="verification-status" required>
<option value="field_verified">Field Verified</option>
<option value="admin_approved">Admin Approved</option>
<option value="needs_review">Needs Review</option>
<option value="rejected">Rejected</option>
</select>
</div>
<div class="form-group">
<label for="verification-verifier-role">Peran Verifikator</label>
<input type="text" id="verification-verifier-role" placeholder="e.g., field_operator">
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="verification-verifier-name">Nama Verifikator *</label>
<input type="text" id="verification-verifier-name" required placeholder="Nama petugas verifikasi">
</div>
<div class="form-group">
<label for="verification-evidence-count">Jumlah Foto Bukti</label>
<input type="number" id="verification-evidence-count" min="0" max="100" step="1" value="0">
</div>
</div>
<div class="form-group">
<label for="verification-confidence-score">Skor Kepercayaan Data (0-1)</label>
<input type="number" id="verification-confidence-score" min="0" max="1" step="0.01" placeholder="e.g., 0.85">
</div>
<div class="form-group">
<label for="verification-field-note">Catatan Lapangan</label>
<textarea id="verification-field-note" rows="3" placeholder="Catatan hasil verifikasi lapangan"></textarea>
</div>
<div class="form-actions">
<button type="button" class="btn-secondary" onclick="closeVerificationModal()">Cancel</button>
<button type="submit" class="btn-primary">Simpan Verifikasi</button>
</div>
</form>
</div>
</div>
<!-- Line/Road Modal -->
<div id="line-modal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h2>Create Road</h2>
<span class="close" onclick="closeLineModal()">&times;</span>
</div>
<form id="line-form" onsubmit="event.preventDefault(); submitLineForm();">
<div class="form-group">
<label for="line-name">Road Name *</label>
<input type="text" id="line-name" required placeholder="e.g., Jalan Sudirman" autofocus>
</div>
<div class="form-group">
<label for="line-road-type">Road Type *</label>
<select id="line-road-type" required>
<option value="">Select Type...</option>
<option value="Nasional">National Road (Jalan Nasional)</option>
<option value="Provinsi">Provincial Road (Jalan Provinsi)</option>
<option value="Kabupaten">District Road (Jalan Kabupaten)</option>
</select>
</div>
<div class="form-group">
<label for="line-length">Length (km) - Auto-calculated</label>
<input type="number" id="line-length" readonly placeholder="Auto-filled" step="0.01">
<small>Calculated from drawn points</small>
</div>
<div class="form-group">
<label for="line-points">Number of Points</label>
<input type="number" id="line-points" readonly placeholder="Auto-filled">
</div>
<input type="hidden" id="line-coordinates">
<input type="hidden" id="line-length-meters">
<div class="form-actions">
<button type="button" class="btn-secondary" onclick="closeLineModal()">Cancel</button>
<button type="submit" class="btn-primary">Save Road</button>
</div>
</form>
</div>
</div>
<!-- Edit Line Modal -->
<div id="edit-line-modal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h2>Edit Road</h2>
<span class="close" onclick="closeEditLineModal()">&times;</span>
</div>
<form id="edit-line-form" onsubmit="event.preventDefault(); saveLineEdit();">
<input type="hidden" id="current-editing-line-id">
<div class="form-group">
<label for="edit-line-name">Road Name *</label>
<input type="text" id="edit-line-name" required placeholder="e.g., Jalan Sudirman">
</div>
<div class="form-group">
<label for="edit-line-road-type">Road Type *</label>
<select id="edit-line-road-type" required>
<option value="Nasional">National Road (Jalan Nasional)</option>
<option value="Provinsi">Provincial Road (Jalan Provinsi)</option>
<option value="Kabupaten">District Road (Jalan Kabupaten)</option>
</select>
</div>
<div class="form-group">
<label for="edit-line-length">Length (km)</label>
<input type="number" id="edit-line-length" readonly placeholder="Auto-calculated" step="0.01">
</div>
<div class="form-group">
<label for="edit-line-points">Number of Points</label>
<input type="number" id="edit-line-points" readonly placeholder="Info">
</div>
<div class="form-group">
<label for="edit-line-condition">Condition Status *</label>
<select id="edit-line-condition" required>
<option value="normal">Normal</option>
<option value="minor_damage">Minor Damage</option>
<option value="major_damage">Major Damage</option>
</select>
</div>
<div class="form-actions">
<button type="button" class="btn-secondary" onclick="closeEditLineModal()">Cancel</button>
<button type="submit" class="btn-primary">Save Changes</button>
</div>
</form>
</div>
</div>
<!-- Polygon/Parcel Modal -->
<div id="polygon-modal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h2>Create Land Parcel</h2>
<span class="close" onclick="closePolygonModal()">&times;</span>
</div>
<form id="polygon-form" onsubmit="event.preventDefault(); submitPolygonForm();">
<div class="form-group">
<label for="polygon-name">Parcel Name *</label>
<input type="text" id="polygon-name" required placeholder="e.g., Kavling A-01" autofocus>
</div>
<div class="form-group">
<label for="polygon-cert-type">Certificate Type *</label>
<select id="polygon-cert-type" required>
<option value="">Select Type...</option>
<option value="SHM">SHM - Hak Milik (Ownership)</option>
<option value="HGB">HGB - Hak Guna Bangunan (Building Rights)</option>
<option value="HGU">HGU - Hak Guna Usaha (Use Rights)</option>
<option value="HP">HP - Hak Pakai (Usage Rights)</option>
</select>
</div>
<div class="form-group">
<label for="polygon-area">Area (hectares) - Auto-calculated</label>
<input type="number" id="polygon-area" readonly placeholder="Auto-filled" step="0.01">
<small>Calculated from drawn boundary</small>
</div>
<div class="form-group">
<label for="polygon-points">Number of Points</label>
<input type="number" id="polygon-points" readonly placeholder="Auto-filled">
</div>
<input type="hidden" id="polygon-coordinates">
<input type="hidden" id="polygon-area-sqm">
<div class="form-actions">
<button type="button" class="btn-secondary" onclick="closePolygonModal()">Cancel</button>
<button type="submit" class="btn-primary">Save Parcel</button>
</div>
</form>
</div>
</div>
<!-- Edit Polygon Modal -->
<div id="edit-polygon-modal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h2>Edit Land Parcel</h2>
<span class="close" onclick="closeEditPolygonModal()">&times;</span>
</div>
<form id="edit-polygon-form" onsubmit="event.preventDefault(); savePolygonEdit();">
<input type="hidden" id="current-editing-polygon-id">
<div class="form-group">
<label for="edit-polygon-name">Parcel Name *</label>
<input type="text" id="edit-polygon-name" required placeholder="e.g., Kavling A-01">
</div>
<div class="form-group">
<label for="edit-polygon-cert-type">Certificate Type *</label>
<select id="edit-polygon-cert-type" required>
<option value="SHM">SHM - Hak Milik (Ownership)</option>
<option value="HGB">HGB - Hak Guna Bangunan (Building Rights)</option>
<option value="HGU">HGU - Hak Guna Usaha (Use Rights)</option>
<option value="HP">HP - Hak Pakai (Usage Rights)</option>
</select>
</div>
<div class="form-group">
<label for="edit-polygon-area">Area (hectares)</label>
<input type="number" id="edit-polygon-area" readonly placeholder="Auto-calculated" step="0.01">
</div>
<div class="form-group">
<label for="edit-polygon-points">Number of Points</label>
<input type="number" id="edit-polygon-points" readonly placeholder="Info">
</div>
<div class="form-actions">
<button type="button" class="btn-secondary" onclick="closeEditPolygonModal()">Cancel</button>
<button type="submit" class="btn-primary">Save Changes</button>
</div>
</form>
</div>
</div>
<!-- Drawing Toolbar -->
<div id="drawing-toolbar" class="drawing-toolbar hidden">
<div class="drawing-instruction">
<span id="drawing-instructions">Click map points to draw...</span>
</div>
<div class="drawing-progress">
<span>Points: <span id="point-count">0</span></span>
</div>
<div class="drawing-actions">
<button class="btn-secondary btn-small" id="btn-finish-draw" onclick="completeDrawing()">Finish</button>
<button class="btn-secondary btn-small" id="btn-cancel-draw" onclick="cancelDrawing()">Cancel</button>
</div>
</div>
<!-- Leaflet JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/leaflet.min.js"></script>
<!-- Custom JS -->
<script src="js/app.js"></script>
</body>
</html>