This commit is contained in:
Matthias Hochmeister
2026-03-26 14:22:35 +01:00
parent 3c95b7506b
commit c29b21f714
9 changed files with 400 additions and 103 deletions

View File

@@ -1732,12 +1732,36 @@ export default function Kalender() {
setCalLoading(true);
setCalError(null);
try {
const firstDay = new Date(viewMonth.year, viewMonth.month, 1);
const dayOfWeek = (firstDay.getDay() + 6) % 7;
const gridStart = new Date(firstDay);
gridStart.setDate(gridStart.getDate() - dayOfWeek);
const gridEnd = new Date(gridStart);
gridEnd.setDate(gridStart.getDate() + 41);
let gridStart: Date;
let gridEnd: Date;
if (viewMode === 'day') {
// Fetch the full month containing currentDate (plus padding)
const monthStart = startOfMonth(currentDate);
const dayOfWeek = (monthStart.getDay() + 6) % 7;
gridStart = subDays(monthStart, dayOfWeek);
gridEnd = addDays(gridStart, 41);
} else if (viewMode === 'week') {
// Fetch the month containing the current week
const weekStart = startOfWeek(currentDate, { weekStartsOn: 1 });
const weekEnd = endOfWeek(currentDate, { weekStartsOn: 1 });
const monthStart = startOfMonth(weekStart);
const monthEnd = endOfMonth(weekEnd);
gridStart = subDays(monthStart, 7);
gridEnd = addDays(monthEnd, 7);
} else if (viewMode === 'list') {
// Fetch from listFrom to listTo, with padding
gridStart = subDays(parseISO(listFrom), 1);
gridEnd = addDays(parseISO(listTo), 1);
} else {
// Month view: 42-day grid based on viewMonth
const firstDay = new Date(viewMonth.year, viewMonth.month, 1);
const dayOfWeek = (firstDay.getDay() + 6) % 7;
gridStart = new Date(firstDay);
gridStart.setDate(gridStart.getDate() - dayOfWeek);
gridEnd = new Date(gridStart);
gridEnd.setDate(gridStart.getDate() + 41);
}
const [trainData, eventData] = await Promise.all([
trainingApi.getCalendarRange(gridStart, gridEnd),
@@ -1750,7 +1774,7 @@ export default function Kalender() {
} finally {
setCalLoading(false);
}
}, [viewMonth]);
}, [viewMonth, viewMode, currentDate, listFrom, listTo]);
// Load kategorien + groups once
useEffect(() => {