fixes for fucking updates

This commit is contained in:
itten
2026-08-02 18:39:44 +03:00
parent a7c9da6ecb
commit d111be1ad8
4 changed files with 277 additions and 41 deletions
+22 -14
View File
@@ -85,19 +85,21 @@
} }
/* ================================================================== /* ==================================================================
Pages — up to 3 pages with smooth slide transition Pages — up to 4 pages with smooth slide transition
================================================================== */ ================================================================== */
.pages-track { .pages-track {
display: flex; display: flex;
width: 300%; width: 400%;
transition: transform 0.7s cubic-bezier(0.45, 0, 0.15, 1); transition: transform 0.7s cubic-bezier(0.45, 0, 0.15, 1);
} }
.pages-track.page-2 { transform: translateX(-33.333%); } .pages-track.page-1 { transform: translateX(0); }
.pages-track.page-3 { transform: translateX(-66.666%); } .pages-track.page-2 { transform: translateX(-25%); }
.pages-track.page-3 { transform: translateX(-50%); }
.pages-track.page-4 { transform: translateX(-75%); }
.page { .page {
width: 33.333%; width: 25%;
flex-shrink: 0; flex-shrink: 0;
} }
@@ -113,7 +115,7 @@
display: grid; display: grid;
grid-template-columns: 1fr 2px 1fr 2px 1fr; grid-template-columns: 1fr 2px 1fr 2px 1fr;
align-items: center; align-items: center;
height: 78px; height: 72px;
transition: background 0.2s; transition: background 0.2s;
} }
@@ -246,6 +248,9 @@
<div class="page" id="page3"> <div class="page" id="page3">
<div class="table-rows" id="rows3"></div> <div class="table-rows" id="rows3"></div>
</div> </div>
<div class="page" id="page4">
<div class="table-rows" id="rows4"></div>
</div>
</div> </div>
</div> </div>
@@ -263,7 +268,6 @@
* If a player is not listed here, both default to "neutral". * If a player is not listed here, both default to "neutral".
*/ */
var OPINIONS = { var OPINIONS = {
// ── Page 1 ──────────────────────────────────────────────
"Морган Роджерс": { vadim: "neutral", nikita: "neutral" }, "Морган Роджерс": { vadim: "neutral", nikita: "neutral" },
"Эллиот Андерсон": { vadim: "neutral", nikita: "neutral" }, "Эллиот Андерсон": { vadim: "neutral", nikita: "neutral" },
"Сандро Тонали": { vadim: "neutral", nikita: "neutral" }, "Сандро Тонали": { vadim: "neutral", nikita: "neutral" },
@@ -278,7 +282,6 @@
"Марко Палестра": { vadim: "neutral", nikita: "neutral" }, "Марко Палестра": { vadim: "neutral", nikita: "neutral" },
"Андре Сантос": { vadim: "neutral", nikita: "neutral" }, "Андре Сантос": { vadim: "neutral", nikita: "neutral" },
"Марк Кукурелья": { vadim: "neutral", nikita: "neutral" }, "Марк Кукурелья": { vadim: "neutral", nikita: "neutral" },
// ── Page 2 ──────────────────────────────────────────────
"Натаниэль Браун": { vadim: "neutral", nikita: "neutral" }, "Натаниэль Браун": { vadim: "neutral", nikita: "neutral" },
"Исмаэль Сайбари": { vadim: "neutral", nikita: "neutral" }, "Исмаэль Сайбари": { vadim: "neutral", nikita: "neutral" },
"Ибрагим Конате": { vadim: "neutral", nikita: "neutral" }, "Ибрагим Конате": { vadim: "neutral", nikita: "neutral" },
@@ -291,10 +294,14 @@
"Александар Станкович": { vadim: "neutral", nikita: "neutral" }, "Александар Станкович": { vadim: "neutral", nikita: "neutral" },
"Думфрис": { vadim: "neutral", nikita: "neutral" }, "Думфрис": { vadim: "neutral", nikita: "neutral" },
"Гримальдо": { vadim: "neutral", nikita: "neutral" }, "Гримальдо": { vadim: "neutral", nikita: "neutral" },
"Троссард": { vadim: "neutral", nikita: "neutral" },
"Аканжи": { vadim: "neutral", nikita: "neutral" },
"Альваро Мората": { vadim: "neutral", nikita: "neutral" },
"Нюбель": { vadim: "neutral", nikita: "neutral" },
"Уэлбэк": { vadim: "neutral", nikita: "neutral" },
"Бернардо Силва": { vadim: "neutral", nikita: "neutral" }, "Бернардо Силва": { vadim: "neutral", nikita: "neutral" },
"Оскар Мингеза": { vadim: "neutral", nikita: "neutral" }, "Оскар Мингеза": { vadim: "neutral", nikita: "neutral" },
"Аканжи": { vadim: "upvote", nikita: "neutral" }, "Стоунз": { vadim: "neutral", nikita: "neutral" },
"Альваро Мората": { vadim: "neutral", nikita: "neutral" },
}; };
// ── Icons ──────────────────────────────────────────────── // ── Icons ────────────────────────────────────────────────
@@ -305,7 +312,7 @@
}; };
// ── Config ─────────────────────────────────────────────── // ── Config ───────────────────────────────────────────────
var ROWS_PER_PAGE = 10; var ROWS_PER_PAGE = 9;
var CSV_URL = "assets/transfers-list.csv"; var CSV_URL = "assets/transfers-list.csv";
var players = []; var players = [];
@@ -375,10 +382,11 @@
document.getElementById("rows1"), document.getElementById("rows1"),
document.getElementById("rows2"), document.getElementById("rows2"),
document.getElementById("rows3"), document.getElementById("rows3"),
document.getElementById("rows4"),
]; ];
var count = 0; var count = 0;
for (var p = 0; p < 3; p++) { for (var p = 0; p < 4; p++) {
var slice = players.slice(p * ROWS_PER_PAGE, (p + 1) * ROWS_PER_PAGE); var slice = players.slice(p * ROWS_PER_PAGE, (p + 1) * ROWS_PER_PAGE);
if (slice.length > 0) { if (slice.length > 0) {
pages[p].innerHTML = slice.map(buildRow).join(""); pages[p].innerHTML = slice.map(buildRow).join("");
@@ -400,8 +408,8 @@
if (n < 1 || n > totalPages) return; if (n < 1 || n > totalPages) return;
currentPage = n; currentPage = n;
var track = document.getElementById("pagesTrack"); var track = document.getElementById("pagesTrack");
track.classList.toggle("page-2", currentPage === 2); track.classList.remove("page-1", "page-2", "page-3", "page-4");
track.classList.toggle("page-3", currentPage === 3); track.classList.add("page-" + currentPage);
updateCounter(); updateCounter();
} }
+8 -8
View File
@@ -47,12 +47,12 @@
} }
.table-title { .table-title {
font-size: 48px; font-size: 40px;
font-weight: 700; font-weight: 700;
text-transform: uppercase; text-transform: uppercase;
color: var(--white); color: var(--white);
text-align: center; text-align: center;
margin-bottom: 28px; margin-bottom: 20px;
letter-spacing: 3px; letter-spacing: 3px;
} }
@@ -81,7 +81,7 @@
display: grid; display: grid;
grid-template-columns: 80px auto 80px 160px 160px 160px; grid-template-columns: 80px auto 80px 160px 160px 160px;
align-items: center; align-items: center;
height: 72px; height: 50px;
transition: background 0.2s; transition: background 0.2s;
} }
@@ -90,14 +90,14 @@
} }
.col-rank { .col-rank {
font-size: 32px; font-size: 26px;
font-weight: 700; font-weight: 700;
color: var(--neutral); color: var(--neutral);
text-align: center; text-align: center;
} }
.col-team { .col-team {
font-size: 32px; font-size: 26px;
font-weight: 500; font-weight: 500;
color: var(--white); color: var(--white);
padding-left: 24px; padding-left: 24px;
@@ -107,7 +107,7 @@
} }
.col-val { .col-val {
font-size: 28px; font-size: 24px;
font-weight: 500; font-weight: 500;
color: var(--white); color: var(--white);
text-align: right; text-align: right;
@@ -116,7 +116,7 @@
} }
.col-diff { .col-diff {
font-size: 28px; font-size: 24px;
font-weight: 700; font-weight: 700;
text-align: right; text-align: right;
padding-right: 24px; padding-right: 24px;
@@ -131,7 +131,7 @@
<body> <body>
<div class="frame"> <div class="frame">
<div class="table-wrapper"> <div class="table-wrapper">
<div class="table-title">Топ-10 команд по доходам</div> <div class="table-title">Топ-15 команд по доходам</div>
<div class="table-header"> <div class="table-header">
<div class="header-cell"></div> <div class="header-cell"></div>
<div class="header-cell left">Команда</div> <div class="header-cell left">Команда</div>
+228
View File
@@ -0,0 +1,228 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=1920, initial-scale=1">
<title>Top 15 — Gossips</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<style>
@font-face { font-family: 'ONY One'; src: local('ONY One Regular'), url('file:///home/itten/.local/share/fonts/ONYOne-Regular.otf') format('opentype'); font-weight: 400; }
@font-face { font-family: 'ONY One'; src: local('ONY One Medium'), url('file:///home/itten/.local/share/fonts/ONYOne-Medium.otf') format('opentype'); font-weight: 500; }
@font-face { font-family: 'ONY One'; src: local('ONY One Bold'), url('file:///home/itten/.local/share/fonts/ONYOne-Bold.otf') format('opentype'); font-weight: 700; }
:root {
--bg: #222524;
--white: #FFFFFF;
--neutral: #919292;
--accent: #91FF55;
--negative: #F8F700;
--row-alt: #2A2D2C;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html, body {
width: 1920px;
height: 1080px;
background: var(--bg);
overflow: hidden;
font-family: 'ONY One', 'Arial Narrow', sans-serif;
-webkit-font-smoothing: antialiased;
}
.frame {
position: relative;
width: 1920px;
height: 1080px;
display: flex;
align-items: center;
justify-content: center;
}
.table-wrapper {
width: 1730px;
position: relative;
}
.table-title {
font-size: 40px;
font-weight: 700;
text-transform: uppercase;
color: var(--white);
text-align: center;
margin-bottom: 20px;
letter-spacing: 3px;
}
.table-header {
display: grid;
grid-template-columns: 80px 1fr auto auto;
align-items: center;
border-bottom: 3px solid var(--white);
padding-bottom: 14px;
margin-bottom: 8px;
}
.header-cell {
font-size: 26px;
font-weight: 700;
text-transform: uppercase;
text-align: center;
color: var(--neutral);
letter-spacing: 1px;
}
.header-cell.left { text-align: left; padding-left: 24px; }
.header-cell.right { text-align: right; padding-right: 24px; }
.table-row {
display: grid;
grid-template-columns: 80px 1fr auto auto;
align-items: center;
height: 50px;
transition: background 0.2s;
}
.table-row:nth-child(even) {
background: var(--row-alt);
}
.col-rank {
font-size: 26px;
font-weight: 700;
color: var(--neutral);
text-align: center;
}
.col-player {
font-size: 26px;
font-weight: 500;
color: var(--white);
padding-left: 24px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.col-team {
font-size: 24px;
font-weight: 400;
color: var(--neutral);
padding-left: 16px;
padding-right: 24px;
white-space: nowrap;
}
.col-prob {
font-size: 26px;
font-weight: 700;
text-align: right;
padding-right: 24px;
white-space: nowrap;
}
.prob-high { color: var(--accent); }
.prob-medium { color: var(--white); }
.prob-low { color: var(--neutral); }
.prob-bar {
display: inline-block;
width: 100px;
height: 8px;
background: var(--row-alt);
border-radius: 4px;
margin-right: 12px;
vertical-align: middle;
overflow: hidden;
}
.prob-bar-fill {
height: 100%;
border-radius: 4px;
}
.prob-high .prob-bar-fill { background: var(--accent); }
.prob-medium .prob-bar-fill { background: var(--white); }
.prob-low .prob-bar-fill { background: var(--neutral); }
</style>
</head>
<body>
<div class="frame">
<div class="table-wrapper">
<div class="table-title">Топ-15 слухов</div>
<div class="table-header">
<div class="header-cell"></div>
<div class="header-cell left">Игрок</div>
<div class="header-cell">Команда</div>
<div class="header-cell right">Вероятность</div>
</div>
<div id="rows"></div>
</div>
</div>
<script>
var CSV_URL = "top-15-gossips.csv";
function parseCSV(text) {
var lines = text.trim().split(/\r?\n/);
var result = [];
for (var i = 1; i < lines.length; i++) {
var line = lines[i].trim();
if (!line) continue;
var fields = [];
var cur = "", inQ = false;
for (var j = 0; j < line.length; j++) {
var ch = line[j];
if (ch === '"') inQ = !inQ;
else if (ch === ',' && !inQ) { fields.push(cur.trim()); cur = ""; }
else cur += ch;
}
fields.push(cur.trim());
if (fields.length >= 3) result.push({
player: fields[0],
team: fields[1],
prob: fields[2],
});
}
return result;
}
function probClass(val) {
var n = parseFloat(val);
if (isNaN(n)) return "prob-medium";
if (n >= 70) return "prob-high";
if (n >= 50) return "prob-medium";
return "prob-low";
}
function probNum(val) {
var n = parseFloat(val);
return isNaN(n) ? 0 : n;
}
function buildRow(idx, row) {
var cls = probClass(row.prob);
var pct = probNum(row.prob);
return '<div class="table-row">' +
'<div class="col-rank">' + (idx + 1) + '</div>' +
'<div class="col-player">' + row.player + '</div>' +
'<div class="col-team ' + cls + '">' + row.team + '</div>' +
'<div class="col-prob ' + cls + '">' +
'<span class="prob-bar"><span class="prob-bar-fill" style="width:' + pct + '%"></span></span>' +
row.prob + '%' +
'</div>' +
'</div>';
}
fetch(CSV_URL)
.then(function (r) { return r.text(); })
.then(function (text) {
var data = parseCSV(text);
document.getElementById("rows").innerHTML =
data.map(function (row, i) { return buildRow(i, row); }).join("");
console.log("Loaded " + data.length + " rows");
})
.catch(function (e) { console.error("Failed to load CSV", e); });
</script>
</body>
</html>
+8 -8
View File
@@ -47,12 +47,12 @@
} }
.table-title { .table-title {
font-size: 40px; font-size: 32px;
font-weight: 700; font-weight: 700;
text-transform: uppercase; text-transform: uppercase;
color: var(--white); color: var(--white);
text-align: center; text-align: center;
margin-bottom: 20px; margin-bottom: 14px;
letter-spacing: 3px; letter-spacing: 3px;
} }
@@ -81,7 +81,7 @@
display: grid; display: grid;
grid-template-columns: 70px auto 80px 150px 150px 150px; grid-template-columns: 70px auto 80px 150px 150px 150px;
align-items: center; align-items: center;
height: 40px; height: 32px;
transition: background 0.2s; transition: background 0.2s;
} }
@@ -90,14 +90,14 @@
} }
.col-rank { .col-rank {
font-size: 24px; font-size: 20px;
font-weight: 700; font-weight: 700;
color: var(--neutral); color: var(--neutral);
text-align: center; text-align: center;
} }
.col-team { .col-team {
font-size: 26px; font-size: 22px;
font-weight: 500; font-weight: 500;
color: var(--white); color: var(--white);
padding-left: 24px; padding-left: 24px;
@@ -107,7 +107,7 @@
} }
.col-val { .col-val {
font-size: 24px; font-size: 20px;
font-weight: 500; font-weight: 500;
color: var(--white); color: var(--white);
text-align: right; text-align: right;
@@ -116,7 +116,7 @@
} }
.col-diff { .col-diff {
font-size: 24px; font-size: 20px;
font-weight: 700; font-weight: 700;
text-align: right; text-align: right;
padding-right: 24px; padding-right: 24px;
@@ -131,7 +131,7 @@
<body> <body>
<div class="frame"> <div class="frame">
<div class="table-wrapper"> <div class="table-wrapper">
<div class="table-title">Топ-20 команд по затратам</div> <div class="table-title">Топ-25 команд по затратам</div>
<div class="table-header"> <div class="table-header">
<div class="header-cell"></div> <div class="header-cell"></div>
<div class="header-cell left">Команда</div> <div class="header-cell left">Команда</div>