BUILD125 — параметры нижней панели + сортировка игроков
This commit is contained in:
2
app.py
2
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
|
from khl_site.khl_data_center import APP as khl_site_app
|
||||||
|
|
||||||
BASE_DIR = Path(__file__).resolve().parent
|
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.26.1"
|
||||||
# compatibility: BUILD_VERSION = "2026.08.25.1"
|
# compatibility: BUILD_VERSION = "2026.08.25.1"
|
||||||
# compatibility: BUILD_VERSION = "2026.08.24.15"
|
# compatibility: BUILD_VERSION = "2026.08.24.15"
|
||||||
|
|||||||
@@ -6833,29 +6833,17 @@ function openTimerQuickEditor(focusActionId = "") {
|
|||||||
const limit = Math.max(1, Number(props.rosterLimit) || 40);
|
const limit = Math.max(1, Number(props.rosterLimit) || 40);
|
||||||
const players = (Array.isArray(rows) ? rows : [])
|
const players = (Array.isArray(rows) ? rows : [])
|
||||||
.map((row, index) => normalizeHockeyPlayer(component, row, side, index));
|
.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) => {
|
players.sort((left, right) => {
|
||||||
if (hasLineData) {
|
const leftNumber = String(left.number || "").replace(/^#/, "").trim();
|
||||||
const lineValue = (player) => {
|
const rightNumber = String(right.number || "").replace(/^#/, "").trim();
|
||||||
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(/^#/, "");
|
|
||||||
if (!leftNumber && rightNumber) return 1;
|
if (!leftNumber && rightNumber) return 1;
|
||||||
if (leftNumber && !rightNumber) return -1;
|
if (leftNumber && !rightNumber) return -1;
|
||||||
return leftNumber.localeCompare(rightNumber, undefined, {
|
return leftNumber.localeCompare(rightNumber, undefined, {
|
||||||
numeric: true,
|
numeric: true,
|
||||||
sensitivity: "base",
|
sensitivity: "base",
|
||||||
}) || left.name.localeCompare(right.name);
|
}) || left.name.localeCompare(right.name, "ru", { numeric: true, sensitivity: "base" });
|
||||||
});
|
});
|
||||||
return players.slice(0, limit);
|
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="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="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>Вид<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 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-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>
|
<button type="button" class="icon-btn danger" data-quick-selector-delete="${escapeHtml(selector.id)}" title="Удалить переключатель">×</button>
|
||||||
</article>`;
|
</article>`;
|
||||||
|
|
||||||
|
|||||||
@@ -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-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-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}
|
.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; }
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user