This commit is contained in:
@@ -78,6 +78,27 @@ describe("organizeEventsInCalendar", () => {
|
|||||||
expect(week["2026-07-12"]).toEqual([]);
|
expect(week["2026-07-12"]).toEqual([]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("drops a leading month that only contains seeded padding days", () => {
|
||||||
|
// tirsdag 1. september 2026: the seeded week starts mandag 31. august
|
||||||
|
const events = getSingularEvents([
|
||||||
|
makeEvent("a", ["2026-09-04T17:00:00Z"]),
|
||||||
|
makeEvent("b", ["2026-10-02T17:00:00Z"]),
|
||||||
|
]);
|
||||||
|
|
||||||
|
const calendar = organizeEventsInCalendar(events);
|
||||||
|
|
||||||
|
expect(Object.keys(calendar)).toEqual(["2026-09", "2026-10"]);
|
||||||
|
// the first week is still seeded with its September days
|
||||||
|
expect(Object.keys(calendar["2026-09"]["36"])).toEqual([
|
||||||
|
"2026-09-01",
|
||||||
|
"2026-09-02",
|
||||||
|
"2026-09-03",
|
||||||
|
"2026-09-04",
|
||||||
|
"2026-09-05",
|
||||||
|
"2026-09-06",
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
it("splits a week across the year boundary under a shared week key", () => {
|
it("splits a week across the year boundary under a shared week key", () => {
|
||||||
const events = getSingularEvents([
|
const events = getSingularEvents([
|
||||||
makeEvent("romjul", ["2026-12-30T20:00:00Z"]),
|
makeEvent("romjul", ["2026-12-30T20:00:00Z"]),
|
||||||
|
|||||||
@@ -314,6 +314,19 @@ export function organizeEventsInCalendar<E extends EventListable>(
|
|||||||
calendar[yearMonth][week][day].push(event);
|
calendar[yearMonth][week][day].push(event);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Seeding starts at the Monday of the first event's week, which can spill a
|
||||||
|
// few empty days into the previous month. Drop that leading empty month so
|
||||||
|
// the calendar starts at the first month that actually has events.
|
||||||
|
for (const yearMonth of Object.keys(calendar)) {
|
||||||
|
const hasEvents = Object.values(calendar[yearMonth]).some((week) =>
|
||||||
|
Object.values(week).some((day) => day.length > 0)
|
||||||
|
);
|
||||||
|
if (hasEvents) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
delete calendar[yearMonth];
|
||||||
|
}
|
||||||
|
|
||||||
return calendar;
|
return calendar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user