40 lines
1.5 KiB
JavaScript
40 lines
1.5 KiB
JavaScript
// shared/js/door-open.js
|
||
// Bratonien Adventskalender – Öffnungslogik
|
||
|
||
document.querySelectorAll(".door, .fluegel, .openfield").forEach(elem => {
|
||
elem.addEventListener("click", () => {
|
||
const day = elem.dataset.day;
|
||
const openfield = document.querySelector(`.openfield[data-day="${day}"]`);
|
||
const doors = document.querySelectorAll(`.door[data-day="${day}"]`);
|
||
const fluegelLinks = document.querySelector(`.fluegel.left[data-day="${day}"]`);
|
||
const fluegelRechts = document.querySelector(`.fluegel.right[data-day="${day}"]`);
|
||
|
||
// === Einzeltür ===
|
||
if (elem.classList.contains("door") || (elem.classList.contains("openfield") && doors.length > 0)) {
|
||
const door = doors[0];
|
||
if (!door) return;
|
||
|
||
if (door.classList.contains("open")) {
|
||
console.log(`Tür ${day} erneut geöffnet`);
|
||
return;
|
||
}
|
||
|
||
door.classList.add("open");
|
||
if (openfield) openfield.classList.add("open");
|
||
return;
|
||
}
|
||
|
||
// === Doppelflügeltür ===
|
||
if (elem.classList.contains("fluegel") || (elem.classList.contains("openfield") && fluegelLinks && fluegelRechts)) {
|
||
const alreadyOpen = document.querySelectorAll(`.fluegel[data-day="${day}"].rota`);
|
||
if (alreadyOpen.length === 2) {
|
||
console.log(`Flügeltür ${day} erneut geöffnet`);
|
||
return;
|
||
}
|
||
|
||
if (fluegelLinks) fluegelLinks.classList.add("rota");
|
||
if (fluegelRechts) fluegelRechts.classList.add("rota");
|
||
if (openfield) openfield.classList.add("open");
|
||
}
|
||
});
|
||
}); |