From 7f73a3aed38f7dd9ef4574c57a5ffb4bd55b1cf0 Mon Sep 17 00:00:00 2001 From: Nico Date: Thu, 4 Jun 2026 03:09:19 -0700 Subject: [PATCH] fix: summarize unselected location maps --- .../maps/LocationMapBottomSheet.jsx | 33 ++++++++++++ frontend/src/pages/LocationMapManager.jsx | 6 +++ .../src/styles/pages/LocationMapManager.css | 29 +++++++++++ frontend/tests/location-map-manager.spec.ts | 50 +++++++++++++++++++ 4 files changed, 118 insertions(+) diff --git a/frontend/src/components/maps/LocationMapBottomSheet.jsx b/frontend/src/components/maps/LocationMapBottomSheet.jsx index f084b0e..5426ca5 100644 --- a/frontend/src/components/maps/LocationMapBottomSheet.jsx +++ b/frontend/src/components/maps/LocationMapBottomSheet.jsx @@ -27,7 +27,9 @@ export default function LocationMapBottomSheet({ layersOpen, setLayersOpen, selectedObject, + mapObjects = [], selectedZoneItems, + visibleAssignedItemCount = 0, visibleUnmappedItems, unmappedItemCount, hiddenAreaCount, @@ -67,6 +69,12 @@ export default function LocationMapBottomSheet({ const showEditorControls = mode === "edit" && canManage; const showSelectedObjectForm = Boolean(mode === "edit" && editorTool === "edit" && selectedObject); const changedLayerCount = DISPLAY_CONTROLS.filter(([key]) => filters[key] !== DEFAULT_MAP_FILTERS[key]).length; + const assignedItemCount = (mapState?.items || []).filter((item) => item.zone_id).length; + const totalAreaCount = mapObjects.length; + const visibleAreaCount = filters.showZones + ? Math.max(0, totalAreaCount - hiddenAreaCount) + : 0; + const showMapOverview = mode !== "edit" && !selectedObject; const unmappedItemPreview = visibleUnmappedItems.slice(0, 8); const overflowUnmappedItemCount = visibleUnmappedItems.length - unmappedItemPreview.length; const hiddenUnmappedItemCount = Math.max(0, unmappedItemCount - visibleUnmappedItems.length); @@ -75,6 +83,14 @@ export default function LocationMapBottomSheet({ const hiddenAreaLabel = `Show Hidden Areas (${hiddenAreaCount})`; const saveDraftLabel = savingAction === "save" ? "Saving..." : "Save Draft"; const publishLabel = savingAction === "publish" ? "Publishing..." : "Publish"; + const mappedItemSummary = assignedItemCount === visibleAssignedItemCount + ? String(assignedItemCount) + : `${visibleAssignedItemCount} shown`; + const unmappedItemSummary = !filters.showUnmapped && unmappedItemCount > 0 + ? `${unmappedItemCount} hidden` + : visibleUnmappedItems.length === unmappedItemCount + ? String(unmappedItemCount) + : `${visibleUnmappedItems.length} shown`; const resetLayerFilters = () => setFilters({ ...DEFAULT_MAP_FILTERS }); const showSelectedZoneItems = () => { setFilters((current) => ({ @@ -200,6 +216,23 @@ export default function LocationMapBottomSheet({ ) : null} + {showMapOverview ? ( +
+
+ Areas + {filters.showZones ? `${visibleAreaCount} shown` : "Hidden"} +
+
+ Mapped items + {mappedItemSummary} +
+
+ Unmapped + {unmappedItemSummary} +
+
+ ) : null} + {mode === "edit" && editorTool === "edit" && selectedObject ? (