🇩🇪 · Chaos inKL.
Hier findest du eine vollständige Übersicht aller fest geplanten Veranstaltungen und Treffen. Bitte beachte: Termine können sich kurzfristig ändern oder ausfallen. Es lohnt sich also, regelmäßig vorbeizuschauen. Außerdem gibt es auch spontane Treffen, die über unseren Matrix-Channel organisiert werden. Auch dort lohnt sich das reinschauen. Unsere nächsten Treffen: (async function() { var data = await (await fetch("https://caldav.chaos-inkl.de/_public")).text(); var cal = ICAL.Component.fromString(data); var events = cal.getAllSubcomponents("vevent"); var now = new Date(); now.setHours(0, 0, 0, 0); var end = new Date(now); end.setMonth(now.getMonth() + 1); var list = []; for (var event of events) { event = new ICAL.Event(event); var iter = event.iterator(); var next, count = 0; while (count = end) { break; } else if (at >= now) { list.push({ at: next.toJSDate(), event: event.getOccurrenceDetails(next) }); } count++; } } list.sort((a, b) => a.at - b.at); var cal = document.querySelector("#cal-body"); var row = document.querySelector("#cal-row"); var weekdayfmt = new Intl.DateTimeFormat("de-DE", { weekday: "long", }).format; var datefmt = new Intl.DateTimeFormat("de-DE", { day: "numeric", month: "long", }).format; var timefmt = new Intl.DateTimeFormat("de-DE", { timeStyle: "short" }).format; for (var event of list) { var entry = row.content.cloneNode(true); entry.querySelector("#when-wd").innerText = weekdayfmt(event.at); entry.querySelector("#when-d").innerText = datefmt(event.at); entry.querySelector("#when-t").innerText = timefmt(event.at) + " Uhr"; entry.querySelector("#title").textContent = event.event.item.summary; entry.querySelector("#description").textContent = event.event.item.description; // ---- Verlinkungslogik (angepasst von Startseite) ---- var info = entry.querySelector(".calendar_informations"); var icon = entry.querySelector(".div_icon_right"); // gemeinsamen Wrapper erzeugen, der beides enthält var wrapper = document.createElement("div"); wrapper.classList.add("complete_calendar_box"); wrapper.style.display = "flex"; wrapper.style.width = "100%"; // beide Elemente in den Wrapper verschieben wrapper.appendChild(info); wrapper.appendChild(icon); // jetzt Link darum herum var a = document.createElement("a"); a.classList.add("link_icon_right"); if (event.event.item.summary == "Hacknight" || event.event.item.summary == "Offene Hacknight") { a.href = "https://wiki.chaos-inkl.de/books/veranstaltungen/page/open-hacknight"; } else if (event.event.item.summary == "RETRO-AKTIV") { a.href = "https://retro-aktiv.de/"; } else if (event.event.item.summary == "Tag des offenen Hack*spaces") { a.href = "https://wiki.chaos-inkl.de/books/veranstaltungen/chapter/tag-des-offenen-hackspaces"; } a.target = "_blank"; a.appendChild(wrapper); // und den Link in die Box einfügen entry.querySelector(".termine_styles").appendChild(a); // ------------------------------------------------------ cal.appendChild(entry); } })();