// public/js/pageControls.js // Controlli della pagina Galleria (() => { "use strict"; function initializeProtectedPage() { const authLoader = document.getElementById("authLoader"); const app = document.getElementById("app"); const isAuthenticated = window.AppAuth && typeof window.AppAuth.isLoggedIn === "function" && window.AppAuth.isLoggedIn(); console.log("[AUTH CHECK]", { authenticated: isAuthenticated, token: sessionStorage.getItem("token"), user: window.AppAuth?.getUser?.(), }); if (!isAuthenticated) { sessionStorage.removeItem("token"); window.location.replace("/login?redirect=/"); return false; } document.body.classList.add("authenticated"); if (authLoader) { authLoader.style.display = "none"; } if (app) { app.style.display = "block"; } return true; } function initializeConfigButton() { const configButton = document.getElementById("configBtn"); if (!configButton) { return; } configButton.addEventListener("click", () => { window.location.href = "/admin.html"; }); } function initializeModeToggle() { const modeToggle = document.getElementById("modeToggle"); if (!modeToggle) { console.error("[modeToggle] Pulsante non trovato"); return; } function normalizeMode(mode) { return mode === "activities" ? "activities" : "photos"; } function updateModeUI(mode) { const safeMode = normalizeMode(mode); document.body.classList.remove("photos", "activities"); document.body.classList.add(safeMode); if (safeMode === "photos") { modeToggle.textContent = "📷"; modeToggle.setAttribute("aria-label", "Passa alle attività"); modeToggle.title = "Passa alle attività"; } else { modeToggle.textContent = "🏃"; modeToggle.setAttribute("aria-label", "Passa alle foto"); modeToggle.title = "Passa alle foto"; } } modeToggle.addEventListener("click", async () => { const currentMode = normalizeMode(window.state?.mode); const nextMode = currentMode === "photos" ? "activities" : "photos"; modeToggle.disabled = true; try { window.closeBottomSheet?.(); window.closeActivityModal?.(); window.closeInfoPanel?.(); if (typeof window.setGalleryMode === "function") { window.setGalleryMode(nextMode); } else { window.state ??= {}; window.state.mode = nextMode; window.loadLocalState?.(); } updateModeUI(nextMode); if (typeof window.progressiveSync === "function") { await window.progressiveSync(nextMode); } window.refreshGallery?.(); const mapDiv = document.getElementById("globalMap"); if (mapDiv?.classList.contains("open")) { window.redrawGlobalMap?.(); } updateModeUI(window.state?.mode || nextMode); } catch (error) { console.error("[modeToggle] Errore cambio modalità:", error); updateModeUI(window.state?.mode || "photos"); } finally { modeToggle.disabled = false; } }); updateModeUI(window.state?.mode || "photos"); } function initializeTerrainButton() { const btn = document.getElementById("terrain3dBtn"); if (!btn) { return; } btn.addEventListener("click", async () => { try { await window.MapTerrain3D?.toggle(); btn.classList.toggle( "active", window.MapTerrain3D?.enabled?.() === true ); } catch (err) { console.error("[Terrain3D]", err); } }); } window.updateTerrainButton = function(enabled) { const btn = document.getElementById("terrain3dBtn"); if (!btn) return; btn.classList.toggle("active", enabled); btn.textContent = enabled ? "🗺️" : "🏔️"; btn.title = enabled ? "Torna alla mappa 2D" : "Apri Terrain 3D"; }; function initializeDeletedToggle() { const checkbox = document.getElementById("showDeleted"); const toggleButton = document.getElementById("showDeletedBtn"); if (!checkbox || !toggleButton) { console.error("[showDeleted] Checkbox o pulsante non trovato"); return; } function updateDeletedToggleUI() { const showDeleted = checkbox.checked; // Occhio barrato: cancellate nascoste. // Occhio libero: cancellate visibili. toggleButton.classList.toggle("is-hidden", !showDeleted); toggleButton.classList.toggle("is-visible", showDeleted); toggleButton.setAttribute("aria-pressed", String(showDeleted)); toggleButton.setAttribute( "aria-label", showDeleted ? "Nascondi elementi cancellati" : "Mostra elementi cancellati", ); toggleButton.title = showDeleted ? "Elementi cancellati visibili" : "Elementi cancellati nascosti"; } toggleButton.addEventListener("click", () => { checkbox.checked = !checkbox.checked; // gallery.js ascolta change, salva la preferenza e aggiorna la galleria. checkbox.dispatchEvent( new Event("change", { bubbles: true, }), ); updateDeletedToggleUI(); }); checkbox.addEventListener("change", updateDeletedToggleUI); // gallery.js ripristina prima il valore salvato in localStorage. setTimeout(updateDeletedToggleUI, 0); } function initializeEruda() { if (window.eruda && typeof window.eruda.init === "function") { window.eruda.init(); } } function initializePageControls() { const authenticated = initializeProtectedPage(); if (!authenticated) { return; } initializeConfigButton(); initializeModeToggle(); initializeDeletedToggle(); initializeTerrainButton(); initializeEruda(); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", initializePageControls, { once: true, }); } else { initializePageControls(); } })();