From 3374ee08102530dcbfa6c6dac5c1301166e2967c Mon Sep 17 00:00:00 2001 From: igor_nadein Date: Wed, 25 Feb 2026 02:15:15 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D1=83=D1=87=D0=B5=D1=82=20=D0=BC=D0=BD?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=D0=B4=D0=BD=D0=B5=D0=B2=D0=BD=D1=8B=D1=85=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D0=B9=20=D0=B2=20=D0=B8?= =?UTF-8?q?=D0=BD=D0=B4=D0=B8=D0=BA=D0=B0=D1=82=D0=BE=D1=80=D0=B0=D1=85=20?= =?UTF-8?q?=D0=BC=D0=B8=D0=BD=D0=B8-=D0=BA=D0=B0=D0=BB=D0=B5=D0=BD=D0=B4?= =?UTF-8?q?=D0=B0=D1=80=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Изменена логика eventDays для учета всех дней многодневного события - Теперь перебираются все дни от start до end включительно - Добавлена обработка событий без end (однодневные) - Сброс времени для корректного сравнения дат Проблема: точки-индикаторы отображались только в день начала события. Решение: добавление всех дней из диапазона [start, end] в Set eventDays. --- frontend/src/components/AppShell.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/AppShell.tsx b/frontend/src/components/AppShell.tsx index 6154016a..a5c0afe1 100644 --- a/frontend/src/components/AppShell.tsx +++ b/frontend/src/components/AppShell.tsx @@ -488,9 +488,22 @@ function CalendarCard({ const days = new Set(); 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]);