From 12219faa286ad327cacecdadf9762406654ba760 Mon Sep 17 00:00:00 2001 From: Thomas Dannenberg Date: Wed, 5 Nov 2025 20:44:07 +0000 Subject: [PATCH] adventskalender/shared/js/save-progress.js aktualisiert --- adventskalender/shared/js/save-progress.js | 81 ++++++++++------------ 1 file changed, 37 insertions(+), 44 deletions(-) diff --git a/adventskalender/shared/js/save-progress.js b/adventskalender/shared/js/save-progress.js index 5ddc85f..f89a908 100644 --- a/adventskalender/shared/js/save-progress.js +++ b/adventskalender/shared/js/save-progress.js @@ -1,10 +1,9 @@ -// shared/js/save-progress.js /** * Bratonien Adventskalender – Fortschritt speichern (shared) * ---------------------------------------------------------- * - speichert geöffnete Türchen (Einzeltüren & Flügeltüren) * - stellt Zustand nach Neuladen wieder her - * - Dev-Modus (?dev): zeigt Reset-Button + deaktiviert Tagessperre + * - Dev-Modus (?dev): zeigt Reset-Button + gemeinsames Panel für alle Dev-Elemente */ (function () { @@ -12,11 +11,10 @@ const year = yearMatch ? yearMatch[0] : new Date().getFullYear(); const STORAGE_KEY = `bratonien_opened_${year}`; - /** === DEV-FLAG === */ const isDev = window.location.search.includes("dev"); window.BRATONIEN_DEV = isDev; - /** === HELFER === */ + // === Hilfsfunktionen === function getOpenedDays() { try { return JSON.parse(localStorage.getItem(STORAGE_KEY)) || []; @@ -29,17 +27,12 @@ localStorage.setItem(STORAGE_KEY, JSON.stringify([...new Set(days)])); } - /** === STATUS LADEN === */ + // === Status laden === window.addEventListener("DOMContentLoaded", () => { const openedDays = getOpenedDays(); openedDays.forEach(day => { - // normale Tür - document.querySelectorAll(`.door[data-day="${day}"]`).forEach(door => { - door.classList.add("open"); - }); - - // Flügeltüren + document.querySelectorAll(`.door[data-day="${day}"]`).forEach(d => d.classList.add("open")); const left = document.querySelector(`.fluegel.left[data-day="${day}"]`); const right = document.querySelector(`.fluegel.right[data-day="${day}"]`); if (left && right) { @@ -48,49 +41,49 @@ } }); - // === DEV BUTTON === + // === DEV-Bereich === if (isDev) { + // zentrales Dev-Panel + let panel = document.getElementById("dev-panel"); + if (!panel) { + panel = document.createElement("div"); + panel.id = "dev-panel"; + panel.style.cssText = ` + position: fixed; + bottom: 10px; + right: 10px; + display: flex; + flex-direction: column; + align-items: flex-end; + gap: 10px; + z-index: 9999; + `; + document.body.appendChild(panel); + } + + // Reset-Button const btn = document.createElement("button"); btn.textContent = "Reset Kalender"; - btn.style.position = "fixed"; - btn.style.bottom = "15px"; - btn.style.right = "15px"; - btn.style.zIndex = "9999"; - btn.style.padding = "8px 14px"; - btn.style.border = "2px solid gold"; - btn.style.borderRadius = "10px"; - btn.style.background = "#1a1a1a"; - btn.style.color = "gold"; - btn.style.cursor = "pointer"; - btn.style.fontFamily = "sans-serif"; - btn.style.fontSize = "14px"; + btn.style.cssText = ` + padding: 8px 14px; + border: 2px solid gold; + border-radius: 10px; + background: #1a1a1a; + color: gold; + cursor: pointer; + font-family: sans-serif; + font-size: 14px; + `; btn.addEventListener("click", () => { localStorage.removeItem(STORAGE_KEY); location.reload(); }); - const devPanel = document.getElementById("dev-panel"); -if (devPanel) { - devPanel.appendChild(btn); -} else { - const panel = document.createElement("div"); - panel.id = "dev-panel"; - panel.style.cssText = ` - position: fixed; - bottom: 10px; - right: 10px; - display: flex; - flex-direction: column; - gap: 10px; - align-items: flex-end; - z-index: 9999; - `; - document.body.appendChild(panel); - panel.appendChild(btn); -} + + panel.appendChild(btn); } }); - /** === STATUS SPEICHERN (auf Event hören) === */ + // === Status speichern === document.addEventListener("doorOpened", e => { const day = e.detail?.day; if (!day) return;