Corp/backend/CONSOLE_DEBUG_COMMANDS.md
Игорь Надеин f8a8b3b2f2 fix(calendar): improve integration initialization and fallback to legacy mode
- Fixed calendar_scripts.html to wait for DOM ready before initialization
- Added retry logic if widget not found on first attempt
- Changed integration fallback: show ALL events when no calendars configured
- Changed behavior: if no calendars selected, show all events (legacy mode)
- This ensures backward compatibility with existing events

User feedback: Integration wasn't initializing on page load, button '+' didn't work.
Solution: Auto-init with retry + always show events (no empty state).
2026-02-11 11:26:25 +03:00

6.1 KiB
Raw Blame History

🔍 Команды для отладки календаря через консоль браузера

Откройте консоль браузера (F12 → Console) и выполните эти команды:

1️⃣ Проверить наличие интеграции

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

Ожидаемый результат:

{
  fetchEventsForVisibleCalendars: ƒ,
  getVisibleCalendarIds: ƒ,
  getCalendars: ƒ,
  setVisibleCalendars: ƒ,
  refresh: ƒ,
  instances: {manager: {...}, modal: {...}, widget: {...}}
}

Если undefined → интеграция не инициализировалась!


2️⃣ Проверить виджет календаря

window.calendarWidget

Должен вернуть объект FullCalendar


3️⃣ Проверить список календарей

// Если интеграция работает:
window.calendarIntegration.getCalendars()

// Должно вернуть массив календарей:
// [{id: 1, title: "Personal", color: "#0d6efd", ...}, ...]

4️⃣ Проверить видимые календари

window.calendarIntegration.getVisibleCalendarIds()

// Должно вернуть массив ID: [1, 2, 3]

5️⃣ Вручную загрузить события

// Попробовать загрузить события для видимых календарей
const start = new Date('2026-02-01');
const end = new Date('2026-02-28');

window.calendarIntegration.fetchEventsForVisibleCalendars(start, end)
  .then(events => {
    console.log('✅ Events loaded:', events.length);
    console.table(events);
  })
  .catch(err => {
    console.error('❌ Error:', err);
  });

6️⃣ Проверить, загружен ли скрипт интеграции

// Проверить, есть ли в DOM скрипт
document.querySelector('script[src*="calendarWidgetIntegration"]')

// Должен вернуть <script> элемент, если файл подключен

7️⃣ Вручную инициализировать интеграцию

Если интеграция не загрузилась автоматически, попробуйте вручную:

// 1. Импортировать модуль (если ES6 modules работают)
import('/static/js/components/calendarWidgetIntegration.js')
  .then(module => {
    const { integrateCalendarManager } = module;
    const integration = integrateCalendarManager(window.calendarWidget);
    window.calendarIntegration = integration;
    console.log('✅ Integration manually initialized');
  })
  .catch(err => console.error('❌ Import failed:', err));

8️⃣ Перезагрузить события календаря

// После того как интеграция инициализирована
if (window.calendarWidget && window.calendarWidget.refetchEvents) {
  window.calendarWidget.refetchEvents();
  console.log('🔄 Events refetched');
}

9️⃣ Проверить контейнер списка календарей

// Проверить, существует ли контейнер
const container = document.getElementById('calendarListContainer');
console.log('Container exists:', !!container);
console.log('Container HTML:', container?.innerHTML.substring(0, 200));

🔟 Проверить модальное окно

// Проверить, есть ли модальное окно
const modal = document.getElementById('calendarManageModal');
console.log('Modal exists:', !!modal);

// Попробовать открыть модальное окно
if (window.calendarIntegration?.instances?.modal) {
  window.calendarIntegration.instances.modal.openForCreate();
}

🐛 Диагностика проблемы

Выполните все команды по порядку и скопируйте результаты. Это поможет понять, на каком этапе происходит сбой:

console.log('=== Calendar Integration Debug ===');
console.log('1. calendarIntegration:', typeof window.calendarIntegration);
console.log('2. calendarWidget:', typeof window.calendarWidget);
console.log('3. Container:', !!document.getElementById('calendarListContainer'));
console.log('4. Modal:', !!document.getElementById('calendarManageModal'));
console.log('5. Create button:', !!document.querySelector('[data-action="create-calendar"]'));
console.log('=================================');

🔧 Если интеграция undefined

Проверьте, загружается ли файл calendar_scripts.html:

// Найти все script теги с calendar
Array.from(document.querySelectorAll('script[type="module"]'))
  .filter(s => s.textContent.includes('calendar'))
  .forEach(s => console.log('Found:', s.textContent.substring(0, 100)));

📊 Полный отчёт о состоянии

Скопируйте и выполните весь блок:

(function debugCalendar() {
  const report = {
    integration: typeof window.calendarIntegration,
    widget: typeof window.calendarWidget,
    container: !!document.getElementById('calendarListContainer'),
    modal: !!document.getElementById('calendarManageModal'),
    createButton: !!document.querySelector('[data-action="create-calendar"]'),
    scripts: Array.from(document.querySelectorAll('script[type="module"]')).length,
    errors: []
  };
  
  if (window.calendarIntegration) {
    try {
      report.calendars = window.calendarIntegration.getCalendars().length;
      report.visibleIds = window.calendarIntegration.getVisibleCalendarIds();
    } catch (e) {
      report.errors.push('Error accessing integration: ' + e.message);
    }
  }
  
  console.table(report);
  return report;
})();

Выполните команды и покажите результаты! 🔍