Correggi deselezione oggetti mappa

This commit is contained in:
livio committed 2026-09-22 16:01:35 +02:00
1 parent e1bb7d9320
commit 3856a9f675
6 files changed
+43 -5

No files matched your search

+5
View File
@@ -354,6 +354,11 @@ input[type="checkbox"] {
outline: 2px solid #2563eb;
}
.layer-manager-object-selected > summary {
background: #fff0fb;
box-shadow: inset 3px 0 #ff00d4;
}
.gps-overlay {
position: absolute;
top: 72px;
+30 -1
View File
@@ -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) {