feat: persist booked dates in JSON file and exclude booked dates from selection
This commit is contained in:
+19
-5
@@ -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 });
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user