mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-03-11 06:05:16 +08:00
leaderboard now pull data from db
This commit is contained in:
parent
ee2a5436d5
commit
208a36e84a
3 changed files with 102 additions and 195 deletions
|
@ -135,6 +135,7 @@ a:hover {
|
|||
animation-iteration-count: infinite;
|
||||
animation-duration: 2s;
|
||||
animation-timing-function: cubic-bezier(0.38, 0.16, 0.57, 0.82);
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
@keyframes loader {
|
||||
|
|
|
@ -52,31 +52,31 @@
|
|||
<div class="button confirmButton"><i class="fas fa-check"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="leaderboardsWrapper">
|
||||
<div id="leaderboardsWrapper" class="hidden">
|
||||
<div id="leaderboards">
|
||||
<div class="mainTitle">
|
||||
Leaderboards
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<div class="buttonGroup">
|
||||
<div class="button active">words</div>
|
||||
<div class="button">time</div>
|
||||
<div class="buttonGroup leaderboardMode">
|
||||
<div class="button active" mode="words">words</div>
|
||||
<div class="button" mode="time">time</div>
|
||||
</div>
|
||||
<div class="buttonGroup">
|
||||
<div class="button">10</div>
|
||||
<div class="button active">100</div>
|
||||
<div class="buttonGroup leaderboardWords">
|
||||
<div class="button active" words="10">10</div>
|
||||
<div class="button" words="100">100</div>
|
||||
</div>
|
||||
<div class="buttonGroup hidden">
|
||||
<div class="button">15</div>
|
||||
<div class="button">60</div>
|
||||
<div class="buttonGroup leaderboardTime hidden">
|
||||
<div class="button" time="15">15</div>
|
||||
<div class="button" time="60">60</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tables">
|
||||
<div class="titleAndTable">
|
||||
<div class="title">
|
||||
Overall
|
||||
Global
|
||||
</div>
|
||||
<table>
|
||||
<table class="global">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>#</td>
|
||||
|
@ -89,102 +89,13 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="titleAndTable">
|
||||
<div class="title">
|
||||
Daily (30-05-2020)
|
||||
Daily
|
||||
</div>
|
||||
<table>
|
||||
<thead>
|
||||
|
@ -199,98 +110,10 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>jack</td>
|
||||
<td>100</td>
|
||||
<td>110</td>
|
||||
<td>95</td>
|
||||
<td>words10</td>
|
||||
<td>now</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
soon
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -342,7 +165,7 @@
|
|||
</div>
|
||||
<div class="icon-button leaderboards" tabindex="2" onclick="this.blur();">
|
||||
<div class="icon">
|
||||
<i class="fas fa-fw fa-list-ol"></i>
|
||||
<i class="fas fa-fw fa-crown"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="icon-button" tabindex="2" href="/about" onclick="this.blur();">
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
let currentLeaderboard = {
|
||||
mode: "words",
|
||||
words: "10",
|
||||
time: "15",
|
||||
};
|
||||
|
||||
function showLeaderboards() {
|
||||
if ($("#leaderboardsWrapper").hasClass("hidden")) {
|
||||
$("#leaderboardsWrapper")
|
||||
|
@ -8,7 +14,10 @@ function showLeaderboards() {
|
|||
{
|
||||
opacity: 1,
|
||||
},
|
||||
125
|
||||
125,
|
||||
() => {
|
||||
updateLeaderboards();
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -29,8 +38,82 @@ function hideLeaderboards() {
|
|||
focusWords();
|
||||
}
|
||||
|
||||
function updateLeaderboards() {
|
||||
$("#leaderboardsWrapper .leaderboardMode .button").removeClass("active");
|
||||
$(
|
||||
`#leaderboardsWrapper .leaderboardMode .button[mode=${currentLeaderboard.mode}]`
|
||||
).addClass("active");
|
||||
|
||||
$("#leaderboardsWrapper .leaderboardWords .button").removeClass("active");
|
||||
$(
|
||||
`#leaderboardsWrapper .leaderboardWords .button[words=${currentLeaderboard.words}]`
|
||||
).addClass("active");
|
||||
|
||||
$("#leaderboardsWrapper .leaderboardTime .button").removeClass("active");
|
||||
$(
|
||||
`#leaderboardsWrapper .leaderboardTime .button[time=${currentLeaderboard.time}]`
|
||||
).addClass("active");
|
||||
|
||||
if (currentLeaderboard.mode === "time") {
|
||||
$("#leaderboardsWrapper .leaderboardWords").addClass("hidden");
|
||||
$("#leaderboardsWrapper .leaderboardTime").removeClass("hidden");
|
||||
} else if (currentLeaderboard.mode === "words") {
|
||||
$("#leaderboardsWrapper .leaderboardWords").removeClass("hidden");
|
||||
$("#leaderboardsWrapper .leaderboardTime").addClass("hidden");
|
||||
}
|
||||
|
||||
let mode2;
|
||||
if (currentLeaderboard.mode === "words") {
|
||||
mode2 = currentLeaderboard.words;
|
||||
} else if (currentLeaderboard.mode === "time") {
|
||||
mode2 = currentLeaderboard.time;
|
||||
}
|
||||
|
||||
showBackgroundLoader();
|
||||
firebase
|
||||
.functions()
|
||||
.httpsCallable("getLeaderboard")({
|
||||
mode: currentLeaderboard.mode,
|
||||
mode2: mode2,
|
||||
type: "global",
|
||||
})
|
||||
.then((data) => {
|
||||
console.log(data);
|
||||
hideBackgroundLoader();
|
||||
$("#leaderboardsWrapper table.global tbody").empty();
|
||||
data.data.board.forEach((entry, index) => {
|
||||
$("#leaderboardsWrapper table.global tbody").append(`
|
||||
<tr>
|
||||
<td>${index + 1}</td>
|
||||
<td>${entry.name}</td>
|
||||
<td>${entry.wpm}</td>
|
||||
<td>${entry.raw}</td>
|
||||
<td>${entry.acc}</td>
|
||||
<td>${entry.mode} ${entry.mode2}</td>
|
||||
<td>${moment(entry.timestamp).format("DD MMM YYYY<br>HH:mm")}</td>
|
||||
</tr>
|
||||
`);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
$("#leaderboardsWrapper").click((e) => {
|
||||
if ($(e.target).attr("id") === "leaderboardsWrapper") {
|
||||
hideLeaderboards();
|
||||
}
|
||||
});
|
||||
|
||||
$("#leaderboardsWrapper .leaderboardMode .button").click((e) => {
|
||||
currentLeaderboard.mode = $(e.target).attr("mode");
|
||||
updateLeaderboards();
|
||||
});
|
||||
|
||||
$("#leaderboardsWrapper .leaderboardWords .button").click((e) => {
|
||||
currentLeaderboard.words = $(e.target).attr("words");
|
||||
updateLeaderboards();
|
||||
});
|
||||
|
||||
$("#leaderboardsWrapper .leaderboardTime .button").click((e) => {
|
||||
currentLeaderboard.time = $(e.target).attr("time");
|
||||
updateLeaderboards();
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue