- Создан модуль calendarEventDragDrop.js с классами DragDropState и CalendarUtils
- Реализовано перетаскивание событий между календарями через модальное окно
- Добавлена кнопка 'Переместить все' для массового перемещения
- Модальное окно отображает источник и цель перемещения
- Поддержка legacy-календарей (company/department/personal)
- Добавлены стили для подсветки drop-target (папки и календари)
- Backend: исправлена обработка null значений в serializer
- Backend: добавлен endpoint list_raw для получения немодерируемых событий
- Использованы стандартные Bootstrap стили для модалов
- Исправлено всплытие событий dragover/drop (stopPropagation)
- Эмодзи иконки для типов календарей (����)
- Toast уведомления об успехе/ошибках перемещения
Проблема:
- Левая граница (корешок) событий была белой
- Не отображался цвет календаря
- border-left устанавливался без цвета в SCSS
Решение:
1. calendarWidget.js - eventDidMount:
- Вернул установку полного border-left через JS
- С цветом календаря: border-left: 4px solid <calendarColor>
- Без цвета календаря: border-left: 3px solid <eventColor>
2. _calendar-events.scss:
- Оставил только padding-left (не конфликтует с JS)
- Добавил комментарии что border-left устанавливается через JS
Результат:
✅ Корешок показывает цвет календаря (4px)
✅ Для legacy календарей - цвет события (3px)
✅ Двухцветная схема работает корректно
✅ SCSS не перезаписывает JS стили
Пример:
- Календарь отдела (красный) + событие (синее) = красный корешок + синий фон
- Legacy календарь + событие (синее) = синий корешок + синий фон
Проблемы:
- Многодневные события неправильно растягивались
- Инлайн-стили JS перезаписывали SCSS правила
- Не было четкой визуализации начала/конца/середины события
Решение:
1. Обновлён eventDidMount в calendarWidget.js:
- Убраны инлайн-стили для border-radius, padding, box-shadow
- Добавлен атрибут data-has-calendar-color для SCSS селекторов
- Упрощена логика - доверяем SCSS стилям
- Определение многодневных событий через info.isStart/isEnd
2. Улучшены SCSS стили в _calendar-events.scss:
- Добавлен width: 100% для растягивания на всю ячейку
- Раздельные border-radius для start/middle/end сегментов
- Улучшены визуальные индикаторы (‹ › с цветом)
- Явные правила для всех комбинаций fc-event-start/end
Результаты:
✅ Многодневные события корректно растягиваются
✅ Четкая визуализация начала (левый радиус) и конца (правый радиус)
✅ Средние дни без закруглений (seamless переход)
✅ Индикаторы продолжения (‹ ›) белого цвета
✅ Совместимость с двухцветной схемой (календарь + событие)
Изменения:
- 2 files changed, 48 insertions(+), 51 deletions(-)
- Компилирован app.css
Проблема:
- Многодневные события отображались странно
- Не было визуальной связи между сегментами
- Закругления и отступы были некорректными
Решение:
1. Визуальные индикаторы продолжения
- Первый день: стрелка › справа
- Средние дни: стрелки ‹ › с обеих сторон
- Последний день: стрелка ‹ слева
- Цвет стрелок: белый с opacity 0.7
2. Правильные закругления углов
- Первый день: слева закруглено, справа прямо
- Средние дни: без закруглений
- Последний день: слева прямо, справа закруглено
- Один день: закруглено со всех сторон
3. Убраны лишние отступы
- margin-left/right: 0 для соединённых сегментов
- Увеличен padding для стрелок (+2px)
- Высота увеличена до 22px для читаемости
4. Улучшенное позиционирование
- Многодневные события в отдельном слое (z-index: 2)
- Абсолютное позиционирование для пересечений
- Правильные отступы между сегментами
Результат:
✅ Многодневные события визуально связаны
✅ Понятно где начало/середина/конец
✅ Стрелки указывают направление
✅ Сегменты плотно соединены
✅ Улучшенная читаемость