Files
hockey_new/README_BUILD175_RU.md

8.4 KiB
Raw Blame History

Build 175 — кнопки титров и язык Mapping

Версия приложения: 2026.09.29.12. Установить поверх build 174. В архиве только 5 изменённых файлов приложения и эта инструкция.

Установка

  1. Остановите приложение и сохраните копии заменяемых файлов.
  2. Распакуйте содержимое архива в корень проекта с заменой файлов, сохраняя вложенные каталоги.
  3. Запустите приложение и обновите страницу браузера через Ctrl+F5.

Файлы настроек, база данных, .env и архивы КХЛ в поставку не включены. Настройки кнопок продолжают храниться в settings/hockey_player_panel_buttons.json. Существующие кнопки и их ID сохраняются. Новый параметр title_text появляется при сохранении кнопки через интерфейс.

Один Input — несколько надписей

  1. Откройте ⚙ рядом с кнопкой + у блока игроков → «Титры блоков».
  2. Создайте кнопки, назначьте им разные ID и одинаковое название vMix Input.
  3. Заполните поле «Надпись в титре» для каждой кнопки. Например:
Кнопка ID Надпись в титре Input
Сезон season СТАТИСТИКА ЗА СЕЗОН Статистика игрока
Карьера career СТАТИСТИКА ЗА КАРЬЕРУ Статистика игрока
Матч match СТАТИСТИКА ЗА МАТЧ Статистика игрока
  1. Сохраните настройки. В Mapping у текстового элемента этого Input выберите «Титры · Нажатая кнопка → Надпись в титре» (title_button.text).
  2. Выберите игрока и нажмите нужную кнопку. Сначала сохраняются её 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.