Files
vue-pult/docs/LOGIC_HEADER.md
2025-10-01 11:54:13 +03:00

17 lines
3.2 KiB
Markdown
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.
# Логика работы хедера (AppHeader)
Хедер - верхняя панель приложения. В нём 4 кнопки: "Смена", "Шарик" (запуск игры), "Выключение пульта", "Выход".
**Кнопка "Смена"**:
- Принцип: Клик по кнопке открывает модальное окно ShiftModal. В модале форма с полями: дата смены (input type="date", обязательное), начальный баланс (input type="number", >0), примечания (textarea, опционально). Валидация: дата обязательна, баланс >0. При submit - отправка команды 'open-shift' через WebSocket с данными (date, amount, notes, user info). Закрытие модала, показ уведомления успеха или ошибки. Если нет прав (не оператор) - уведомление "Доступ ограничен".
**Кнопка "Шарик" (запуск игры)**:
- Принцип: Клик по кнопке открывает модальное окно GameSelectionModal. Модал имеет 3 шага: 1) Выбор категории (банки, мишени, беспроигрышные - кнопки с иконками и кол-вом доступных игр). 2) Выбор конкретной игры из списка (фильтр по категории, только активные, не тестовые; показ название, патроны, сложность, цена). 3) Выбор оплаты (наличные или карта). При submit - отправка 'start' через WebSocket с параметрами (line=порт, game=ID, gamerId если есть, isBonus если бонус, paymentType=cash/card, tel=пользовательский телефон, patr=патроны игры). Закрытие модала. Если смена не открыта - перенаправление на открытие смены. Если ESP отключен - ошибка. Если нет прав - уведомление.
**Кнопка "Выключение пульта"**:
- Принцип: Клик по кнопке показывает подтверждение (confirm dialog с текстом "Вы уверены?"). При подтверждении - отправка 'shutdown' через WebSocket. Показ уведомления "Пульт выключен". Если отмена - закрытие диалога.
**Кнопка "Выход"**:
- Принцип: Клик по кнопке очищает auth state (logout), редирект на страницу логина. Показ уведомления "Выход выполнен".
Общая логика хедера: Проверка роли пользователя (оператор/техник/админ). Если нет прав на действие - показ уведомления "Доступ ограничен". Responsive дизайн (flex row), Tailwind стили. Интеграция с useAuth для роли, useNotifications для сообщений.