first commit
This commit is contained in:
+93
@@ -0,0 +1,93 @@
|
||||
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(
|
||||
"<b>" + window.escapeHtml(jalan.nama) + "</b><br>" +
|
||||
"Status: " + window.escapeHtml(jalan.status) + "<br>" +
|
||||
"Panjang: " + window.formatMeters(jalan.panjang)
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user