8.4 KiB
Build 175 — кнопки титров и язык Mapping
Версия приложения: 2026.09.29.12. Установить поверх build 174.
В архиве только 5 изменённых файлов приложения и эта инструкция.
Установка
- Остановите приложение и сохраните копии заменяемых файлов.
- Распакуйте содержимое архива в корень проекта с заменой файлов, сохраняя вложенные каталоги.
- Запустите приложение и обновите страницу браузера через Ctrl+F5.
Файлы настроек, база данных, .env и архивы КХЛ в поставку не включены.
Настройки кнопок продолжают храниться в settings/hockey_player_panel_buttons.json.
Существующие кнопки и их ID сохраняются. Новый параметр title_text появляется при сохранении кнопки через интерфейс.
Один Input — несколько надписей
- Откройте ⚙ рядом с кнопкой + у блока игроков → «Титры блоков».
- Создайте кнопки, назначьте им разные ID и одинаковое название vMix Input.
- Заполните поле «Надпись в титре» для каждой кнопки. Например:
| Кнопка | ID | Надпись в титре | Input |
|---|---|---|---|
| Сезон | season | СТАТИСТИКА ЗА СЕЗОН | Статистика игрока |
| Карьера | career | СТАТИСТИКА ЗА КАРЬЕРУ | Статистика игрока |
| Матч | match | СТАТИСТИКА ЗА МАТЧ | Статистика игрока |
- Сохраните настройки. В Mapping у текстового элемента этого Input выберите «Титры · Нажатая кнопка → Надпись в титре» (
title_button.text). - Выберите игрока и нажмите нужную кнопку. Сначала сохраняются её ID и надпись, затем применяется Mapping, затем Input отправляется в Preview.
Пустое поле «Надпись в титре» передаёт пустую строку и очищает связанный текстовый элемент. Название самой кнопки и подсказка задаются отдельно; режим «Только иконка» работает как прежде. Подсветка показывает последнюю нажатую кнопку в матче, а не состояние эфира vMix. Сохраняется вместе с контекстом матча, в том числе после обновления страницы. На время отправки остальные кнопки титров блокируются, чтобы быстрые нажатия в разных блоках не смешивали надписи.
ID, условия и SQL
| Поле Mapping | Параметр SQL | Значение |
|---|---|---|
title_button.id |
:title_button_id |
ID последней нажатой кнопки |
title_button.label |
:title_button_label |
Название кнопки |
title_button.text |
:title_button_text |
Настроенная надпись |
title_button.panel_id |
:title_button_panel_id |
ID блока |
title_button.input |
:title_button_input |
Название Input |
Можно использовать ID в условиях Mapping или в своём SQL-источнике. Например, один SQL-источник с полями caption_RUS и caption_ENG:
SELECT
CASE :title_button_id
WHEN 'season' THEN 'СТАТИСТИКА ЗА СЕЗОН'
WHEN 'career' THEN 'СТАТИСТИКА ЗА КАРЬЕРУ'
WHEN 'match' THEN 'СТАТИСТИКА ЗА МАТЧ'
ELSE ''
END AS "caption_RUS",
CASE :title_button_id
WHEN 'season' THEN 'SEASON STATISTICS'
WHEN 'career' THEN 'CAREER STATISTICS'
WHEN 'match' THEN 'GAME STATISTICS'
ELSE ''
END AS "caption_ENG"
Если код источника button_caption, в Mapping выберите button_caption.caption с отметкой AUTO. Такая надпись учитывает и кнопку, и выбранный RU/EN. В этом варианте поле «Надпись в титре» кнопки не используется для соответствующего элемента vMix.
Сохранены и открыты для Mapping отдельные поля последней кнопки каждого блока:
player_select.<ID блока>._preview_button_id, _preview_button_label, _preview_button_text, _preview_input.
Глобальные title_button.* удобны для одного общего Input; поля конкретного блока — для независимых Input разных блоков.
Исправление языка
- Mapping использует текущий переключатель RU/EN, даже пока карточка матча ещё содержит прежний язык.
- Запоздавший ответ каталога больше не заменяет более свежий ответ другого языка.
- Стандартные SQL-источники «Матч и команды», «Турнир», «Выбранный игрок», «Выделенный матч» читают нужные языковые столбцы. Ключи полей и связи Mapping сохраняются.
- При первом обращении старые стандартные запросы обновляются, только если их текст совпадает с исходным. Пользовательские SQL-запросы, подписи полей и остальные настройки сохраняются.
- Когда английское значение отсутствует в базе, используется русское. Явно выбранный столбец
*_RUSостаётся русским; для автоматического языка выбирайте поле без суффикса (AUTO). Пользовательский SQL, который напрямую выбирает только*_ru, нужно сделать двуязычным по аналогии с примером выше. - Настроенный вручную текст кнопки сам по себе не переводится. Для двух языков можно использовать показанный SQL.
Проверка
Локально проверены сохранение JSON и повторная загрузка, ID в контексте/SQL, изоляция матчей, смена и очистка надписи, команды SetText с тем же названием Input, английский язык аккаунта при отправке в Agent и миграция только стандартных SQL-запросов. В браузере проверены редактор кнопок, подсветка, сохранение настроек, порядок данных/Mapping/Preview, блокировка повторных нажатий, отказ от Preview при ошибке Mapping, RU/EN со старой карточкой матча и ответы в обратном порядке. Дополнительно пройдены проверки переименования и копирования Mapping. 57 целевых Python-проверок прошли. 6 устаревших проверок предыдущих сборок исключены из итогового прогона: прежний порядок вкладок, версия парсера 2 вместо 3 и тестовые Inputs без названия (старая привязка по ключу). Реальные vMix и рабочая база не подключались: серверные проверки использовали SQLite и имитацию транспорта, браузерные — тестовые API.