Files
eventmap/index.html
T
dapelza f73f874d83 Fix: Backup-Export schwer auffindbar
Der Backup-Export/Import (Phase 7) war bislang nur ueber den zweiten Tab
im "KI-Ausflugsziele importieren"-Fenster erreichbar - der Toolbar-Button
nannte an keiner Stelle "Export" oder "Backup", weshalb die Funktion
praktisch nicht auffindbar war.

Neuer eigener Toolbar-Button "Daten sichern/wiederherstellen" oeffnet
das bestehende Import-Fenster jetzt direkt auf dem Backup-Tab
(openImport('backup')). Der bisherige Button bleibt fuer den
KI-JSON-Import zustaendig (openImport('ai')), keine Funktionsaenderung
an der eigentlichen Export-/Import-Logik.
2026-07-24 13:02:53 +02:00

142 lines
5.8 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>EventMap Familienfreundliche Ausflugsziele</title>
<link rel="stylesheet" href="vendor/leaflet/leaflet.css" />
<link rel="stylesheet" href="vendor/leaflet.markercluster/MarkerCluster.css" />
<link rel="stylesheet" href="vendor/leaflet.markercluster/MarkerCluster.Default.css" />
<link rel="stylesheet" href="css/reset.css" />
<link rel="stylesheet" href="css/variables.css" />
<link rel="stylesheet" href="css/layout.css" />
<link rel="stylesheet" href="css/components.css" />
<link rel="stylesheet" href="css/detail.css" />
<link rel="stylesheet" href="css/form.css" />
<link rel="stylesheet" href="css/filters.css" />
<link rel="stylesheet" href="css/promptGenerator.css" />
<link rel="stylesheet" href="css/manualLocation.css" />
<link rel="stylesheet" href="css/import.css" />
<link rel="stylesheet" href="css/responsive.css" />
</head>
<body>
<header class="app-header">
<h1 class="app-header__title">EventMap</h1>
<p class="app-header__subtitle">Familienfreundliche Ausflugsziele auf der Karte</p>
</header>
<div id="app-status" class="app-status" role="alert" hidden>
<p id="app-status-text" class="app-status__text"></p>
<button
id="app-status-close"
type="button"
class="app-status__close"
aria-label="Meldung schließen"
>
</button>
</div>
<main class="app-layout">
<section class="map-panel" aria-label="Karte">
<div class="map-panel__toolbar">
<button id="locate-btn" type="button" class="btn btn--secondary">
Meinen Standort verwenden
</button>
<button id="manual-location-btn" type="button" class="btn btn--secondary">
Standort manuell eingeben
</button>
<button id="pick-location-btn" type="button" class="btn btn--secondary">
📍 Standort auf Karte wählen
</button>
<button id="add-place-btn" type="button" class="btn btn--primary">
+ Neues Ausflugsziel hinzufügen
</button>
<button id="open-prompt-generator-btn" type="button" class="btn btn--secondary">
🤖 Neue Ausflugsziele mit KI erstellen
</button>
<button id="open-import-btn" type="button" class="btn btn--secondary">
📥 KI-Ausflugsziele importieren
</button>
<button id="open-backup-btn" type="button" class="btn btn--secondary">
💾 Daten sichern/wiederherstellen
</button>
</div>
<p id="map-picking-hint" class="map-picking-hint" hidden>
Klicke auf die Karte, um den Standort auszuwählen.
<button id="map-picking-cancel-btn" type="button" class="map-picking-hint__cancel">
Abbrechen
</button>
</p>
<div id="map" class="map-panel__map">
<p class="map-panel__loading">Karte wird geladen…</p>
</div>
</section>
<div id="filter-panel" class="filter-panel" aria-label="Filter und Suche"></div>
<aside class="list-panel" aria-label="Ergebnisliste">
<h2 class="list-panel__title">Ausflugsziele</h2>
<div id="place-list" class="list-panel__content">
<p class="list-empty">Lade Ausflugsziele…</p>
</div>
</aside>
</main>
<div id="detail-modal" class="detail-modal" hidden></div>
<div id="place-form-modal" class="place-form-modal" hidden></div>
<div id="manual-location-modal" class="manual-location-modal" hidden></div>
<div id="prompt-generator-modal" class="prompt-generator-modal" hidden></div>
<div id="import-modal" class="import-modal" hidden></div>
<script src="vendor/leaflet/leaflet.js"></script>
<script src="vendor/leaflet.markercluster/leaflet.markercluster.js"></script>
<!-- Klassische Scripts statt ES-Module (import/export), damit die App
auch per Doppelklick/file:// ohne lokalen Server funktioniert.
Reihenfolge folgt der Abhängigkeitskette; alle Dateien hängen ihre
öffentliche API an das globale window.EventMap-Namespace-Objekt an. -->
<script src="js/utils/dom.js"></script>
<script src="js/utils/geo.js"></script>
<script src="js/utils/id.js"></script>
<script src="js/utils/clipboard.js"></script>
<script src="js/utils/download.js"></script>
<script src="js/filters/filterEngine.js"></script>
<script src="data/seed.js"></script>
<script src="js/config/constants.js"></script>
<script src="js/config/categories.js"></script>
<script src="js/models/schema.js"></script>
<script src="js/models/place.js"></script>
<script src="js/store/migrations.js"></script>
<script src="js/store/storage.js"></script>
<script src="js/store/store.js"></script>
<script src="js/map/geolocation.js"></script>
<script src="js/map/markers.js"></script>
<script src="js/map/mapController.js"></script>
<script src="js/ui/list.js"></script>
<script src="js/ui/detail.js"></script>
<script src="js/ui/form.js"></script>
<script src="js/ui/manualLocation.js"></script>
<script src="js/filters/filterPanel.js"></script>
<!-- KI-Prompt-Generator (Phase 6): eigener Bereich, da js/ai/promptBuilder.js
auf EventMap.config.CATEGORIES angewiesen ist und js/ui/promptGenerator.js
wiederum promptBuilder.js voraussetzt. -->
<script src="js/ai/promptBuilder.js"></script>
<script src="js/ui/promptGenerator.js"></script>
<!-- KI-JSON-Import + Backup-Export/Import (Phase 7): js/import/*.js sind
reine Validierungs-/Datenfunktionen ohne DOM-Zugriff und setzen daher
nur EventMap.utils/models/config/store voraus (bereits geladen);
js/ui/import.js baut darauf auf. -->
<script src="js/import/importValidator.js"></script>
<script src="js/import/backup.js"></script>
<script src="js/ui/import.js"></script>
<script src="js/main.js"></script>
</body>
</html>