aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/components/RankingEntry.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/components/RankingEntry.tsx')
-rw-r--r--frontend/src/components/RankingEntry.tsx94
1 files changed, 57 insertions, 37 deletions
diff --git a/frontend/src/components/RankingEntry.tsx b/frontend/src/components/RankingEntry.tsx
index b899965..add36ca 100644
--- a/frontend/src/components/RankingEntry.tsx
+++ b/frontend/src/components/RankingEntry.tsx
@@ -1,46 +1,66 @@
1import React from 'react'; 1import React from 'react';
2import { Link } from "react-router-dom"; 2import { Link } from 'react-router-dom';
3import { RankingType, SteamRanking, SteamRankingType } from '@customTypes/Ranking'; 3import {
4 RankingType,
5 SteamRanking,
6 SteamRankingType,
7} from '@customTypes/Ranking';
4 8
5enum RankingCategories { 9enum RankingCategories {
6 rankings_overall, 10 rankings_overall,
7 rankings_multiplayer, 11 rankings_multiplayer,
8 rankings_singleplayer 12 rankings_singleplayer,
9} 13}
10 14
11interface RankingEntryProps { 15interface RankingEntryProps {
12 curRankingData: RankingType | SteamRankingType; 16 curRankingData: RankingType | SteamRankingType;
13 currentLeaderboardType: RankingCategories 17 currentLeaderboardType: RankingCategories;
14};
15
16const RankingEntry: React.FC<RankingEntryProps> = (prop) => {
17 if ("placement" in prop.curRankingData) {
18 return (
19 <div className='leaderboard-entry'>
20 <span>{prop.curRankingData.placement}</span>
21 <div>
22 <Link to={`/users/${prop.curRankingData.user.steam_id}`}>
23 <img src={prop.curRankingData.user.avatar_link}></img>
24 <span>{prop.curRankingData.user.user_name}</span>
25 </Link>
26 </div>
27 <span>{prop.curRankingData.total_score}</span>
28 </div>
29 )
30 } else {
31 return (
32 <div className='leaderboard-entry'>
33 <span>{prop.currentLeaderboardType == RankingCategories.rankings_singleplayer ? prop.curRankingData.sp_rank : prop.currentLeaderboardType == RankingCategories.rankings_multiplayer ? prop.curRankingData.mp_rank : prop.curRankingData.overall_rank}</span>
34 <div>
35 <Link to={`/users/${prop.curRankingData.steam_id}`}>
36 <img src={prop.curRankingData.avatar_link}></img>
37 <span>{prop.curRankingData.user_name}</span>
38 </Link>
39 </div>
40 <span>{prop.currentLeaderboardType == RankingCategories.rankings_singleplayer ? prop.curRankingData.sp_score : prop.currentLeaderboardType == RankingCategories.rankings_multiplayer ? prop.curRankingData.mp_score : prop.curRankingData.overall_score}</span>
41 </div>
42 )
43 }
44} 18}
45 19
20const RankingEntry: React.FC<RankingEntryProps> = prop => {
21 if ('placement' in prop.curRankingData) {
22 return (
23 <div className="leaderboard-entry">
24 <span>{prop.curRankingData.placement}</span>
25 <div>
26 <Link to={`/users/${prop.curRankingData.user.steam_id}`}>
27 <img src={prop.curRankingData.user.avatar_link}></img>
28 <span>{prop.curRankingData.user.user_name}</span>
29 </Link>
30 </div>
31 <span>{prop.curRankingData.total_score}</span>
32 </div>
33 );
34 } else {
35 return (
36 <div className="leaderboard-entry">
37 <span>
38 {prop.currentLeaderboardType ==
39 RankingCategories.rankings_singleplayer
40 ? prop.curRankingData.sp_rank
41 : prop.currentLeaderboardType ==
42 RankingCategories.rankings_multiplayer
43 ? prop.curRankingData.mp_rank
44 : prop.curRankingData.overall_rank}
45 </span>
46 <div>
47 <Link to={`/users/${prop.curRankingData.steam_id}`}>
48 <img src={prop.curRankingData.avatar_link}></img>
49 <span>{prop.curRankingData.user_name}</span>
50 </Link>
51 </div>
52 <span>
53 {prop.currentLeaderboardType ==
54 RankingCategories.rankings_singleplayer
55 ? prop.curRankingData.sp_score
56 : prop.currentLeaderboardType ==
57 RankingCategories.rankings_multiplayer
58 ? prop.curRankingData.mp_score
59 : prop.curRankingData.overall_score}
60 </span>
61 </div>
62 );
63 }
64};
65
46export default RankingEntry; 66export default RankingEntry;