feat: restructure flow to date-first and add support for long/short days and activities
This commit is contained in:
+17
-15
@@ -7,7 +7,6 @@
|
||||
"Juli", "August", "September", "Oktober", "November", "Dezember",
|
||||
];
|
||||
|
||||
const activitySummary = document.getElementById("activitySummary");
|
||||
const monthLabel = document.getElementById("monthLabel");
|
||||
const weekdayRow = document.getElementById("weekdayRow");
|
||||
const dayGrid = document.getElementById("dayGrid");
|
||||
@@ -15,21 +14,14 @@
|
||||
const nextMonthBtn = document.getElementById("nextMonthBtn");
|
||||
const continueBtn = document.getElementById("continueBtn");
|
||||
|
||||
// Ohne gewählte Aktivität ergibt diese Seite keinen Sinn.
|
||||
const selectedActivity = localStorage.getItem("selectedActivity");
|
||||
if (!selectedActivity) {
|
||||
window.location.href = "activity.html";
|
||||
return;
|
||||
}
|
||||
activitySummary.textContent = `Für unser Date: „${selectedActivity}“`;
|
||||
|
||||
const today = new Date();
|
||||
today.setHours(0, 0, 0, 0);
|
||||
|
||||
let availableDates = new Set();
|
||||
let availableDatesMap = new Map();
|
||||
let viewYear = today.getFullYear();
|
||||
let viewMonth = today.getMonth();
|
||||
let selectedDate = null;
|
||||
let selectedDateType = "long";
|
||||
|
||||
WEEKDAYS.forEach((day) => {
|
||||
const span = document.createElement("span");
|
||||
@@ -47,9 +39,16 @@
|
||||
fetch("appsettings.json")
|
||||
.then((response) => response.json())
|
||||
.then((settings) => {
|
||||
availableDates = new Set(settings.availableDates || []);
|
||||
const datesList = settings.availableDates || [];
|
||||
datesList.forEach((item) => {
|
||||
if (typeof item === "string") {
|
||||
availableDatesMap.set(item, { type: "long" });
|
||||
} else if (item && item.date) {
|
||||
availableDatesMap.set(item.date, { type: item.type || "long" });
|
||||
}
|
||||
});
|
||||
|
||||
const upcoming = Array.from(availableDates)
|
||||
const upcoming = Array.from(availableDatesMap.keys())
|
||||
.map((dateKey) => new Date(`${dateKey}T00:00:00`))
|
||||
.filter((date) => date >= today)
|
||||
.sort((a, b) => a - b);
|
||||
@@ -82,12 +81,14 @@
|
||||
|
||||
for (let day = 1; day <= daysInMonth; day++) {
|
||||
const cellDate = new Date(viewYear, viewMonth, day);
|
||||
const key = toDateKey(cellDate);
|
||||
const button = document.createElement("button");
|
||||
button.type = "button";
|
||||
button.className = "day-cell";
|
||||
button.textContent = String(day);
|
||||
|
||||
const isAvailable = availableDates.has(toDateKey(cellDate));
|
||||
const dateInfo = availableDatesMap.get(key);
|
||||
const isAvailable = Boolean(dateInfo);
|
||||
const isToday = cellDate.getTime() === today.getTime();
|
||||
const isSelected = selectedDate && cellDate.getTime() === selectedDate.getTime();
|
||||
|
||||
@@ -104,6 +105,7 @@
|
||||
|
||||
button.addEventListener("click", () => {
|
||||
selectedDate = cellDate;
|
||||
selectedDateType = dateInfo ? dateInfo.type : "long";
|
||||
renderCalendar();
|
||||
updateContinueState();
|
||||
});
|
||||
@@ -141,9 +143,9 @@
|
||||
if (!selectedDate) {
|
||||
return;
|
||||
}
|
||||
// Ablage für die spätere Anbindung an Datenbank/Storage
|
||||
localStorage.setItem("selectedDate", toDateKey(selectedDate));
|
||||
window.location.href = "name.html";
|
||||
localStorage.setItem("selectedDateType", selectedDateType);
|
||||
window.location.href = "activity.html";
|
||||
});
|
||||
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user