Correggi deselezione oggetti mappa
This commit is contained in:
1 parent
e1bb7d9320
commit
3856a9f675
6 files changed
+43
-5
No files matched your search
+30
-1
@@ -51,6 +51,7 @@ const lmeState = {
|
||||
managerHighlight: null,
|
||||
managerHighlightedObjectId: null,
|
||||
managerHighlightedCategoryKey: null,
|
||||
managerOutsideSelectionBound: false,
|
||||
managerHiddenObjects: new Map(),
|
||||
managerHiddenObjectIds: new Set(),
|
||||
managerHiddenCategories: new Set(),
|
||||
@@ -78,6 +79,7 @@ window.lmeMap = {
|
||||
setImportedSheetLayerVisible,
|
||||
setLayerOrder,
|
||||
refreshLayerManager,
|
||||
clearLayerManagerSelection: clearManagerHighlight,
|
||||
setImportedMeasurementsVisible,
|
||||
setDrawingMeasurementsVisible,
|
||||
addProjectMarker,
|
||||
@@ -190,6 +192,7 @@ function init() {
|
||||
}
|
||||
|
||||
lmeState.map.on("click", async event => {
|
||||
clearManagerHighlight();
|
||||
const info = await queryFeatureInfo(event.latlng);
|
||||
if (info) {
|
||||
L.popup().setLatLng(event.latlng).setContent(info).openOn(lmeState.map);
|
||||
@@ -211,6 +214,19 @@ function init() {
|
||||
closeCadastrePreview();
|
||||
}
|
||||
});
|
||||
if (!lmeState.managerOutsideSelectionBound) {
|
||||
document.addEventListener("pointerdown", event => {
|
||||
if (!lmeState.managerHighlightedObjectId) {
|
||||
return;
|
||||
}
|
||||
const selectedRow = event.target?.closest?.(".layer-manager-object");
|
||||
if (selectedRow?.dataset.objectId === lmeState.managerHighlightedObjectId) {
|
||||
return;
|
||||
}
|
||||
clearManagerHighlight();
|
||||
});
|
||||
lmeState.managerOutsideSelectionBound = true;
|
||||
}
|
||||
|
||||
setInfo("Mappa pronta: satellite + catasto AdE");
|
||||
}
|
||||
@@ -1239,6 +1255,9 @@ function renderLayerManagerBlock(category, source, records) {
|
||||
function renderLayerManagerObject(record, index) {
|
||||
const object = document.createElement("details");
|
||||
object.className = "layer-manager-object";
|
||||
if (record.id === lmeState.managerHighlightedObjectId) {
|
||||
object.classList.add("layer-manager-object-selected");
|
||||
}
|
||||
object.dataset.dragType = "object";
|
||||
object.dataset.objectId = record.id;
|
||||
const visible = !lmeState.managerHiddenObjectIds.has(record.id);
|
||||
@@ -1343,9 +1362,16 @@ function managedCategoryEnabled(categoryKey) {
|
||||
}
|
||||
|
||||
function highlightManagedObject(record) {
|
||||
lmeState.managerHighlight.clearLayers();
|
||||
if (lmeState.managerHighlightedObjectId === record.id) {
|
||||
clearManagerHighlight();
|
||||
return;
|
||||
}
|
||||
clearManagerHighlight();
|
||||
lmeState.managerHighlightedObjectId = record.id;
|
||||
lmeState.managerHighlightedCategoryKey = record.categoryKey;
|
||||
document.querySelectorAll(".layer-manager-object").forEach(row => {
|
||||
row.classList.toggle("layer-manager-object-selected", row.dataset.objectId === record.id);
|
||||
});
|
||||
const geojson = record.layer.toGeoJSON?.();
|
||||
if (geojson) {
|
||||
L.geoJSON(geojson, {
|
||||
@@ -1370,6 +1396,9 @@ function clearManagerHighlight() {
|
||||
lmeState.managerHighlight?.clearLayers();
|
||||
lmeState.managerHighlightedObjectId = null;
|
||||
lmeState.managerHighlightedCategoryKey = null;
|
||||
document.querySelectorAll(".layer-manager-object-selected").forEach(row => {
|
||||
row.classList.remove("layer-manager-object-selected");
|
||||
});
|
||||
}
|
||||
|
||||
function layerManagerMoveButtons(label) {
|
||||
|
||||
Reference in new issue
Block a user