aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/pages/Rankings.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/pages/Rankings.tsx')
-rw-r--r--frontend/src/pages/Rankings.tsx65
1 files changed, 57 insertions, 8 deletions
diff --git a/frontend/src/pages/Rankings.tsx b/frontend/src/pages/Rankings.tsx
index 377222f..6dbf3d3 100644
--- a/frontend/src/pages/Rankings.tsx
+++ b/frontend/src/pages/Rankings.tsx
@@ -1,29 +1,68 @@
1import React, { useEffect } from "react"; 1import React, { useEffect } from "react";
2 2
3import RankingEntry from "../components/RankingEntry"; 3import RankingEntry from "../components/RankingEntry";
4import { Ranking, RankingType } from "../types/Ranking"; 4import { Ranking, SteamRanking, RankingType, SteamRankingType } from "../types/Ranking";
5import { API } from "../api/Api"; 5import { API } from "../api/Api";
6 6
7import "../css/Rankings.css"; 7import "../css/Rankings.css";
8 8
9const Rankings: React.FC = () => { 9const Rankings: React.FC = () => {
10 const [leaderboardData, setLeaderboardData] = React.useState<Ranking>(); 10 const [leaderboardData, setLeaderboardData] = React.useState<Ranking | SteamRanking>();
11 const [currentLeaderboardCat, setCurrentLeaderboardCat] = React.useState<RankingCategories>(); 11 const [currentLeaderboard, setCurrentLeaderboard] = React.useState<RankingType[] | SteamRankingType[]>();
12 const [currentLeaderboard, setCurrentLeaderboard] = React.useState<RankingType[]>(); 12 enum LeaderboardTypes {
13 const [load, setLoad] = React.useState<boolean>(false); 13 official,
14 unofficial
15 }
14 16
15 enum RankingCategories { 17 enum RankingCategories {
16 rankings_overall, 18 rankings_overall,
17 rankings_multiplayer, 19 rankings_multiplayer,
18 rankings_singleplayer 20 rankings_singleplayer
19 } 21 }
22 const [currentLeaderboardType, setCurrentLeaderboardType] = React.useState<RankingCategories>(RankingCategories.rankings_singleplayer);
23 const [load, setLoad] = React.useState<boolean>(false);
24
25 interface ResponseSTUPID {
26 success: boolean;
27 message: string;
28 data: SteamRanking;
29 }
20 30
21 const _fetch_rankings = async () => { 31 const _fetch_rankings = async () => {
22 const rankings = await API.get_rankings(); 32 const rankings = await API.get_rankings();
23 setLeaderboardData(rankings); 33 setLeaderboardData(rankings);
34 if (currentLeaderboardType == RankingCategories.rankings_singleplayer) {
35 setCurrentLeaderboard(rankings.rankings_singleplayer)
36 } else if (currentLeaderboardType == RankingCategories.rankings_multiplayer) {
37 setCurrentLeaderboard(rankings.rankings_multiplayer)
38 } else {
39 setCurrentLeaderboard(rankings.rankings_overall)
40 }
24 setLoad(true); 41 setLoad(true);
25 } 42 }
26 43
44 const __dev_fetch_unofficial_rankings = async () => {
45 try {
46 const response = await fetch("/response.json");
47 const result: ResponseSTUPID = await response.json();
48
49 if (result.success) {
50 const unofficialRanking: SteamRanking = result.data;
51 setLeaderboardData(unofficialRanking);
52 if (currentLeaderboardType == RankingCategories.rankings_singleplayer) {
53 // console.log(_sort_rankings_steam(unofficialRanking.rankings_singleplayer))
54 setCurrentLeaderboard(unofficialRanking.rankings_singleplayer)
55 } else if (currentLeaderboardType == RankingCategories.rankings_multiplayer) {
56 setCurrentLeaderboard(unofficialRanking.rankings_multiplayer)
57 } else {
58 setCurrentLeaderboard(unofficialRanking.rankings_overall)
59 }
60 }
61 } catch (e) {
62 console.log(e)
63 }
64 }
65
27 const _set_current_leaderboard = (ranking_cat: RankingCategories) => { 66 const _set_current_leaderboard = (ranking_cat: RankingCategories) => {
28 if (ranking_cat == RankingCategories.rankings_singleplayer) { 67 if (ranking_cat == RankingCategories.rankings_singleplayer) {
29 setCurrentLeaderboard(leaderboardData!.rankings_singleplayer); 68 setCurrentLeaderboard(leaderboardData!.rankings_singleplayer);
@@ -32,6 +71,16 @@ const Rankings: React.FC = () => {
32 } else { 71 } else {
33 setCurrentLeaderboard(leaderboardData!.rankings_overall); 72 setCurrentLeaderboard(leaderboardData!.rankings_overall);
34 } 73 }
74
75 setCurrentLeaderboardType(ranking_cat);
76 }
77
78 const _set_leaderboard_type = (leaderboard_type: LeaderboardTypes) => {
79 if (leaderboard_type == LeaderboardTypes.official) {
80 _fetch_rankings();
81 } else {
82
83 }
35 } 84 }
36 85
37 useEffect(() => { 86 useEffect(() => {
@@ -45,10 +94,10 @@ const Rankings: React.FC = () => {
45 <main> 94 <main>
46 <section className="nav-container nav-1"> 95 <section className="nav-container nav-1">
47 <div> 96 <div>
48 <button className="nav-1-btn"> 97 <button onClick={() => _fetch_rankings()} className="nav-1-btn">
49 <span>Official (LPHUB)</span> 98 <span>Official (LPHUB)</span>
50 </button> 99 </button>
51 <button className="nav-1-btn"> 100 <button onClick={() => __dev_fetch_unofficial_rankings()} className="nav-1-btn">
52 <span>Unofficial (Steam)</span> 101 <span>Unofficial (Steam)</span>
53 </button> 102 </button>
54 </div> 103 </div>
@@ -79,7 +128,7 @@ const Rankings: React.FC = () => {
79 <div className="splitter"></div> 128 <div className="splitter"></div>
80 129
81 {currentLeaderboard?.map((curRankingData, i) => { 130 {currentLeaderboard?.map((curRankingData, i) => {
82 return <RankingEntry curRankingData={curRankingData} key={i}></RankingEntry> 131 return <RankingEntry currentLeaderboardType={currentLeaderboardType} curRankingData={curRankingData} key={i}></RankingEntry>
83 }) 132 })
84 } 133 }
85 </div> 134 </div>