commentary:
поправил отображение колонок для левого спортсмена в сезон/карьера и добавил галочки отображения нужных колонок
This commit is contained in:
128
get_data.py
128
get_data.py
@@ -4177,6 +4177,11 @@ async def commentary():
|
||||
<meta charset="utf-8" />
|
||||
<title>Комментаторский дашборд</title>
|
||||
<style>
|
||||
.cmp-head th {{
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
}}
|
||||
/* подсветка ячеек PTS/Foul при обновлении (5 секунд) */
|
||||
.cell-updated {{
|
||||
background-color: #00ff00 !important;
|
||||
@@ -4965,29 +4970,39 @@ function renderPlayerHeader(p) {{
|
||||
html += renderPlayerHeader(rightP || {{}});
|
||||
html += "</div>";
|
||||
|
||||
html += "<div class='compare-cols-controls' style='margin:8px 0 10px;display:flex;flex-wrap:wrap;gap:12px;align-items:center;'>";
|
||||
html += " <span style='color:#bbb;'>Колонки:</span>";
|
||||
html += " <label><input type='checkbox' class='cmp-col-toggle' data-col='cTot'> Карьера тотал</label>";
|
||||
html += " <label><input type='checkbox' class='cmp-col-toggle' data-col='cAvg'> Карьера сред.</label>";
|
||||
html += " <label><input type='checkbox' class='cmp-col-toggle' data-col='sTot'> Сезон тотал</label>";
|
||||
html += " <label><input type='checkbox' class='cmp-col-toggle' data-col='sAvg'> Сезон сред.</label>";
|
||||
html += "</div>";
|
||||
|
||||
// --- СТАРАЯ таблица: 4 колонки слева + 4 справа ---
|
||||
html += "<table class='details-wide-table' style='width:100%;border-collapse:collapse;'>";
|
||||
|
||||
// шапка таблицы
|
||||
html += "<thead>";
|
||||
html += "<thead class='cmp-head'>";
|
||||
html += "<tr>";
|
||||
html += "<th colspan='4' style='text-align:center;border-bottom:2px solid #333;'>Левый игрок</th>";
|
||||
html += "<th id='cmp-left-title' colspan='4' style='text-align:center;border-bottom:2px solid #333;'>Левый игрок</th>";
|
||||
html += "<th></th>";
|
||||
html += "<th colspan='4' style='text-align:center;border-bottom:2px solid #333;'>Правый игрок</th>";
|
||||
html += "<th id='cmp-right-title' colspan='4' style='text-align:center;border-bottom:2px solid #333;'>Правый игрок</th>";
|
||||
html += "</tr>";
|
||||
|
||||
html += "<tr>";
|
||||
html += "<th>Сезон (сред.)</th>";
|
||||
html += "<th>Сезон (тотал)</th>";
|
||||
html += "<th>Карьера (сред.)</th>";
|
||||
html += "<th>Карьера (тотал)</th>";
|
||||
// ЛЕВЫЙ (порядок: Карьера тотал, Карьера сред, Сезон тотал, Сезон сред)
|
||||
html += "<th class='cmp-col col-cTot'>Карьера (тотал)</th>";
|
||||
html += "<th class='cmp-col col-cAvg'>Карьера (сред.)</th>";
|
||||
html += "<th class='cmp-col col-sTot'>Сезон (тотал)</th>";
|
||||
html += "<th class='cmp-col col-sAvg'>Сезон (сред.)</th>";
|
||||
|
||||
html += "<th>Показатель</th>";
|
||||
|
||||
html += "<th>Сезон (сред.)</th>";
|
||||
html += "<th>Сезон (тотал)</th>";
|
||||
html += "<th>Карьера (сред.)</th>";
|
||||
html += "<th>Карьера (тотал)</th>";
|
||||
// ПРАВЫЙ (можешь оставить свой порядок или сделать такой же — не важно для скрытия)
|
||||
html += "<th class='cmp-col col-sAvg'>Сезон (сред.)</th>";
|
||||
html += "<th class='cmp-col col-sTot'>Сезон (тотал)</th>";
|
||||
html += "<th class='cmp-col col-cAvg'>Карьера (сред.)</th>";
|
||||
html += "<th class='cmp-col col-cTot'>Карьера (тотал)</th>";
|
||||
html += "</tr>";
|
||||
html += "</thead>";
|
||||
|
||||
@@ -5000,20 +5015,21 @@ function renderPlayerHeader(p) {{
|
||||
|
||||
html += "<tr>";
|
||||
|
||||
// левый
|
||||
html += "<td style='text-align:center;'>" + safe(L.sAvg) + "</td>";
|
||||
html += "<td style='text-align:center;'>" + safe(L.sTot) + "</td>";
|
||||
html += "<td style='text-align:center;'>" + safe(L.cAvg) + "</td>";
|
||||
html += "<td style='text-align:center;'>" + safe(L.cTot) + "</td>";
|
||||
// левый (тот же порядок что в шапке)
|
||||
html += "<td class='cmp-col col-cTot' style='text-align:center;'>" + safe(L.cTot) + "</td>";
|
||||
html += "<td class='cmp-col col-cAvg' style='text-align:center;'>" + safe(L.cAvg) + "</td>";
|
||||
html += "<td class='cmp-col col-sTot' style='text-align:center;'>" + safe(L.sTot) + "</td>";
|
||||
html += "<td class='cmp-col col-sAvg' style='text-align:center;'>" + safe(L.sAvg) + "</td>";
|
||||
|
||||
// показатель
|
||||
html += "<td style='text-align:center;font-weight:600;'>" + safe(base[i].label || "") + "</td>";
|
||||
|
||||
// правый
|
||||
html += "<td style='text-align:center;'>" + safe(R.sAvg) + "</td>";
|
||||
html += "<td style='text-align:center;'>" + safe(R.sTot) + "</td>";
|
||||
html += "<td style='text-align:center;'>" + safe(R.cAvg) + "</td>";
|
||||
html += "<td style='text-align:center;'>" + safe(R.cTot) + "</td>";
|
||||
// правый (как у тебя было)
|
||||
html += "<td class='cmp-col col-sAvg' style='text-align:center;'>" + safe(R.sAvg) + "</td>";
|
||||
html += "<td class='cmp-col col-sTot' style='text-align:center;'>" + safe(R.sTot) + "</td>";
|
||||
html += "<td class='cmp-col col-cAvg' style='text-align:center;'>" + safe(R.cAvg) + "</td>";
|
||||
html += "<td class='cmp-col col-cTot' style='text-align:center;'>" + safe(R.cTot) + "</td>";
|
||||
|
||||
|
||||
html += "</tr>";
|
||||
}}
|
||||
@@ -5029,10 +5045,80 @@ function renderPlayerHeader(p) {{
|
||||
// Всегда рисуем вертикальную сравнительную таблицу.
|
||||
// Если один из игроков не выбран — его половина будет пустой.
|
||||
details.innerHTML = renderPlayersComparison(selectedLeft, selectedRight);
|
||||
if (window.applyCompareColsUI) window.applyCompareColsUI();
|
||||
}} else {{
|
||||
details.innerHTML = '<div class="meta">Кликни по фамилии игрока, чтобы показать сезон/карьеру.</div>';
|
||||
}}
|
||||
}}
|
||||
|
||||
function getCompareColsState() {{
|
||||
// по умолчанию все включены
|
||||
var def = {{ cTot: true, cAvg: true, sTot: true, sAvg: true }};
|
||||
try {{
|
||||
var raw = localStorage.getItem("commentary_compare_cols");
|
||||
if (!raw) return def;
|
||||
var obj = JSON.parse(raw);
|
||||
return Object.assign(def, obj || {{}});
|
||||
}} catch (e) {{
|
||||
return def;
|
||||
}}
|
||||
}}
|
||||
|
||||
function saveCompareColsState(state) {{
|
||||
localStorage.setItem("commentary_compare_cols", JSON.stringify(state || {{}}));
|
||||
}}
|
||||
|
||||
function applyCompareColsUI() {{
|
||||
// навешиваем чекбоксы и применяем видимость колонок
|
||||
var state = getCompareColsState();
|
||||
|
||||
// синхронизируем чекбоксы
|
||||
var toggles = document.querySelectorAll(".cmp-col-toggle");
|
||||
for (var i = 0; i < toggles.length; i++) {{
|
||||
var cb = toggles[i];
|
||||
var key = cb.getAttribute("data-col");
|
||||
cb.checked = !!state[key];
|
||||
cb.onchange = function () {{
|
||||
var k = this.getAttribute("data-col");
|
||||
var s = getCompareColsState();
|
||||
s[k] = !!this.checked;
|
||||
saveCompareColsState(s);
|
||||
applyCompareColsVisibility(s);
|
||||
}};
|
||||
}}
|
||||
|
||||
applyCompareColsVisibility(state);
|
||||
}}
|
||||
|
||||
function applyCompareColsVisibility(state) {{
|
||||
state = state || getCompareColsState();
|
||||
|
||||
// 1) скрыть/показать сами th/td
|
||||
["cTot","cAvg","sTot","sAvg"].forEach(function (k) {{
|
||||
var show = !!state[k];
|
||||
var els = document.querySelectorAll(".cmp-col.col-" + k);
|
||||
for (var i = 0; i < els.length; i++) {{
|
||||
els[i].style.display = show ? "table-cell" : "none";
|
||||
}}
|
||||
}});
|
||||
|
||||
// 2) поправить colspan у "Левый/Правый"
|
||||
var visibleCount = ["cTot","cAvg","sTot","sAvg"].reduce(function (acc, k) {{
|
||||
return acc + (state[k] ? 1 : 0);
|
||||
}}, 0);
|
||||
|
||||
// чтобы совсем не схлопывалось, если всё сняли
|
||||
if (visibleCount < 1) visibleCount = 1;
|
||||
|
||||
var leftTitle = document.getElementById("cmp-left-title");
|
||||
var rightTitle = document.getElementById("cmp-right-title");
|
||||
if (leftTitle) leftTitle.colSpan = visibleCount;
|
||||
if (rightTitle) rightTitle.colSpan = visibleCount;
|
||||
}}
|
||||
|
||||
// чтобы можно было вызвать после перерендера
|
||||
window.applyCompareColsUI = applyCompareColsUI;
|
||||
|
||||
|
||||
// выбор/снятие выбора игрока
|
||||
function selectPlayer(teamKey, pid, noScroll, noSave) {{
|
||||
|
||||
Reference in New Issue
Block a user