From 4218c4e2434311d96d1f0f29621f708476d0933d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=AE=D1=80=D0=B8=D0=B9=20=D0=A7=D0=B5=D1=80=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=BA=D0=BE?= Date: Thu, 27 Aug 2026 10:26:09 +0300 Subject: [PATCH] =?UTF-8?q?BUILD125=20=E2=80=94=20=D0=BF=D0=B0=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D1=80=D1=8B=20=D0=BD=D0=B8=D0=B6=D0=BD=D0=B5?= =?UTF-8?q?=D0=B9=20=D0=BF=D0=B0=D0=BD=D0=B5=D0=BB=D0=B8=20+=20=D1=81?= =?UTF-8?q?=D0=BE=D1=80=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=B8?= =?UTF-8?q?=D0=B3=D1=80=D0=BE=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 2 +- ui_builder/static/app.js | 26 +++++++------------------- ui_builder/static/styles.css | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 20 deletions(-) diff --git a/app.py b/app.py index 04e40fd..fbe78b6 100644 --- a/app.py +++ b/app.py @@ -29,7 +29,7 @@ from ui_builder import install_ui_builder from khl_site.khl_data_center import APP as khl_site_app BASE_DIR = Path(__file__).resolve().parent -BUILD_VERSION = "2026.08.26.11" +BUILD_VERSION = "2026.08.27.1" # compatibility: BUILD_VERSION = "2026.08.26.1" # compatibility: BUILD_VERSION = "2026.08.25.1" # compatibility: BUILD_VERSION = "2026.08.24.15" diff --git a/ui_builder/static/app.js b/ui_builder/static/app.js index a27183f..c8a8017 100644 --- a/ui_builder/static/app.js +++ b/ui_builder/static/app.js @@ -6833,29 +6833,17 @@ function openTimerQuickEditor(focusActionId = "") { const limit = Math.max(1, Number(props.rosterLimit) || 40); const players = (Array.isArray(rows) ? rows : []) .map((row, index) => normalizeHockeyPlayer(component, row, side, index)); - const hasLineData = players.some((player) => String(player.line || "").trim()); + // BUILD125: the main “Игра” roster is always a jersey-number list. + // Line/five ordering belongs only to the dedicated “Пятёрки” workspace. players.sort((left, right) => { - if (hasLineData) { - const lineValue = (player) => { - const raw = String(player.line || "").trim(); - if (!raw) return 10000; - const number = Number(raw); - return Number.isFinite(number) ? number : 9000; - }; - const lineDiff = lineValue(left) - lineValue(right); - if (lineDiff) return lineDiff; - const leftOrder = Number(left.lineSortOrder || 0) || 10000; - const rightOrder = Number(right.lineSortOrder || 0) || 10000; - if (leftOrder !== rightOrder) return leftOrder - rightOrder; - } - const leftNumber = String(left.number || "").replace(/^#/, ""); - const rightNumber = String(right.number || "").replace(/^#/, ""); + const leftNumber = String(left.number || "").replace(/^#/, "").trim(); + const rightNumber = String(right.number || "").replace(/^#/, "").trim(); if (!leftNumber && rightNumber) return 1; if (leftNumber && !rightNumber) return -1; return leftNumber.localeCompare(rightNumber, undefined, { numeric: true, sensitivity: "base", - }) || left.name.localeCompare(right.name); + }) || left.name.localeCompare(right.name, "ru", { numeric: true, sensitivity: "base" }); }); return players.slice(0, limit); } @@ -8888,8 +8876,8 @@ function openHockeyPrematchButtonsEditor() { - - + + `; diff --git a/ui_builder/static/styles.css b/ui_builder/static/styles.css index dc72e35..92fa3ff 100644 --- a/ui_builder/static/styles.css +++ b/ui_builder/static/styles.css @@ -7805,3 +7805,35 @@ body.hockey-navigation-open .runtime-viewport.has-hockey-pbp { gap: 14px !import .hockey-line-order{display:grid;place-items:center;width:22px;height:22px;border:1px solid rgba(84,229,196,.34);border-radius:999px;color:#07130f;background:#54e5c4;font-size:9px;font-weight:950;font-variant-numeric:tabular-nums} .hockey-line-card.is-unassigned .hockey-line-player{grid-template-columns:10px 30px minmax(0,1fr) auto} .hockey-lines-empty{position:absolute;inset:0;display:grid;place-content:center;gap:6px;color:#7890a8;text-align:center}.hockey-lines-empty strong{color:#d9e8f6;font-size:17px}.hockey-lines-empty span{font-size:9px} + + +/* BUILD125 — visible lower-panel selector parameters. + Keep the option/value editor inside the card instead of clipping it past the right edge. */ +.prematch-editor-selector-row { + grid-template-columns: 28px 28px 92px minmax(160px,1fr) minmax(125px,.78fr) minmax(140px,.82fr) minmax(190px,1.05fr) 150px 34px; + align-items: end; +} +.prematch-editor-selector-row .quick-selector-options-field { + grid-column: 4 / 8; + min-width: 0; +} +.prematch-editor-selector-row .quick-selector-options-field input { + width: 100%; + min-width: 0; +} +.prematch-editor-selector-row .quick-selector-default-field { + grid-column: 8 / 9; + min-width: 0; +} +@media (max-width: 1350px) { + .prematch-editor-selector-row { + grid-template-columns: 28px 28px 92px repeat(3,minmax(145px,1fr)) 34px; + } + .prematch-editor-selector-row .quick-selector-options-field { grid-column: 4 / 7; } + .prematch-editor-selector-row .quick-selector-default-field { grid-column: 4 / 6; } +} +@media (max-width: 760px) { + .prematch-editor-selector-row { grid-template-columns: 1fr; } + .prematch-editor-selector-row .quick-selector-options-field, + .prematch-editor-selector-row .quick-selector-default-field { grid-column: auto; } +}