From f614d3363c28afcfc90ce88840460d8492775fca Mon Sep 17 00:00:00 2001 From: Thomas Dannenberg Date: Wed, 5 Nov 2025 18:25:45 +0000 Subject: [PATCH] adventskalender/shared/js/door-open.js aktualisiert --- adventskalender/shared/js/door-open.js | 77 ++++++++++++++------------ 1 file changed, 43 insertions(+), 34 deletions(-) diff --git a/adventskalender/shared/js/door-open.js b/adventskalender/shared/js/door-open.js index 6de1864..acc047b 100644 --- a/adventskalender/shared/js/door-open.js +++ b/adventskalender/shared/js/door-open.js @@ -1,10 +1,6 @@ // shared/js/door-open.js -/** - * Bratonien Adventskalender – Türöffnung (2025) - * --------------------------------------------- - * Öffnet normale Türen (.door) und Doppelflügeltüren (.fluegel) - * und triggert das Event für save-progress.js - */ +// Öffnet Türen, Flügel und Openfields +// und sagt den anderen Skripten Bescheid (Popup, Save) document.querySelectorAll(".door, .fluegel, .openfield").forEach(elem => { elem.addEventListener("click", () => { @@ -12,41 +8,54 @@ document.querySelectorAll(".door, .fluegel, .openfield").forEach(elem => { if (!day) return; const openfield = document.querySelector(`.openfield[data-day="${day}"]`); - const door = document.querySelector(`.door[data-day="${day}"]`); - const left = document.querySelector(`.fluegel.left[data-day="${day}"]`); - const right = document.querySelector(`.fluegel.right[data-day="${day}"]`); + const door = document.querySelector(`.door[data-day="${day}"]`); + const flLeft = document.querySelector(`.fluegel.left[data-day="${day}"]`); + const flRight = document.querySelector(`.fluegel.right[data-day="${day}"]`); - // === EINZELTÜR-LOGIK === - if (elem.classList.contains("door") || (openfield && door && elem === openfield)) { - if (door.classList.contains("open")) { - console.log(`Tür ${day} erneut geöffnet`); - document.dispatchEvent(new CustomEvent("doorOpened", { detail: { day } })); - return; + // 1) normale Tür + if (elem.classList.contains("door")) { + if (!door.classList.contains("open")) { + door.classList.add("open"); + if (openfield) openfield.classList.add("open"); } - - door.classList.add("open"); - if (openfield) openfield.classList.add("open"); - - document.dispatchEvent(new CustomEvent("doorOpened", { detail: { day } })); + notifyDayOpened(day); return; } - // === DOPPELFLÜGEL-LOGIK === - if (elem.classList.contains("fluegel") || (openfield && left && right && elem === openfield)) { - const bothOpen = - left?.classList.contains("rota") && right?.classList.contains("rota"); + // 2) Flügeltür + if (elem.classList.contains("fluegel")) { + const beideOffen = + flLeft?.classList.contains("rota") && + flRight?.classList.contains("rota"); - if (bothOpen) { - console.log(`Flügeltür ${day} erneut geöffnet`); - document.dispatchEvent(new CustomEvent("doorOpened", { detail: { day } })); - return; + if (!beideOffen) { + if (flLeft) flLeft.classList.add("rota"); + if (flRight) flRight.classList.add("rota"); + if (openfield) openfield.classList.add("open"); } + notifyDayOpened(day); + return; + } - if (left) left.classList.add("rota"); - if (right) right.classList.add("rota"); - if (openfield) openfield.classList.add("open"); - - document.dispatchEvent(new CustomEvent("doorOpened", { detail: { day } })); + // 3) openfield (erneut öffnen / nur Popup) + if (elem.classList.contains("openfield")) { + notifyDayOpened(day); + return; } }); -}); \ No newline at end of file +}); + +/** + * Sagt allen anderen Skripten: „Tag X wurde geöffnet“ + * popup.js kann window.openPopup(day) bereitstellen + * save-progress.js hört auf das CustomEvent + */ +function notifyDayOpened(day) { + // fürs Speichern + document.dispatchEvent(new CustomEvent("doorOpened", { detail: { day } })); + + // fürs Popup (deine vorhandene popup.js) + if (typeof window.openPopup === "function") { + window.openPopup(day); + } +} \ No newline at end of file