90 lines
5.1 KiB
Markdown
90 lines
5.1 KiB
Markdown
# App-Dateien, Strecken und Speicheranzeige
|
|
|
|
## App offline speichern
|
|
|
|
Der Startschalter **App offline speichern** lädt ausschließlich die App-Oberfläche:
|
|
HTML, CSS, JavaScript, lokale Bibliotheken, Symbole und Wichtel-Grafiken. Der
|
|
Server liefert dafür `/api/offline-manifest`. Keine Routenliste, Streckendetails,
|
|
GPX-Dateien oder Streckenmedien werden durch diesen Schalter gespeichert.
|
|
|
|
Nach einem vollständigen Download sind die App-Dateien offline verfügbar.
|
|
**App-Dateien aktualisieren** ersetzt sie durch einen neuen vollständigen Stand.
|
|
Ausschalten entfernt nur diesen App-Stand; separat gespeicherte Strecken,
|
|
lokale Entwürfe und Fortschritt bleiben erhalten. Der Fragezeichen-Button
|
|
neben dem Schalter erklärt die Trennung.
|
|
|
|
Beim ersten Start dieser Fassung wird ein alter automatisch erzeugter
|
|
Gesamtstand aus Version 1 entfernt, weil dieser auch alle Strecken enthielt.
|
|
Der neue App-Download wird danach erst durch erneutes Einschalten angefordert.
|
|
Bei bereits aktivem alten Cache zuerst dessen Aktualisierungsbutton verwenden,
|
|
dann neu laden, damit die neue Oberfläche aus dem Cache geladen wird.
|
|
|
|
## Einzelne Strecken
|
|
|
|
In der Ansicht einer veröffentlichten Strecke gibt es drei Aktionen:
|
|
|
|
- **Strecke offline speichern** lädt genau diese Strecke samt Details, Wegpunkten,
|
|
GPX-Datei, Bildern und Audio für die App. Danach heißt der Button
|
|
**Offline-Strecke aktualisieren**. Ein gescheiterter Download aktiviert keinen
|
|
Teilstand; ein vorhandener vollständiger Stand bleibt erhalten.
|
|
- **Offline-Strecke entfernen** entfernt nur die Browser-Kopien dieser Strecke.
|
|
- **GPX herunterladen** lädt eine normale GPX-Datei in den vom Browser verwendeten
|
|
Download-Ordner. Diese Datei enthält den Track und gegebenenfalls GPX-Wegpunkte,
|
|
aber keine separat gespeicherten Bilder oder Audiodateien. Downloads außerhalb
|
|
des Browser-Speichers lassen sich nicht durch die App löschen oder messen.
|
|
|
|
Für einen vollständigen Offline-Neustart zuerst die App-Dateien und dann die
|
|
gewünschten Strecken speichern. Offline zeigt die Streckenliste nur ausdrücklich
|
|
gespeicherte veröffentlichte Strecken sowie die bereits vorhandenen lokalen
|
|
Entwürfe. Ohne gespeicherte Strecken bleibt die Liste der Serverstrecken leer.
|
|
Die normale Online-Liste wird nicht dauerhaft übernommen. GPS-Berechtigungen
|
|
werden weiterhin benötigt. Externe Karten gehören nicht zum Download.
|
|
|
|
Lokale Entwürfe bleiben im bestehenden GPX-/JSON-Speicher mit ihren lokalen
|
|
Medien. Server-Schreiboperationen werden nicht offline ausgeführt.
|
|
|
|
## Speicheranzeige
|
|
|
|
Startfenster und Streckenverwaltung zeigen zwei Balken:
|
|
|
|
1. **Website-Speicher**: `navigator.storage.estimate()` liefert eine ungefähre
|
|
Belegung und Browser-Quote, einschließlich OPFS, CacheStorage und IndexedDB.
|
|
Die Anzeige nennt belegte und noch verfügbare MiB und warnt ab 90 Prozent.
|
|
Die Werte sind Browser-Schätzungen, keine garantierte freie Festplattenkapazität.
|
|
2. **Local Storage**: Die App zählt Schlüssel und Werte als UTF-16-Zeichen und
|
|
zeigt die ungefähre Größe an. Weil dessen separate Grenze nicht abgefragt
|
|
werden kann, bezieht sich der Balken ausdrücklich auf einen Richtwert von
|
|
5 MiB. Die tatsächliche Grenze und deren Berechnung hängen vom Browser ab.
|
|
Freier Website-Speicher bedeutet deshalb nicht, dass große Bilder noch in
|
|
einen lokalen Entwurf passen.
|
|
|
|
Die Anzeige aktualisiert sich beim Start, nach Strecken-/Medienänderungen,
|
|
nach Offline-Downloads und beim Zurückkehren zur App. Ein manueller
|
|
Aktualisierungsbutton ist vorhanden. Ein `QuotaExceededError` wird unabhängig
|
|
von den angezeigten Schätzungen als „Speicher voll“ gemeldet. Nicht verfügbare
|
|
Browser-Schätzungen werden als unbekannt angezeigt; es gibt keine schreibenden
|
|
Versuche, den Speicher bis zur Grenze zu füllen.
|
|
|
|
Die Daten liegen bevorzugt im geschützten Browser-Dateisystem (OPFS), ersatzweise
|
|
in CacheStorage. Die App fragt dauerhaften Speicher an; eine Ablehnung blockiert
|
|
Downloads nicht. Browserbereinigung, Platzmangel oder Löschen der Website-Daten
|
|
können die Kopien entfernen. HTTPS oder localhost und ein Service Worker werden
|
|
für die Offline-Funktion benötigt. Die bestehende 24-Stunden-Bereinigung des
|
|
optionalen Fortschrittsspeichers betrifft diese Kopien nicht.
|
|
|
|
## Prüfung auf dem Gerät
|
|
|
|
1. Archiv entpacken, Server neu starten und die neue Oberfläche laden.
|
|
2. App-Schalter aktivieren und die Download-Bestätigung abwarten.
|
|
3. Eine Strecke öffnen und explizit offline speichern; GPX herunterladen testen.
|
|
4. Offline schalten und die Seite neu laden: Gespeicherte Strecke, Bilder, Audio
|
|
und Spulen prüfen. Nicht gespeicherte Strecken sollen nicht erscheinen.
|
|
5. App-Schalter ausschalten: Gespeicherte Strecke und lokale Entwürfe behalten.
|
|
6. Eine gespeicherte Strecke entfernen: Andere Offline-Strecken behalten.
|
|
7. Beim Ergänzen lokaler Bilder beide Speicheranzeigen und Fehlertexte prüfen.
|
|
|
|
Automatisierte Tests prüfen Manifest-Ausschlüsse, getrennte Speicherstände,
|
|
OPFS/CacheStorage, Fehler und Abbruch, Audio-Byte-Ranges, Offline-API-Fallback,
|
|
Upgrade eines alten Gesamtstands sowie beide Speicheranzeigen. Ein echter
|
|
Browser-/Gerätetest wurde in der Ausführungsumgebung nicht durchgeführt.
|