From 855976e2b688a126ff85b749bc0dcca077c42c28 Mon Sep 17 00:00:00 2001 From: Shawn Date: Wed, 27 May 2026 19:33:43 -0400 Subject: [PATCH] ux: Map tab enhancements + toast replacements - Replace 9 native alert()/confirm() calls with showToast() - Add search bar over map (name, machine_id, category, description) - Add filter chips with category counts (Bev, Food, Snack, etc.) - Make map container square (aspect-ratio 1/1) - Add asset list below map showing filtered results - Increase asset limit from 1000 to 2000 - Fix missing closing brace in .geofence-panel CSS - Zero console errors on all tabs --- static/index.html | 256 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 202 insertions(+), 54 deletions(-) diff --git a/static/index.html b/static/index.html index c891294..f1b3aa9 100644 --- a/static/index.html +++ b/static/index.html @@ -797,9 +797,10 @@ MAP STYLES ═══════════════════════════════════════════════════════════════════════ */ #mapContainer { - height: calc(100dvh - var(--header-height) - var(--tab-height) - 60px); - min-height: 300px; width: 100%; + aspect-ratio: 1 / 1; + max-height: 60vh; + min-height: 300px; border-radius: var(--radius); overflow: hidden; border: 1px solid var(--border); @@ -813,6 +814,7 @@ background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); + } /* Map controls bar */ .map-controls { display: flex; gap: 6px; margin-bottom: 6px; flex-wrap: wrap; @@ -827,6 +829,49 @@ .map-chip.active { background: var(--accent); border-color: var(--accent); color: #fff; } .map-chip.heat-on { background: var(--amber); border-color: var(--amber); color: #000; } .map-chip.park-on { background: var(--accent); border-color: var(--accent); color: #fff; } + + /* Map search bar */ + .map-search-row { + display: flex; gap: 6px; margin-bottom: 6px; align-items: center; + } + .map-search-row input { + flex: 1; min-width: 0; + } + .map-filter-chips { + display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 6px; + } + .map-filter-chip { + font-size: 10px; font-weight: 600; padding: 3px 8px; + border-radius: 12px; border: 1px solid var(--border); + background: var(--card2); color: var(--text2); cursor: pointer; + transition: all 0.12s; + } + .map-filter-chip.active { background: var(--accent); border-color: var(--accent); color: #fff; } + + /* Asset list below map */ + .map-asset-list { + margin-top: 8px; + max-height: 280px; + overflow-y: auto; + display: flex; + flex-direction: column; + gap: 4px; + } + .map-asset-item { + display: flex; align-items: center; gap: 8px; + padding: 8px 10px; border-radius: var(--radius-xs); + background: var(--card); border: 1px solid var(--border); + cursor: pointer; transition: background 0.12s; + font-size: 13px; + } + .map-asset-item:hover { background: var(--card2); } + .map-asset-item .mai-icon { font-size: 16px; width: 24px; text-align: center; } + .map-asset-item .mai-name { flex: 1; font-weight: 600; color: var(--text); } + .map-asset-item .mai-meta { font-size: 11px; color: var(--text3); } + .map-asset-item .mai-dist { font-size: 11px; color: var(--accent2); white-space: nowrap; } + .map-asset-empty { + text-align: center; padding: 24px; color: var(--text3); font-size: 13px; + } .cat-pin-icon { background: transparent !important; border: none !important; box-shadow: none !important; } .park-label-icon { pointer-events: none !important; background: transparent !important; border: none !important; } .leaflet-popup-content-wrapper { @@ -1535,7 +1580,18 @@ 🏰 Parks ON ◎ My GPS + +
+ + +
+ +
+
+ +