19 Commits

Author SHA1 Message Date
7b08d68141 feat: добавлена визуальная индикация выстрелов на портах
Реализована подсветка портов при выстрелах от ESP:

**Типы подсветки:**
- 🔴 Красная (miss) - выстрел на пустом порту (notshot) или ошибка (shotErr/shotErrA)
- 🟡 Желтая (shot) - начало выстрела (startshot)
- 🟢 Зеленая (hit) - успешный выстрел (shot)

**Изменения:**

1. **useWebSocket.js:**
   - Добавлены команды выстрелов в список системных сообщений
   - shot, startshot, notshot, shotErr, shotErrA

2. **useGamePorts.js (handlePortMessage):**
   - case 'notshot' → highlight: 'miss' (1 сек)
   - case 'startshot' → highlight: 'shot' (2 сек)
   - case 'shot' → highlight: 'hit' (1 сек) + обновление патронов
   - case 'shotErr/shotErrA' → highlight: 'miss' (2 сек)

**Логика:**
- Попытка выстрела БЕЗ игры → красная подсветка 1 сек
- Начало выстрела → желтая подсветка 2 сек
- Успешный выстрел → зеленая подсветка 1 сек
- Ошибка выстрела → красная подсветка 2 сек
- Автоочистка через setTimeout

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 12:50:13 +03:00
5bfa281e63 docs: добавлено руководство по использованию двух версий стилей
Создан подробный STYLES_README.md с:
- Описанием обеих версий (планшеты и Orange Pi)
- Таблицами сравнения производительности
- Инструкциями по переключению версий
- Детальным списком оптимизаций
- Рекомендациями по выбору версии

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 12:28:43 +03:00
6ff1993a12 feat: добавлены оптимизированные стили для Orange Pi + упрощение для планшетов
Создано 2 версии стилей:

1. **Orange Pi версия (GamePort.styles.orangepi.css):**
   - Удалены ВСЕ box-shadow (~35 использований) → 0
   - Удалены 8 анимаций (pulse-ring, pulse-dot, pulse-timer, bounce, highlight-*)
   - Убран backdrop-filter (blur)
   - Упрощены transforms (только критичные)
   - Transitions упрощены до linear (вместо cubic-bezier)
   - Оставлены градиенты (не нагружают GPU)
   - Оставлен только spinner (критичен для UX)
   - Ожидаемый прирост производительности: ~50-60% GPU, 30-40 → 55-60 FPS

2. **Планшетная версия (GamePort.styles.css):**
   - Упрощены box-shadow (уменьшено размытие и прозрачность на 20-30%)
   - 17 изменений теней
   - Убраны тени у таймера
   - Оставлены все анимации

3. **variables.orangepi.css:**
   - Удалены все shadow переменные
   - Упрощены transitions (linear вместо cubic-bezier)
   - Уменьшены базовые отступы для 1080x680

Файлы:
- client/src/components/game/GamePort.styles.orangepi.css (877 строк)
- client/src/styles/variables.orangepi.css (128 строк)
- client/src/components/game/GamePort.styles.css (упрощено)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 12:27:31 +03:00
c8a1aab40a refactor: оптимизация GamePort.styles.css (1032 → 950 строк, -8%)
Удалены:
- Дубликаты стилей (.is-long-press, .game-controls, .active-port)
- Дубликат .game-timer (был определён дважды)
- Устаревшие классы (.port-content, .free-port, .ready-port, .player-info, .player-id, .player-games)
- Комментарии "Удалено" без реального удаления кода
- Неиспользуемые .game-controls .control-btn

Результат: -86 строк кода, улучшена читаемость

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 12:13:05 +03:00
69fde1c88e refactor: рефакторинг HomePage.vue (1314 → 1011 строк, -23%)
Извлечены компоненты:
- OpenShiftModal.vue (237 строк) - форма открытия смены
- useHomePageModals.js (108 строк) - управление состоянием модалов

Изменения:
- Удалены встроенные модалы открытия/закрытия смены
- Удалены неиспользуемые формы (openShiftForm, closeShiftForm)
- Удалены неиспользуемые методы (handleSubmitCloseShift, handleOpenRegularShift, getToyLabel)
- Логика управления модалами вынесена в useHomePageModals

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 11:57:36 +03:00
a8507fc9ad save 2025-10-13 10:46:16 +03:00
563f88c06d save 2025-10-13 10:45:53 +03:00
87c0d2fbf8 style: добавлены responsive стили для планшетов
Добавлены медиа-запросы для планшетов с малой высотой (1080x700):
- GamePort.styles.css: уменьшены отступы для PlayerPort и ActivePort
- GamePorts.vue: уменьшены отступы и gap в сетке портов
- IconButton.vue: уменьшены размеры кнопок для всех размеров

Улучшает отображение интерфейса на планшетах с малой высотой экрана.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 10:39:29 +03:00
09b27b32ab refactor: рефакторинг SharikModal.vue (680 → 250 строк)
Разбил монолитный модал на 4 переиспользуемых компонента:
- ConfirmDialog.vue (172 строки) - универсальный диалог подтверждения
- PrizeSelectDialog.vue (157 строк) - диалог выбора приза
- SharikStatusDisplay.vue (114 строк) - отображение статуса игры
- SharikActions.vue (157 строк) - кнопки управления и информация

