Corp/backend/templates/includes/components/calendar_desktop.html
Игорь Надеин 28e2f1615f feat: реализован drag & drop для перемещения событий между календарями
- Создан модуль calendarEventDragDrop.js с классами DragDropState и CalendarUtils
- Реализовано перетаскивание событий между календарями через модальное окно
- Добавлена кнопка 'Переместить все' для массового перемещения
- Модальное окно отображает источник и цель перемещения
- Поддержка legacy-календарей (company/department/personal)
- Добавлены стили для подсветки drop-target (папки и календари)
- Backend: исправлена обработка null значений в serializer
- Backend: добавлен endpoint list_raw для получения немодерируемых событий
- Использованы стандартные Bootstrap стили для модалов
- Исправлено всплытие событий dragover/drop (stopPropagation)
- Эмодзи иконки для типов календарей (����)
- Toast уведомления об успехе/ошибках перемещения
2026-02-12 15:59:53 +03:00

60 lines
2.3 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{# Десктопная версия календаря - правая колонка #}
<div class="rightbar d-none d-lg-block">
<div class="card rightbar-card" data-dept-id="{{ dept_ids|default:'' }}">
<div class="card-header">
<button
class="btn btn-sm btn-outline-primary w-100"
type="button"
data-bs-toggle="collapse"
data-bs-target="#calendarListCollapse"
aria-expanded="false"
aria-controls="calendarListCollapse"
title="Список календарей"
>
<i class="bi bi-list-check"></i>
<span class="ms-1">Календари</span>
</button>
</div>
{# Список календарей (сворачиваемый) - унифицированный список legacy + новые #}
<div class="collapse" id="calendarListCollapse">
<div class="card-body border-bottom py-2">
<div class="d-flex align-items-center justify-content-between mb-2">
<small class="text-muted">
<i class="bi bi-info-circle me-1"></i>
Выберите календари для отображения
</small>
<button
class="btn btn-sm btn-outline-success"
type="button"
data-action="create-calendar"
title="Создать календарь"
>
<i class="bi bi-calendar-plus"></i>
<span class="ms-1">Создать</span>
</button>
</div>
<div id="calendarListContainer" class="calendar-list-container" style="max-height: 250px; overflow-y: auto;">
{# Здесь будет JS-генерируемый список календарей (legacy + новые) #}
<div class="text-center py-3">
<div class="spinner-border spinner-border-sm text-primary" role="status">
<span class="visually-hidden">Загрузка...</span>
</div>
</div>
</div>
</div>
</div>
<div class="card-body">
<div id="calendarRight" class="calendar-wrap"></div>
<div class="week-strip-header">
<span><i class="bi-calendar-week me-1"></i> На этой неделе</span>
<span id="weekRange" class="text-muted"></span>
</div>
<div id="weekList" class="week-vertical" aria-live="polite"></div>
</div>
</div>
</div>