feat: persist booked dates in JSON file and exclude booked dates from selection

This commit is contained in:
2026-08-12 18:10:53 +02:00
parent 8685b3c466
commit 23baff9ef0
6 changed files with 102 additions and 5 deletions
+19 -5
View File
@@ -18,6 +18,7 @@
today.setHours(0, 0, 0, 0);
let availableDatesMap = new Map();
let bookedDatesSet = new Set();
let viewYear = today.getFullYear();
let viewMonth = today.getMonth();
let selectedDate = null;
@@ -36,15 +37,28 @@
return `${year}-${month}-${day}`;
}
fetch("appsettings.json")
.then((response) => response.json())
.then((settings) => {
Promise.all([
fetch("appsettings.json").then((res) => res.json()),
fetch("/api/booked-dates")
.then((res) => (res.ok ? res.json() : []))
.catch(() => []),
])
.then(([settings, bookedDates]) => {
bookedDatesSet = new Set(bookedDates || []);
const datesList = settings.availableDates || [];
datesList.forEach((item) => {
let key = "";
let type = "long";
if (typeof item === "string") {
availableDatesMap.set(item, { type: "long" });
key = item;
} else if (item && item.date) {
availableDatesMap.set(item.date, { type: item.type || "long" });
key = item.date;
type = item.type || "long";
}
if (key && !bookedDatesSet.has(key)) {
availableDatesMap.set(key, { type });
}
});