BUILD125 — параметры нижней панели + сортировка игроков

This commit is contained in:
2026-08-27 10:26:09 +03:00
parent 92d7927ffa
commit 4218c4e243
3 changed files with 40 additions and 20 deletions

View File

@@ -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() {
<label>Вкладка<select data-quick-selector-field="group_id" data-quick-selector-id="${escapeHtml(selector.id)}">${hockeyPrematchGroupOptions(draftGroups, selector.group_id)}</select></label>
<label>Рядом с кнопкой<select data-quick-selector-field="button_id" data-quick-selector-id="${escapeHtml(selector.id)}">${hockeyQuickPanelButtonOptions(draft, selector.button_id)}</select></label>
<label>Вид<select data-quick-selector-field="style" data-quick-selector-id="${escapeHtml(selector.id)}">${triggerSelectOptions([["segments","Маленькие кнопки"],["select","Выпадающий список"]], selector.style)}</select></label>
<label class="quick-selector-options-field">Варианты <small>значение=подпись; ...</small><input type="text" data-quick-selector-options="${escapeHtml(selector.id)}" value="${escapeHtml(quickPanelSelectorOptionsText(selector))}" placeholder="all=МАТЧ; 1=1; 2=2; 3=3"></label>
<label>По умолчанию<input type="text" maxlength="64" data-quick-selector-field="default_value" data-quick-selector-id="${escapeHtml(selector.id)}" value="${escapeHtml(selector.default_value)}"></label>
<label class="quick-selector-options-field">Варианты <small>значение=подпись; разделитель — точка с запятой</small><input type="text" data-quick-selector-options="${escapeHtml(selector.id)}" value="${escapeHtml(quickPanelSelectorOptionsText(selector))}" placeholder="all=МАТЧ; 1=1; 2=2; 3=3"></label>
<label class="quick-selector-default-field">По умолчанию<input type="text" maxlength="64" data-quick-selector-field="default_value" data-quick-selector-id="${escapeHtml(selector.id)}" value="${escapeHtml(selector.default_value)}"></label>
<button type="button" class="icon-btn danger" data-quick-selector-delete="${escapeHtml(selector.id)}" title="Удалить переключатель">×</button>
</article>`;

View File

@@ -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; }
}