Создан composable useSharikDialogs.js (70 строк):
- Управление состоянием всех диалогов
- Методы открытия/закрытия диалогов
- Централизованное управление

## Результаты
- SharikModal.vue: 680 → 250 строк (-63%)
- Создано 4 переиспользуемых компонента
- Создан 1 composable для управления диалогами
- Улучшена читаемость и тестируемость кода
- ConfirmDialog можно использовать в других частях проекта

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 10:15:56 +03:00
ad52de6597 refactor: рефакторинг GameSelectionModal.vue (761 → 222 строки)
Разбил монолитный модал на 3 компонента по шагам:
- CategorySelection.vue (161 строка) - выбор категории игры
- GameSelection.vue (199 строк) - выбор конкретной игры
- PaymentSelection.vue (217 строк) - выбор способа оплаты

Создан composable useGameSelection.js (114 строк):
- Управление состоянием шагов (category/game/payment)
- Навигация между шагами
- Обработка выбора категории/игры/оплаты
- Сброс состояния при закрытии

## Результаты
- GameSelectionModal.vue: 761 → 222 строки (-71%)
- Создано 3 переиспользуемых компонента шагов
- Создан composable для изоляции бизнес-логики
- Улучшена читаемость и тестируемость кода

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 17:46:32 +03:00
d910e05adc refactor: рефакторинг GamePort.vue (762 → 338 строк)
Разбил монолитный компонент GamePort на 3 состояния:
- EmptyPort.vue (75 строк) - пустой порт
- PlayerPort.vue (214 строк) - порт с игроком
- ActiveGamePort.vue (301 строк) - активная игра

Создал 2 composables для логики:
- usePortTimer.js (76 строк) - управление таймером игры
- usePortDragDrop.js (174 строк) - drag & drop и long press

## Результаты
- GamePort.vue: 762 → 338 строк (-56%)
- Создано 3 переиспользуемых компонента состояний
- Создано 2 composable для изоляции логики
- Улучшена читаемость и тестируемость кода

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 17:06:05 +03:00
a7e487d8e6 refactor: масштабный рефакторинг клиентской части
Проведён комплексный рефакторинг для улучшения архитектуры, читаемости и поддерживаемости кода.

## Удалено
- Мусорные Vue-шаблоны (HelloWorld, TheWelcome, WelcomeItem)
- Неиспользуемые иконки из шаблона (5 файлов)
- Устаревшие assets (logo.svg, base.css)
- Монолитный ShiftCloseModal.vue (1053 строки)

## Создано
### Layout компоненты (2 файла)
- AppHeader.vue - шапка приложения
- AppFooter.vue - подвал приложения

### Form компоненты (3 файла, переиспользуемые)
- FormInput.vue - универсальный input
- FormTextarea.vue - универсальная textarea
- EmployeeSelector.vue - выбор сотрудника с dropdown

### ShiftCloseModal секции (5 файлов)
- index.vue - главный компонент (284 строки, -73%)
- FinancesSection.vue - финансовые данные
- ToysSection.vue - учёт игрушек
- SalarySection.vue - зарплаты сотрудников
- ExpensesSection.vue - дополнительные расходы

### Composables (4 файла)
- useShiftCloseForm.js - логика формы закрытия смены
- useShiftFormValidation.js - валидация формы
- usePortTimer.js - таймер игры на порту
- usePortDragDrop.js - drag&drop логика порта

### GamePort начало рефакторинга (1 файл)
- EmptyPort.vue - компонент пустого порта

## Улучшено
- HomePage.vue: 1597 → 1314 строк (-18%)
- Заменены console.log на logger (20 вхождений)
- Исправлены TODO/FIXME (2 места)
- ConfigPage.vue: добавлена реальная проверка ESP статуса

## Результат
- Удалено: 1775 строк
- Добавлено: 148 строк (модульный код)
- Чистое удаление: 1627 строк
- Создано: 13 новых модульных компонентов
- Улучшена архитектура и переиспользуемость кода

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 16:59:37 +03:00
cce024721d выбросил в локалку 2025-10-07 16:39:33 +03:00
d8ee0692b3 анимация для кнопки переноса игр 2025-10-07 15:07:16 +03:00
ea9f2daec4 ГОТОВАЯ КНОПКА МЕНЮ/ВРЕМЕНИ 2025-10-07 12:38:31 +03:00
cae552f8c7 сейв 2025-10-07 10:18:02 +03:00
38e31ffa94 до уезда кнопки 2025-10-02 11:53:57 +03:00
a41e972d38 clear log 2025-10-01 11:54:13 +03:00
3e90269b0b Initial commit: Vue.js тир управления система
- Клиентская часть Vue 3 + Vite
- Серверная часть Node.js + WebSocket
- Система авторизации и смен
- Управление игровыми портами
- Поддержка тем (светлая/темная)
- Адаптивный дизайн

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-19 12:24:22 +03:00