Files
date-wizard/name.js
T

77 lines
2.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Namensauswahl: lädt Namen aus appsettings.json, Kartenauswahl + Abschluss
(function () {
const nameList = document.getElementById("nameList");
const summary = document.getElementById("summary");
const continueBtn = document.getElementById("continueBtn");
const selectedActivity = localStorage.getItem("selectedActivity");
const selectedDate = localStorage.getItem("selectedDate");
// Ohne Aktivität und Datum ergibt diese Seite keinen Sinn.
if (!selectedActivity) {
window.location.href = "activity.html";
return;
}
if (!selectedDate) {
window.location.href = "datetime.html";
return;
}
const dateLabel = new Date(`${selectedDate}T00:00:00`).toLocaleDateString("de-DE", {
weekday: "long",
day: "numeric",
month: "long",
year: "numeric",
});
summary.textContent = `${selectedActivity} am ${dateLabel} verrate mir, wer du bist.`;
let selectedName = null;
fetch("appsettings.json")
.then((response) => response.json())
.then((settings) => renderNames(settings.names || []))
.catch(() => {
nameList.textContent = "Namen konnten nicht geladen werden.";
});
function renderNames(names) {
const options = names.length > 0 ? names : ["Mein name ist Amor 😽"];
options.forEach((name) => {
const card = document.createElement("button");
card.type = "button";
card.className = "name-card";
card.dataset.name = name;
const icon = document.createElement("span");
icon.className = "icon";
icon.setAttribute("aria-hidden", "true");
icon.textContent = "💖";
const label = document.createElement("span");
label.className = "label";
label.textContent = name;
card.append(icon, label);
card.addEventListener("click", () => {
nameList.querySelectorAll(".name-card").forEach((c) => c.classList.remove("selected"));
card.classList.add("selected");
selectedName = name;
continueBtn.disabled = false;
});
nameList.appendChild(card);
});
}
continueBtn.addEventListener("click", () => {
if (!selectedName) {
return;
}
// Ablage für die spätere Anbindung an Datenbank/Storage
localStorage.setItem("selectedName", selectedName);
window.location.href = "checkout.html";
});
})();