deeily 8b9936df01 dvr_admin v2.2.0: раздел «Воспроизведение» — мульти-канал + избранное
Новый пункт sidebar «Воспроизведение» с кастомным плеером архива по образцу
iVMS-4200. Виден всем авторизованным, DVR фильтруются по dvr_access/concept_access.

Фаза 1 (single-pane MVP):
- Роут /playback: дерево DVR с availability dots, MJPEG video, таймлайн
  из /api/dvr/<id>/recordings, кастомный календарь (сегодня=зелёный,
  дни с записями=синий, выбранный=оранжевая обводка)
- Центрированные контролы: ⏮ ⏸ ⏭ | « ×1 » | время
- Live кнопка слева (красная с pulsing dot), Clip popup с SSE прогрессом,
  REC кнопка (логика идентична существующей view_dvr recToggle)
- Пауза сохраняет кадр через canvas-capture + snap fallback

Фаза 2 (multi-pane grid):
- Рефакторинг state в panes[] с layout 1/4/9/16 (6/8/13 disabled)
- Клик камеры → назначается в активный/первый пустой pane
- Sub-stream автоматически при layout>1 (снижение битрейта ×4-8)
- Новые камеры стартуют в live; архив — кликом по таймлайну
- Sync play/pause/seek/speed/date между всеми pane'ами
- Speed resync: рестарт всех pane'ов от master ISO + /speed broadcast

Избранное (saved grid views):
- Таблица user_pb_views + API GET/POST/PUT/DELETE /api/playback/views
- ★ кнопка popup для сохранения, секция «Избранное» в дереве над DVR'ами
- Клик применяет layout+камеры, активное подсвечено оранжевым

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 00:44:38 +03:00
Description
No description provided
14 MiB
Languages
Python 97.4%
C 2.2%
Dockerfile 0.3%