From edff87fdf77b32fd03ee26892226068a53fbfaa6 Mon Sep 17 00:00:00 2001 From: Wolfboy248 <121288977+Wolfboy248@users.noreply.github.com> Date: Fri, 6 Sep 2024 13:05:39 +0200 Subject: refactor: rankings page --- frontend/src/pages/Rankings.tsx | 92 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 frontend/src/pages/Rankings.tsx (limited to 'frontend/src/pages/Rankings.tsx') diff --git a/frontend/src/pages/Rankings.tsx b/frontend/src/pages/Rankings.tsx new file mode 100644 index 0000000..377222f --- /dev/null +++ b/frontend/src/pages/Rankings.tsx @@ -0,0 +1,92 @@ +import React, { useEffect } from "react"; + +import RankingEntry from "../components/RankingEntry"; +import { Ranking, RankingType } from "../types/Ranking"; +import { API } from "../api/Api"; + +import "../css/Rankings.css"; + +const Rankings: React.FC = () => { + const [leaderboardData, setLeaderboardData] = React.useState(); + const [currentLeaderboardCat, setCurrentLeaderboardCat] = React.useState(); + const [currentLeaderboard, setCurrentLeaderboard] = React.useState(); + const [load, setLoad] = React.useState(false); + + enum RankingCategories { + rankings_overall, + rankings_multiplayer, + rankings_singleplayer + } + + const _fetch_rankings = async () => { + const rankings = await API.get_rankings(); + setLeaderboardData(rankings); + setLoad(true); + } + + const _set_current_leaderboard = (ranking_cat: RankingCategories) => { + if (ranking_cat == RankingCategories.rankings_singleplayer) { + setCurrentLeaderboard(leaderboardData!.rankings_singleplayer); + } else if (ranking_cat == RankingCategories.rankings_multiplayer) { + setCurrentLeaderboard(leaderboardData!.rankings_multiplayer); + } else { + setCurrentLeaderboard(leaderboardData!.rankings_overall); + } + } + + useEffect(() => { + _fetch_rankings(); + if (load) { + _set_current_leaderboard(RankingCategories.rankings_singleplayer); + } + }, [load]) + + return ( +
+
+
+ + +
+
+
+
+ + + +
+
+ + {load ? +
+
+
+ Rank + Player + Portals +
+ +
+ + {currentLeaderboard?.map((curRankingData, i) => { + return + }) + } +
+
+ : null} +
+ ) +} + +export default Rankings; -- cgit v1.2.3