feat: add initial base pages and mobile-first framework
This commit is contained in:
+52
@@ -0,0 +1,52 @@
|
||||
// Aktivitäts-Auswahl: lädt Aktivitäten aus appsettings.json, Kartenauswahl + Weiter-Button
|
||||
|
||||
(function () {
|
||||
const activityGrid = document.getElementById("activityGrid");
|
||||
const continueBtn = document.getElementById("continueBtn");
|
||||
|
||||
let selectedActivity = null;
|
||||
|
||||
fetch("appsettings.json")
|
||||
.then((response) => response.json())
|
||||
.then((settings) => renderActivities(settings.activities || []))
|
||||
.catch(() => {
|
||||
activityGrid.textContent = "Aktivitäten konnten nicht geladen werden.";
|
||||
});
|
||||
|
||||
function renderActivities(activities) {
|
||||
activities.forEach((activity) => {
|
||||
const card = document.createElement("button");
|
||||
card.type = "button";
|
||||
card.className = "activity-card";
|
||||
card.dataset.activity = activity.name;
|
||||
|
||||
const icon = document.createElement("span");
|
||||
icon.className = "icon";
|
||||
icon.setAttribute("aria-hidden", "true");
|
||||
icon.textContent = activity.icon;
|
||||
|
||||
const label = document.createElement("span");
|
||||
label.className = "label";
|
||||
label.textContent = activity.name;
|
||||
|
||||
card.append(icon, label);
|
||||
card.addEventListener("click", () => {
|
||||
activityGrid.querySelectorAll(".activity-card").forEach((c) => c.classList.remove("selected"));
|
||||
card.classList.add("selected");
|
||||
selectedActivity = activity.name;
|
||||
continueBtn.disabled = false;
|
||||
});
|
||||
|
||||
activityGrid.appendChild(card);
|
||||
});
|
||||
}
|
||||
|
||||
continueBtn.addEventListener("click", () => {
|
||||
if (!selectedActivity) {
|
||||
return;
|
||||
}
|
||||
// Ablage für die spätere Anbindung an Datenbank/Storage
|
||||
localStorage.setItem("selectedActivity", selectedActivity);
|
||||
window.location.href = "datetime.html";
|
||||
});
|
||||
})();
|
||||
Reference in New Issue
Block a user