Игорь Надеин 417fda790d feat: полная интеграция селектора календарей в создание событий
Реализовано:
1. Селектор календаря в форме создания события
   - Заменил статический текст 'Календарь: Компания' на <select>
   - Показывает legacy календари (Компания, Личный, Отделы)
   - Показывает новые Calendar записи из БД
   - Разделитель между legacy и новыми календарями

2. Функция populateCalendarSelector()
   - Динамическое заполнение селектора при открытии формы
   - Использует window.calendarIntegration.calendars
   - Фильтрует legacy календари (startsWith('legacy-'))
   - Устанавливает значение по умолчанию по state.type

3. Обновлена логика создания/редактирования событий
   - Убран старый код с state.type (personal/dept/company)
   - Новая логика читает target_calendar из формы:
     * 'company' → без доп. параметров (общие события)
     * 'personal' → employee_id из meta[name='user-id']
     * 'dept-{id}' → department_id
     * numeric ID → calendar_id (новые календари)
   - Поддержка смешанных ID (string для legacy, int для новых)
   - Работает как для POST (создание), так и для PATCH (редактирование)

4. При редактировании события
   - Автоматическое определение календаря из data:
     * data.calendar_id → numeric ID
     * data.employee_id → 'personal'
     * data.department_id → 'dept-{id}'
     * иначе → 'company'
   - Селектор устанавливается в правильное положение

Результат:
✅ События можно создавать в любом календаре (legacy + новые)
✅ События можно редактировать и перемещать между календарями
✅ Сохранение calendar_id в БД для новых календарей
✅ Обратная совместимость с legacy системой (employee_id/department_id)
✅ UI с иконками � для новых календарей
2026-02-11 12:41:43 +03:00
..
2025-12-08 07:56:53 +03:00

Static Assets - Custom Bootstrap

Этот каталог содержит статические файлы проекта с кастомизированным Bootstrap.

Структура

static/
├── css/                    # Скомпилированные CSS файлы
│   ├── bootstrap-custom.css   # Кастомный Bootstrap (генерируется)
│   ├── variables.css          # CSS переменные проекта
│   └── components/            # Компоненты приложения
├── scss/                   # SCSS исходники
│   └── custom-bootstrap.scss  # Конфигурация Bootstrap
├── node_modules/           # npm зависимости (игнорируется в git)
└── package.json            # npm конфигурация

Настройка окружения

1. Установка Node.js (если еще не установлен)

winget install OpenJS.NodeJS.LTS

2. Установка зависимостей

cd backend/static
npm install

Разработка

Компиляция Bootstrap

Однократная сборка:

npm run build

Режим разработки (автоматическая пересборка при изменениях):

npm run dev

Изменение системы отступов

Все настройки отступов находятся в файле scss/custom-bootstrap.scss:

// Базовая шкала отступов (8px grid)
$spacers: (
  0: 0,           // 0px
  1: 0.5rem,      // 8px  - var(--space-1)
  2: 1rem,        // 16px - var(--space-2)
  3: 1.5rem,      // 24px - var(--space-3)
  4: 2rem,        // 32px - var(--space-4)
  5: 3rem,        // 48px - var(--space-5)
);

После изменений запустите:

npm run build

Система отступов

Проект использует унифицированную 8px сетку:

  • --space-1 (0.5rem / 8px) - минимальный отступ
  • --space-2 (1rem / 16px) - стандартный отступ
  • --space-3 (1.5rem / 24px) - секции
  • --space-4 (2rem / 32px) - блоки
  • --space-5 (3rem / 48px) - большие разделители

Bootstrap классы

Все Bootstrap utility классы теперь используют нашу сетку:

  • .p-1, .m-1 = 8px
  • .p-2, .m-2 = 16px
  • .p-3, .m-3 = 24px
  • .p-4, .m-4 = 32px
  • .p-5, .m-5 = 48px

То же самое для .px-*, .py-*, .mx-*, .my-*, .gap-* и т.д.

Компоненты Bootstrap

Все компоненты настроены на использование нашей системы:

  • Cards → padding: 16px
  • Buttons → padding: 8px 16px
  • Forms → padding: 8px 16px
  • Modals → padding: 16px
  • Alerts → padding: 16px
  • и т.д.

Troubleshooting

Проблема: Изменения в SCSS не применяются

Решение:

  1. Проверьте, что npm run build завершился успешно
  2. Очистите кэш браузера (Ctrl+Shift+R)
  3. Проверьте, что в base.html подключен bootstrap-custom.css

Проблема: npm команды не работают

Решение:

# Добавьте Node.js в PATH для текущей сессии
export PATH="/c/Program Files/nodejs:$PATH"

# Или перезапустите терминал после установки Node.js

Дополнительная настройка

Для более глубокой кастомизации Bootstrap см. документацию: