feat: implement full CRUD functionality for jalan, parsil, and spbu modules including database integration and map interaction features
This commit is contained in:
+11
-46
@@ -29,11 +29,6 @@ L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
||||
|
||||
// Inisialisasi FeatureGroups untuk masing-masing layer
|
||||
const spbuLayer = L.featureGroup().addTo(map);
|
||||
const jalanLayer = L.featureGroup().addTo(map);
|
||||
const parsilLayer = L.featureGroup().addTo(map);
|
||||
const rumahIbadahLayer = L.featureGroup().addTo(map);
|
||||
const pendudukMiskinLayer = L.featureGroup().addTo(map);
|
||||
const geoJsonLayer = L.featureGroup().addTo(map);
|
||||
|
||||
const searchInput = document.getElementById('searchInput');
|
||||
const searchClear = document.getElementById('searchClear');
|
||||
@@ -77,22 +72,6 @@ window.showSearchResults = function(query) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (typeof jalanLayer !== 'undefined') {
|
||||
jalanLayer.eachLayer(layer => {
|
||||
if (layer.jalanData && layer.jalanData.nama && layer.jalanData.nama.toLowerCase().includes(query)) {
|
||||
results.push({ type: 'Jalan', nama: layer.jalanData.nama, layer: layer });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (typeof parsilLayer !== 'undefined') {
|
||||
parsilLayer.eachLayer(layer => {
|
||||
if (layer.parsilData && layer.parsilData.nama && layer.parsilData.nama.toLowerCase().includes(query)) {
|
||||
results.push({ type: 'Parsil', nama: layer.parsilData.nama, layer: layer });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (results.length === 0) {
|
||||
resultsContainer.innerHTML = '<div style="padding: 10px 15px; color: #666; font-size: 14px;">Tidak ada hasil</div>';
|
||||
@@ -148,10 +127,6 @@ const setupLayerToggle = (id, layer) => {
|
||||
};
|
||||
|
||||
setupLayerToggle('layerSpbu', spbuLayer);
|
||||
setupLayerToggle('layerJalan', jalanLayer);
|
||||
setupLayerToggle('layerParsil', parsilLayer);
|
||||
setupLayerToggle('layerRumahIbadah', rumahIbadahLayer);
|
||||
setupLayerToggle('layerMiskin', pendudukMiskinLayer);
|
||||
|
||||
// --- Sub-layer Toggle (expand/collapse) ---
|
||||
window.toggleSubLayer = function(subId, iconEl) {
|
||||
@@ -174,26 +149,6 @@ window.applySubFilter = function(type) {
|
||||
layer.getElement && layer.getElement() && (layer.getElement().style.display = 'none');
|
||||
}
|
||||
});
|
||||
} else if (type === 'jalan') {
|
||||
const checked = [...document.querySelectorAll('.sub-jalan:checked')].map(el => el.value);
|
||||
jalanLayer.eachLayer(layer => {
|
||||
if (!layer.jalanData) return;
|
||||
if (checked.includes(layer.jalanData.status)) {
|
||||
layer.getElement && layer.getElement() && (layer.getElement().style.display = '');
|
||||
} else {
|
||||
layer.getElement && layer.getElement() && (layer.getElement().style.display = 'none');
|
||||
}
|
||||
});
|
||||
} else if (type === 'parsil') {
|
||||
const checked = [...document.querySelectorAll('.sub-parsil:checked')].map(el => el.value);
|
||||
parsilLayer.eachLayer(layer => {
|
||||
if (!layer.parsilData) return;
|
||||
if (checked.includes(layer.parsilData.status)) {
|
||||
layer.getElement && layer.getElement() && (layer.getElement().style.display = '');
|
||||
} else {
|
||||
layer.getElement && layer.getElement() && (layer.getElement().style.display = 'none');
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -243,7 +198,11 @@ window.closeConfirmModal = function() {
|
||||
if (confirmModal) confirmModal.classList.remove('show');
|
||||
};
|
||||
|
||||
window.currentAddMode = null; // 'spbu', 'jalan', 'parsil'
|
||||
// --- Add Mode (untuk SPBU klik peta) ---
|
||||
window.currentAddMode = null;
|
||||
window.currentDrawMode = null;
|
||||
window.activeDrawHandler = null;
|
||||
|
||||
window.activateAddMode = function(mode) {
|
||||
if (window.currentAddMode === mode) {
|
||||
window.deactivateAddMode();
|
||||
@@ -254,6 +213,12 @@ window.activateAddMode = function(mode) {
|
||||
};
|
||||
|
||||
window.deactivateAddMode = function() {
|
||||
if (window.activeDrawHandler) {
|
||||
try { window.activeDrawHandler.disable(); } catch(e) {}
|
||||
window.activeDrawHandler = null;
|
||||
}
|
||||
window.currentAddMode = null;
|
||||
window.currentDrawMode = null;
|
||||
document.getElementById('map').style.cursor = '';
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user