Corp/backend/FIX_INTEGRATION.md
Игорь Надеин 281f0b2bbc feat: современное отображение событий календаря с множественным выбором
Реализовано:

1. Множественный выбор календарей через чекбоксы
   - Заменил <select> на чекбоксы для выбора нескольких календарей
   - События создаются одновременно во всех выбранных календарях
   - При редактировании - обновляется только первый выбранный
   - Цветовые индикаторы для каждого календаря

2. Современный дизайн событий
   - Двухцветная схема: левая граница = цвет календаря, фон = цвет события
   - Полупрозрачный фон события (80%) для лучшей видимости
   - Тени и hover эффекты для объёма
   - Закругленные углы (4px)
   - Плавные анимации (transform + transition)

3. Улучшенное отображение накладывающихся событий
   - dayMaxEvents: автоматически показывать '+N еще'
   - dayMaxEventRows: 4 - максимум 4 строки на день
   - moreLinkClick: 'popover' - красивый popover для остальных
   - eventMaxStack: 3 - до 3 событий в стеке
   - eventOrder: сортировка по началу, длительности, алфавиту

4. Новый CSS файл calendar-improvements.css
   - Современные стили для FullCalendar
   - Улучшенный popover с градиентом
   - Стили для выходных дней (розоватый фон)
   - Hover эффекты на события
   - Анимация fadeInEvent при загрузке
   - Улучшенная читаемость текущего дня
   - Адаптивность для мобильных устройств
   - Кастомные scrollbar для списков

5. Передача цвета календаря в события
   - calendar_color добавляется в extendedProps
   - Используется __calendar из интеграции
   - Отдельная обработка eventColor и calendarColor

6. Визуальные улучшения
   - Текст события: font-weight 500, line-height 1.3
   - Отступы: paddingLeft 6px (с цветом календаря)
   - Тень текста для читаемости на любом фоне
   - Паттерн для ежегодных событий (диагональные полосы)
   - Индикатор текущего дня: синий круг с белым текстом

Результат:
✅ События визуально различимы по календарям (левая граница)
✅ Сохранён индивидуальный цвет события (основной фон)
✅ Множество событий в день отображается компактно (+N еще)
✅ Современный Material Design стиль
✅ Плавные анимации и hover эффекты
✅ Улучшенная читаемость и UX
2026-02-11 12:52:25 +03:00

2.0 KiB
Raw Blame History

🔧 Исправление проблемы инициализации calendar integration

Проблема

window.calendarIntegration = undefined, но скрипт подключён.

Быстрое решение - выполните в консоли:

// Проверка наличия скрипта
const scripts = Array.from(document.querySelectorAll('script[type="module"]'));
console.log('Module scripts found:', scripts.length);
scripts.forEach((s, i) => {
  if (s.textContent.includes('calendar')) {
    console.log(`Script ${i}:`, s.textContent.substring(0, 200));
  }
});

Если скрипт найден, но не работает - вручную загрузите:

(async function manualInit() {
  try {
    console.log('🔄 Manually loading calendar integration...');

    // Импорт модуля
    const module = await import('/static/js/components/calendarWidgetIntegration.js');
    console.log('✅ Module loaded:', module);

    // Инициализация
    const { integrateCalendarManager } = module;
    const integration = integrateCalendarManager(window.calendarWidget);

    if (integration) {
      window.calendarIntegration = integration;
      console.log('✅ Integration initialized successfully!');
      console.log('Calendars:', integration.getCalendars().length);
      console.log('Visible:', integration.getVisibleCalendarIds());

      // Перезагрузить события
      if (window.calendarWidget.refetchEvents) {
        window.calendarWidget.refetchEvents();
        console.log('🔄 Events refetched with new integration');
      }
    }
  } catch (error) {
    console.error('❌ Manual init failed:', error);
  }
})();

После выполнения проверьте:

// Должно вернуть объект, а не undefined
window.calendarIntegration

// Должно показать логи с новой системой
window.calendarWidget.refetchEvents()