window.getRoadColor = function (status) { if (status === "Jalan Nasional") { return "#dc3545"; } if (status === "Jalan Provinsi") { return "#007bff"; } return "#28a745"; }; window.normalizeRoadStatus = function (value) { var normalized = String(value || "").trim().toLowerCase(); if (normalized === "jalan nasional" || normalized === "nasional") { return "Jalan Nasional"; } if (normalized === "jalan provinsi" || normalized === "provinsi") { return "Jalan Provinsi"; } if (normalized === "jalan kabupaten" || normalized === "kabupaten") { return "Jalan Kabupaten"; } return ""; }; window.serializeGeometry = function (latlngs) { return JSON.stringify(latlngs.map(function (point) { return [ Number(point.lat.toFixed(6)), Number(point.lng.toFixed(6)) ]; })); }; window.parseGeometry = function (geom) { try { var parsed = JSON.parse(geom); return Array.isArray(parsed) ? parsed : []; } catch (error) { return []; } }; window.collectRoadData = async function () { return window.openEditModal({ title: "Tambah Jalan", subtitle: "Lengkapi atribut jalan untuk garis yang sudah digambar.", fields: [ { name: "nama", label: "Nama Jalan", value: "", required: true }, { name: "status", label: "Status Jalan", type: "select", value: "Jalan Nasional", options: [ { value: "Jalan Nasional", label: "Jalan Nasional" }, { value: "Jalan Provinsi", label: "Jalan Provinsi" }, { value: "Jalan Kabupaten", label: "Jalan Kabupaten" } ] } ], validate: function (data) { if (!data.nama || !window.normalizeRoadStatus(data.status)) { return "Nama dan status jalan wajib valid."; } return ""; } }); }; window.buildRoadLayer = function (jalan) { var coordinates = window.parseGeometry(jalan.geom).map(function (point) { return L.latLng(point[0], point[1]); }); if (coordinates.length < 2) { return null; } return L.polyline(coordinates, { color: window.getRoadColor(jalan.status), weight: 4 }).bindPopup( "" + window.escapeHtml(jalan.nama) + "
" + "Status: " + window.escapeHtml(jalan.status) + "
" + "Panjang: " + window.formatMeters(jalan.panjang) ); };