Реализовано: 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
61 lines
2.0 KiB
Markdown
61 lines
2.0 KiB
Markdown
# 🔧 Исправление проблемы инициализации calendar integration
|
||
|
||
## Проблема
|
||
`window.calendarIntegration` = undefined, но скрипт подключён.
|
||
|
||
## Быстрое решение - выполните в консоли:
|
||
|
||
```javascript
|
||
// Проверка наличия скрипта
|
||
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));
|
||
}
|
||
});
|
||
```
|
||
|
||
## Если скрипт найден, но не работает - вручную загрузите:
|
||
|
||
```javascript
|
||
(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);
|
||
}
|
||
})();
|
||
```
|
||
|
||
## После выполнения проверьте:
|
||
|
||
```javascript
|
||
// Должно вернуть объект, а не undefined
|
||
window.calendarIntegration
|
||
|
||
// Должно показать логи с новой системой
|
||
window.calendarWidget.refetchEvents()
|
||
```
|