Files
eventmap/js/store/storage.js
T
dapelzaandClaude Sonnet 5 2aaff8f680 Seed-Daten per Fetch von externem Server laden, UI-Sprachumschalter (DE/EN) und KI-Übersetzungs-Prompt-Generator ergänzen
- Beispieldaten werden nicht mehr eingebettet (data/seed.js entfernt),
  sondern beim ersten Start per fetch(EventMap.config.SEED_DATA_URL) von
  einem externen, selbst gehosteten Server geladen (siehe ADR 0001,
  Revision 2026-07-28).
- Neuer UI-Sprachumschalter (Deutsch/Englisch) für die Bedienoberfläche:
  js/i18n/strings.js + js/i18n/i18n.js, Sprachwahl im Menü, Persistenz über
  settings.language, Retranslation ohne Reload.
- Neuer Menüpunkt "Ausflugsziel übersetzen (KI)": erzeugt einen Prompt, der
  eine externe KI bittet, Name/Beschreibungen eines bestehenden Ortes ins
  Englische, Spanische oder Französische zu übersetzen (js/ai/translatePromptBuilder.js,
  js/ui/translatePromptGenerator.js).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 15:16:31 +02:00

65 lines
1.8 KiB
JavaScript

// Persistenzschicht: liest/schreibt die beiden LocalStorage-Keys
// eventmap.data.v1 und eventmap.settings.v1.
(function () {
const { STORAGE_KEYS, CURRENT_SCHEMA_VERSION } = EventMap.config;
const { migrate } = EventMap.store;
function createDefaultSettings() {
return {
lastFilters: null,
lastMapView: null,
userConsentGeo: null,
defaultCenter: null,
language: null,
};
}
/** Liest die persistierten Places. Gibt null zurück, falls noch nichts gespeichert ist. */
function loadData() {
const raw = window.localStorage.getItem(STORAGE_KEYS.DATA);
if (!raw) {
return null;
}
try {
const parsed = JSON.parse(raw);
return migrate(parsed);
} catch (err) {
console.warn('EventMap: Gespeicherte Daten sind beschädigt und werden verworfen.', err);
return null;
}
}
function saveData(places) {
const payload = {
schemaVersion: CURRENT_SCHEMA_VERSION,
places,
updatedAt: new Date().toISOString(),
};
window.localStorage.setItem(STORAGE_KEYS.DATA, JSON.stringify(payload));
}
function loadSettings() {
const raw = window.localStorage.getItem(STORAGE_KEYS.SETTINGS);
if (!raw) {
return createDefaultSettings();
}
try {
return { ...createDefaultSettings(), ...JSON.parse(raw) };
} catch (err) {
console.warn('EventMap: Gespeicherte Einstellungen sind beschädigt, Defaults werden verwendet.', err);
return createDefaultSettings();
}
}
function saveSettings(settings) {
window.localStorage.setItem(STORAGE_KEYS.SETTINGS, JSON.stringify(settings));
}
EventMap.store.createDefaultSettings = createDefaultSettings;
EventMap.store.loadData = loadData;
EventMap.store.saveData = saveData;
EventMap.store.loadSettings = loadSettings;
EventMap.store.saveSettings = saveSettings;
})();