parent
856b76f3d7
commit
4aeeceebc9
5 changed files with 334 additions and 5 deletions
@ -0,0 +1,117 @@ |
|||||||
|
window.onload = async function(){ |
||||||
|
const charts = document.getElementsByClassName("progress-chart"); |
||||||
|
for (const chart of charts) { |
||||||
|
let puuid = chart.id.split("-"); |
||||||
|
puuid.splice(0,2); |
||||||
|
puuid = puuid.join("-"); |
||||||
|
fetch(`get.php?puuid=${puuid}`, { |
||||||
|
method: "GET", |
||||||
|
}) |
||||||
|
.then(res => res.json()) |
||||||
|
.then(entries => { |
||||||
|
let xValues = []; |
||||||
|
let yValues = []; |
||||||
|
for (const entriesKey in entries) { |
||||||
|
let points = rank_to_points(entries[entriesKey]["tier"], entries[entriesKey]["rank"], entries[entriesKey]["points"]); |
||||||
|
xValues.push(entriesKey); |
||||||
|
yValues.push(points); |
||||||
|
} |
||||||
|
new Chart(`progress-chart-${puuid}`, { |
||||||
|
type: "line", |
||||||
|
data: { |
||||||
|
labels: xValues, |
||||||
|
datasets: [{ |
||||||
|
fill: false, |
||||||
|
borderColor: "rgba(150,150,175)", |
||||||
|
backgroundColor: "rgba(150,150,175)", |
||||||
|
data: yValues |
||||||
|
}] |
||||||
|
}, |
||||||
|
options: { |
||||||
|
plugins: { |
||||||
|
legend: {display: false}, |
||||||
|
tooltip: { |
||||||
|
callbacks: { |
||||||
|
label: function(context) { |
||||||
|
return format_rank(entries[context.label]["tier"],entries[context.label]["rank"],entries[context.label]["points"]) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
scales: { |
||||||
|
y: { |
||||||
|
display: true, |
||||||
|
stepSize: 100, |
||||||
|
ticks: { |
||||||
|
callback: (value) => { |
||||||
|
return points_to_rankstring(value,false); |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
}, |
||||||
|
} |
||||||
|
}); |
||||||
|
}) |
||||||
|
.catch(e => console.error(e)) |
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
function rank_to_points(tier,rank,lp) { |
||||||
|
const apex_tiers = (tier === "MASTER" || tier === "GRANDMASTER" || tier === "CHALLENGER"); |
||||||
|
const tiers = { |
||||||
|
"DIAMOND": 2400, |
||||||
|
"EMERALD": 2000, |
||||||
|
"PLATINUM": 1600, |
||||||
|
"GOLD": 1200, |
||||||
|
"SILVER": 800, |
||||||
|
"BRONZE": 400, |
||||||
|
"IRON": 0, |
||||||
|
}; |
||||||
|
const ranks = { |
||||||
|
"I": 300, |
||||||
|
"II": 200, |
||||||
|
"III": 100, |
||||||
|
"IV": 0, |
||||||
|
}; |
||||||
|
if (apex_tiers) { |
||||||
|
return 2800 + lp; |
||||||
|
} else { |
||||||
|
return tiers[tier] + ranks[rank] + lp; |
||||||
|
} |
||||||
|
} |
||||||
|
function points_to_rankstring(points, include_LP = true) { |
||||||
|
const apex_tiers = (points >= 2800); |
||||||
|
let lp = (apex_tiers) ? points - 2800 : points%100 |
||||||
|
let rank = (points-lp)%400; |
||||||
|
let tier = (points-lp-rank); |
||||||
|
const tiers = { |
||||||
|
2400: "Diamond", |
||||||
|
2000: "Emerald", |
||||||
|
1600: "Platinum", |
||||||
|
1200: "Gold", |
||||||
|
800: "Silver", |
||||||
|
400: "Bronze", |
||||||
|
0: "Iron", |
||||||
|
}; |
||||||
|
const ranks = { |
||||||
|
300: "I", |
||||||
|
200: "II", |
||||||
|
100: "III", |
||||||
|
0: "IV", |
||||||
|
}; |
||||||
|
|
||||||
|
let rank_string = (apex_tiers) ? "Master" : tiers[tier]; |
||||||
|
if (!apex_tiers) rank_string += ` ${ranks[rank]}`; |
||||||
|
if (include_LP || apex_tiers) rank_string += ` ${lp} LP`; |
||||||
|
return rank_string; |
||||||
|
} |
||||||
|
|
||||||
|
function format_rank(tier,rank,lp) { |
||||||
|
tier = tier.charAt(0).toUpperCase()+tier.slice(1).toLowerCase(); |
||||||
|
const apex_tiers = (tier === "Master" || tier === "Grandmaster" || tier === "Challenger"); |
||||||
|
let rank_string = tier; |
||||||
|
if (!apex_tiers) rank_string += ` ${rank}`; |
||||||
|
rank_string += ` ${lp} LP`; |
||||||
|
return rank_string; |
||||||
|
} |
@ -0,0 +1,9 @@ |
|||||||
|
<?php |
||||||
|
if (!isset($_GET["puuid"]) && $_GET["puuid"]!=null) exit; |
||||||
|
|
||||||
|
require_once "Tracker.php"; |
||||||
|
|
||||||
|
$tracker = new Tracker(); |
||||||
|
$puuid = $_GET["puuid"]; |
||||||
|
|
||||||
|
echo json_encode($tracker->entries[$puuid]); |
@ -0,0 +1,162 @@ |
|||||||
|
:root { |
||||||
|
--def-grey: hsl(110 00% 82% / 1); |
||||||
|
--plus-green: hsl(110 80% 82% / 1); |
||||||
|
--minus-red: hsl(0 80% 82% / 1); |
||||||
|
--gold-1: #d29b35; |
||||||
|
--silver-2: #b7b7b7; |
||||||
|
--bronze-3: #b76833; |
||||||
|
} |
||||||
|
html { |
||||||
|
color-scheme: dark; |
||||||
|
} |
||||||
|
body { |
||||||
|
background: #161c21; |
||||||
|
color: #d2d2d2; |
||||||
|
font-family: Verdana, sans-serif; |
||||||
|
} |
||||||
|
h1 { |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
|
||||||
|
.uem-logo-header { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
margin-bottom: 24px; |
||||||
|
} |
||||||
|
img.uem-logo { |
||||||
|
height: 120px; |
||||||
|
} |
||||||
|
|
||||||
|
.leaderboard { |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
align-items: center; |
||||||
|
} |
||||||
|
.leaderboard-list { |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
align-items: stretch; |
||||||
|
gap: 16px; |
||||||
|
max-width: 600px; |
||||||
|
} |
||||||
|
.leaderboard-element { |
||||||
|
display: grid; |
||||||
|
grid-template-columns: 64px 1fr auto; |
||||||
|
grid-template-rows: 1.5fr 0.5fr; |
||||||
|
border: solid 4px #6a818f; |
||||||
|
border-radius: 20px; |
||||||
|
padding: 16px 16px 16px 36px; |
||||||
|
transition: background-color 200ms ease-out; |
||||||
|
} |
||||||
|
.leaderboard-element:hover { |
||||||
|
background-color: #1f2931; |
||||||
|
} |
||||||
|
.leaderboard-element.place-1 { |
||||||
|
border: solid 4px var(--gold-1); |
||||||
|
} |
||||||
|
.leaderboard-element.place-1 .placement { |
||||||
|
color: var(--gold-1); |
||||||
|
} |
||||||
|
.leaderboard-element.place-2 { |
||||||
|
border: solid 4px #b7b7b7; |
||||||
|
} |
||||||
|
.leaderboard-element.place-2 .placement { |
||||||
|
color: var(--silver-2); |
||||||
|
} |
||||||
|
.leaderboard-element.place-3 { |
||||||
|
border: solid 4px #b76833; |
||||||
|
} |
||||||
|
.leaderboard-element.place-3 .placement { |
||||||
|
color: var(--bronze-3); |
||||||
|
} |
||||||
|
|
||||||
|
.leaderboard-element .ranked-emblem { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
padding: 0 16px; |
||||||
|
} |
||||||
|
.leaderboard-element .ranked-emblem img { |
||||||
|
width: 72px; |
||||||
|
aspect-ratio: 1/1; |
||||||
|
} |
||||||
|
.leaderboard-element img.ranked-mini-crest { |
||||||
|
width: 24px; |
||||||
|
aspect-ratio: 1/1 |
||||||
|
} |
||||||
|
|
||||||
|
.leaderboard-element .placement { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
grid-row-start: 1; |
||||||
|
grid-row-end: 3; |
||||||
|
font-size: 2.5em; |
||||||
|
font-weight: 700; |
||||||
|
margin-right: 24px; |
||||||
|
} |
||||||
|
|
||||||
|
.leaderboard-element .player-info { |
||||||
|
display: grid; |
||||||
|
grid-template-rows: 1fr 0.9fr; |
||||||
|
grid-template-columns: 72px auto; |
||||||
|
align-items: center; |
||||||
|
grid-column: 2; |
||||||
|
} |
||||||
|
.leaderboard-element .ranked-emblem { |
||||||
|
grid-column: 3; |
||||||
|
} |
||||||
|
|
||||||
|
.playername .riot-tag { |
||||||
|
color: #707070; |
||||||
|
} |
||||||
|
.player-info>img { |
||||||
|
grid-row-start: 1; |
||||||
|
grid-row-end: 3; |
||||||
|
grid-column: 1; |
||||||
|
border-radius: 8px; |
||||||
|
} |
||||||
|
.player-info .playername { |
||||||
|
grid-row: 1; |
||||||
|
grid-column: 2; |
||||||
|
margin: 0; |
||||||
|
} |
||||||
|
.player-info .lp-gained { |
||||||
|
align-self: flex-start; |
||||||
|
grid-row: 2; |
||||||
|
grid-column: 2; |
||||||
|
font-size: 1.5em; |
||||||
|
margin: 0; |
||||||
|
padding-left: 12px; |
||||||
|
} |
||||||
|
.player-info .lp-gained.plus-lp { |
||||||
|
color: var(--plus-green); |
||||||
|
} |
||||||
|
.player-info .lp-gained.minus-lp { |
||||||
|
color: var(--minus-red); |
||||||
|
} |
||||||
|
.player-info .lp-gained.no-lp { |
||||||
|
color: var(--def-grey); |
||||||
|
} |
||||||
|
|
||||||
|
.leaderboard-element .elo-gained { |
||||||
|
grid-column-start: 2; |
||||||
|
grid-column-end: 4; |
||||||
|
display: flex; |
||||||
|
flex-direction: row; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
gap: 4px; |
||||||
|
} |
||||||
|
.rank { |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
align-items: center; |
||||||
|
} |
||||||
|
.rank .rank-desc { |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
.elo-gained .rank-LP { |
||||||
|
font-size: 0.8em; |
||||||
|
} |
After Width: | Height: | Size: 29 KiB |
Loading…
Reference in new issue