feat(mobile): declutter mobile driving interface, make map 100% immersive, compact HUD capsule and slide-up controls drawer

This commit is contained in:
2026-09-12 09:23:23 -07:00
parent 2bd6ebe302
commit f2a8660f10
4 changed files with 464 additions and 94 deletions
+57 -1
View File
@@ -206,7 +206,16 @@
adminPlacedCount: document.getElementById('admin-placed-count'),
adminPlacedCamsList: document.getElementById('admin-placed-cams-list'),
btnAdminClearAllPlaced: document.getElementById('btn-admin-clear-all-placed'),
btnAdminManagePins: document.getElementById('btn-admin-manage-pins')
btnAdminManagePins: document.getElementById('btn-admin-manage-pins'),
// Mobile Driving Controls & Drawer
driverHud: document.getElementById('driver-hud'),
btnToggleTools: document.getElementById('btn-toggle-tools'),
btnToggleHudDetails: document.getElementById('btn-toggle-hud-details'),
hudDetailsArrow: document.getElementById('hud-details-arrow'),
mapTopControls: document.getElementById('map-top-controls'),
btnCloseTools: document.getElementById('btn-close-tools'),
toolsOverlay: document.getElementById('tools-overlay')
};
// --- INITIALIZATION ---
@@ -1887,6 +1896,53 @@
});
}
// Mobile Driving Controls Drawer
function openToolsDrawer() {
if (el.mapTopControls) el.mapTopControls.classList.add('open-drawer');
if (el.toolsOverlay) el.toolsOverlay.classList.add('visible');
}
function closeToolsDrawer() {
if (el.mapTopControls) el.mapTopControls.classList.remove('open-drawer');
if (el.toolsOverlay) el.toolsOverlay.classList.remove('visible');
}
if (el.btnToggleTools) {
el.btnToggleTools.addEventListener('click', (e) => {
e.stopPropagation();
if (el.mapTopControls && el.mapTopControls.classList.contains('open-drawer')) {
closeToolsDrawer();
} else {
openToolsDrawer();
}
});
}
if (el.btnCloseTools) el.btnCloseTools.addEventListener('click', closeToolsDrawer);
if (el.toolsOverlay) el.toolsOverlay.addEventListener('click', closeToolsDrawer);
// Auto-close tools drawer on mobile when clicking any action button
if (el.mapTopControls) {
el.mapTopControls.querySelectorAll('.btn-hud-action').forEach(btn => {
btn.addEventListener('click', () => {
if (window.innerWidth <= 768) {
closeToolsDrawer();
}
});
});
}
// Toggle HUD Expanded Details on Mobile
if (el.btnToggleHudDetails) {
el.btnToggleHudDetails.addEventListener('click', (e) => {
e.stopPropagation();
if (el.driverHud) {
const isExpanded = el.driverHud.classList.toggle('is-expanded');
if (el.hudDetailsArrow) el.hudDetailsArrow.textContent = isExpanded ? '▲' : '🔍';
}
});
}
// Sync radar when reports updated
window.addEventListener('flock_reports_updated', () => {
loadAllCameraData();