blob: 377222f07e95a42efade252207866323c9625a16 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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<Ranking>();
const [currentLeaderboardCat, setCurrentLeaderboardCat] = React.useState<RankingCategories>();
const [currentLeaderboard, setCurrentLeaderboard] = React.useState<RankingType[]>();
const [load, setLoad] = React.useState<boolean>(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 (
<main>
<section className="nav-container nav-1">
<div>
<button className="nav-1-btn">
<span>Official (LPHUB)</span>
</button>
<button className="nav-1-btn">
<span>Unofficial (Steam)</span>
</button>
</div>
</section>
<section className="nav-container nav-2">
<div>
<button onClick={() => _set_current_leaderboard(RankingCategories.rankings_singleplayer)} className="nav-2-btn">
<span>Singleplayer</span>
</button>
<button onClick={() => _set_current_leaderboard(RankingCategories.rankings_multiplayer)} className="nav-2-btn">
<span>Cooperative</span>
</button>
<button onClick={() => _set_current_leaderboard(RankingCategories.rankings_overall)} className="nav-2-btn">
<span>Overall</span>
</button>
</div>
</section>
{load ?
<section className="rankings-leaderboard">
<div className="ranks-container">
<div className="leaderboard-entry header">
<span>Rank</span>
<span>Player</span>
<span>Portals</span>
</div>
<div className="splitter"></div>
{currentLeaderboard?.map((curRankingData, i) => {
return <RankingEntry curRankingData={curRankingData} key={i}></RankingEntry>
})
}
</div>
</section>
: null}
</main>
)
}
export default Rankings;
|