276 lines
8 KiB
Text
276 lines
8 KiB
Text
<!doctype html>
|
||
<html lang="it">
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>Galleria</title>
|
||
|
||
<!-- Configurazione iniziale -->
|
||
<script>
|
||
window.BASE_URL = "";
|
||
window.AppConfig = { ready: true };
|
||
window.dispatchEvent(new Event("config:ready"));
|
||
</script>
|
||
|
||
<!-- CSS applicazione -->
|
||
<link rel="stylesheet" href="/css/base.css" />
|
||
<link rel="stylesheet" href="/css/header.css" />
|
||
<link rel="stylesheet" href="/css/gallery.css" />
|
||
<link rel="stylesheet" href="/css/map-base.css" />
|
||
<link rel="stylesheet" href="/css/map-photos.css" />
|
||
<link rel="stylesheet" href="/css/map-activities.css" />
|
||
<link rel="stylesheet" href="/css/modal.css" />
|
||
<link rel="stylesheet" href="/css/activityModal.css" />
|
||
<link rel="stylesheet" href="/css/infoPanel.css" />
|
||
<link rel="stylesheet" href="/css/bottomSheet.css" />
|
||
<link rel="stylesheet" href="/css/optionsSheet.css" />
|
||
<link rel="stylesheet" href="/css/utils.css" />
|
||
|
||
<!-- Leaflet e MarkerCluster -->
|
||
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
|
||
<link
|
||
rel="stylesheet"
|
||
href="https://unpkg.com/leaflet.markercluster/dist/MarkerCluster.css"
|
||
/>
|
||
<link
|
||
rel="stylesheet"
|
||
href="https://unpkg.com/leaflet.markercluster/dist/MarkerCluster.Default.css"
|
||
/>
|
||
|
||
<style>
|
||
#authLoader {
|
||
position: fixed;
|
||
inset: 0;
|
||
z-index: 9999;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
background: #fff;
|
||
font-size: 1.4rem;
|
||
}
|
||
</style>
|
||
</head>
|
||
|
||
<body class="photos">
|
||
<div id="authLoader">Caricamento…</div>
|
||
|
||
<div id="app" style="display: none">
|
||
<!-- HEADER -->
|
||
<header class="topbar">
|
||
<h1>Galleria</h1>
|
||
|
||
<!-- Pulsante singolo: mostra la modalità corrente e passa all'altra -->
|
||
<button
|
||
id="modeToggle"
|
||
class="mode-toggle"
|
||
type="button"
|
||
aria-label="Passa alle attività"
|
||
title="Passa alle attività"
|
||
>
|
||
📷
|
||
</button>
|
||
|
||
<div class="top-buttons">
|
||
<div class="deleted-toggle">
|
||
<input
|
||
type="checkbox"
|
||
id="showDeleted"
|
||
class="visually-hidden"
|
||
aria-hidden="true"
|
||
tabindex="-1"
|
||
/>
|
||
|
||
<button
|
||
id="showDeletedBtn"
|
||
class="icon-btn deleted-toggle-btn is-hidden"
|
||
type="button"
|
||
aria-label="Mostra foto cancellate"
|
||
aria-pressed="false"
|
||
title="Mostra foto cancellate"
|
||
>
|
||
<span class="eye-icon" aria-hidden="true">👁️</span>
|
||
</button>
|
||
</div>
|
||
|
||
<button
|
||
id="openMapBtn"
|
||
class="icon-btn"
|
||
type="button"
|
||
aria-label="Apri mappa"
|
||
title="Mappa"
|
||
>
|
||
🗺️
|
||
</button>
|
||
|
||
<button
|
||
id="optionsBtn"
|
||
class="icon-btn"
|
||
type="button"
|
||
aria-label="Apri opzioni"
|
||
title="Opzioni"
|
||
>
|
||
⋮
|
||
</button>
|
||
|
||
<button
|
||
id="configBtn"
|
||
class="icon-btn"
|
||
type="button"
|
||
aria-label="Apri configurazione"
|
||
title="Configurazione"
|
||
>
|
||
⚙️
|
||
</button>
|
||
|
||
<button
|
||
id="logoutBtn"
|
||
class="icon-btn logout-btn"
|
||
type="button"
|
||
data-logout
|
||
data-redirect="/login"
|
||
aria-label="Logout"
|
||
title="Logout"
|
||
>
|
||
<img src="/logout.png" class="logout-icon" alt="" />
|
||
</button>
|
||
</div>
|
||
</header>
|
||
|
||
<!-- GALLERIA -->
|
||
<main id="gallery"></main>
|
||
|
||
<!-- MAPPA -->
|
||
<div id="globalMap" class="global-map"></div>
|
||
|
||
<!-- MODAL FOTO E VIDEO -->
|
||
<div id="modal" class="modal" aria-hidden="true">
|
||
<button
|
||
id="modalClose"
|
||
class="modal-close"
|
||
type="button"
|
||
aria-label="Chiudi"
|
||
>
|
||
×
|
||
</button>
|
||
<div id="modalMediaContainer" class="modal-media"></div>
|
||
<button
|
||
id="modalPrev"
|
||
class="modal-nav-btn prev hidden"
|
||
type="button"
|
||
aria-label="Elemento precedente"
|
||
>
|
||
‹
|
||
</button>
|
||
<button
|
||
id="modalNext"
|
||
class="modal-nav-btn next hidden"
|
||
type="button"
|
||
aria-label="Elemento successivo"
|
||
>
|
||
›
|
||
</button>
|
||
</div>
|
||
|
||
<!-- MODAL ATTIVITÀ -->
|
||
<div id="activityModal" aria-hidden="true">
|
||
<button
|
||
id="activityModalClose"
|
||
class="modal-close"
|
||
type="button"
|
||
aria-label="Chiudi attività"
|
||
>
|
||
×
|
||
</button>
|
||
<div id="activityModalContent"></div>
|
||
</div>
|
||
|
||
<!-- INFO PANEL -->
|
||
<aside id="infoPanel" class="info-panel" aria-hidden="true"></aside>
|
||
|
||
<!-- BOTTOM SHEET MAPPA -->
|
||
<div id="bottomSheet" class="bottom-sheet">
|
||
<div class="sheet-header"></div>
|
||
<div id="sheetGallery" class="sheet-gallery"></div>
|
||
</div>
|
||
|
||
<!-- OPTIONS SHEET -->
|
||
<div id="optionsSheet" class="options-sheet">
|
||
<div class="sheet-header"></div>
|
||
<div class="sheet-content">
|
||
<h3>Ordinamento</h3>
|
||
<button class="sheet-btn" type="button" data-sort="asc">
|
||
Data ↑
|
||
</button>
|
||
<button class="sheet-btn" type="button" data-sort="desc">
|
||
Data ↓
|
||
</button>
|
||
|
||
<h3>Raggruppamento</h3>
|
||
<button class="sheet-btn" type="button" data-group="auto">
|
||
Automatico
|
||
</button>
|
||
<button class="sheet-btn" type="button" data-group="day">
|
||
Giorno
|
||
</button>
|
||
<button class="sheet-btn" type="button" data-group="month">
|
||
Mese
|
||
</button>
|
||
<button class="sheet-btn" type="button" data-group="year">
|
||
Anno
|
||
</button>
|
||
|
||
<h3>Filtri</h3>
|
||
<button class="sheet-btn" type="button" data-filter="">Tutto</button>
|
||
<button class="sheet-btn" type="button" data-filter="folder">
|
||
Con cartella
|
||
</button>
|
||
<button class="sheet-btn" type="button" data-filter="location">
|
||
Con GPS
|
||
</button>
|
||
<button class="sheet-btn" type="button" data-filter="type">
|
||
Solo immagini
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="sheetOverlay" class="sheet-overlay"></div>
|
||
</div>
|
||
|
||
<!-- Librerie esterne -->
|
||
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
|
||
<script src="https://unpkg.com/leaflet.markercluster/dist/leaflet.markercluster.js"></script>
|
||
|
||
<!-- Autenticazione e configurazione -->
|
||
<script src="/js/config.js"></script>
|
||
<script src="/js/auth.js"></script>
|
||
<script src="/js/logout.js"></script>
|
||
|
||
<!-- Moduli applicazione -->
|
||
<script src="/js/api.js"></script>
|
||
<script src="/js/state.js"></script>
|
||
<script src="/js/sync.js"></script>
|
||
<script src="/js/galleryUtils.js"></script>
|
||
<script src="/js/activityThumbs.js"></script>
|
||
<script src="/js/galleryRenderer.js"></script>
|
||
<script src="/js/gallery.js"></script>
|
||
<script src="/js/mapPhotosLayer.js"></script>
|
||
<script src="/js/mapActivitiesLayer.js"></script>
|
||
<script src="/js/mapBaseLayers.js"></script>
|
||
<script src="/js/mapGlobal.js"></script>
|
||
<script src="/js/modal.js"></script>
|
||
<script src="/js/activityModal.js"></script>
|
||
<script src="/js/infoPanel.js"></script>
|
||
<script src="/js/bottomSheet.js"></script>
|
||
<script src="/js/optionsSheet.js"></script>
|
||
<script src="/js/pageControls.js"></script>
|
||
|
||
|
||
<!-- Debug mobile: rimuovere in produzione se non necessario -->
|
||
<script src="https://cdn.jsdelivr.net/npm/eruda"></script>
|
||
<script>
|
||
if (window.eruda) {
|
||
window.eruda.init();
|
||
}
|
||
</script>
|
||
</body>
|
||
</html>
|