// Strict Mode
"use strict";
// Imports
import authentication from "../../authentication/authentication.js";
import database from "../../database/database.js";
import styles from "../../styles/leaderboards.module.css";
import Header from "../../components/header/header.jsx";
import Title from "../../components/title/title.jsx";
import Footer from "../../components/footer/footer.jsx";
// Get Server Side Props
export async function getServerSideProps ( ctx ) {
try {
await authentication.getUser(ctx.req, ctx.res);
const stats = await database.getAllStats();
const pageStats = [];
let previousPage = false;
let nextPage = false;
if (ctx.query.page != 1) {
previousPage = Number(ctx.query.page) - 1;
};
for (let stat = ((ctx.query.page - 1) * 4); stat < stats.length; stat++) {
if (stat <= ((ctx.query.page - 1) * 4) + 3) {
pageStats.push(stats[stat]);
} else {
nextPage = Number(ctx.query.page) + 1;
};
};
if (pageStats.length == 0) {
return {
redirect: {
permanent: false,
destination: "/leaderboards/1"
}
};
};
return {
props: {
pageStats: JSON.stringify(pageStats),
previousPage: previousPage,
nextPage: nextPage
}
};
} catch {
return {
redirect: {
permanent: false,
destination: "/leaderboards/1"
}
};
}
};
// Leaderboard
export default function Leaderboards ( props ) {
return (
Username
|
Game Rank
|
Elo
|
Kills
|
Deaths
|
{
JSON.parse(props.pageStats).map(stats => {
return (
{ stats.username }
|
{ stats.gameRank }
|
{ stats.elo }
|
{ stats.kills }
|
{ stats.deaths }
|
);
})
}
Rank
|
Elo
|
Shitty Shooty
|
0
|
Cutie Shooty
|
1000
|
Beauty Shooty
|
2000
|
Snooty Shooty
|
3000
|
{
props.previousPage != false && props.nextPage != false &&
}
{
props.previousPage != false && props.nextPage == false &&
}
{
props.nextPage != false && props.previousPage == false &&
}
);
};