fix: учет многодневных событий в индикаторах мини-календаря
- Изменена логика eventDays для учета всех дней многодневного события - Теперь перебираются все дни от start до end включительно - Добавлена обработка событий без end (однодневные) - Сброс времени для корректного сравнения дат Проблема: точки-индикаторы отображались только в день начала события. Решение: добавление всех дней из диапазона [start, end] в Set eventDays.
This commit is contained in:
parent
32e0a123e3
commit
895c366122
@ -488,9 +488,22 @@ function CalendarCard({
|
||||
const days = new Set<string>();
|
||||
events.forEach((ev) => {
|
||||
if (!ev.start) return;
|
||||
const start = new Date(ev.start);
|
||||
if (Number.isNaN(start.getTime())) return;
|
||||
days.add(formatDateKey(start));
|
||||
const eventStart = new Date(ev.start);
|
||||
if (Number.isNaN(eventStart.getTime())) return;
|
||||
|
||||
// Обрабатываем многодневные события
|
||||
const eventEnd = ev.end ? new Date(ev.end) : eventStart;
|
||||
|
||||
// Сбрасываем время для корректного сравнения
|
||||
eventStart.setHours(0, 0, 0, 0);
|
||||
eventEnd.setHours(0, 0, 0, 0);
|
||||
|
||||
// Добавляем все дни от start до end включительно
|
||||
const currentDay = new Date(eventStart);
|
||||
while (currentDay <= eventEnd) {
|
||||
days.add(formatDateKey(currentDay));
|
||||
currentDay.setDate(currentDay.getDate() + 1);
|
||||
}
|
||||
});
|
||||
return days;
|
||||
}, [events]);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user