diff options
Diffstat (limited to 'frontend/src/components/RankingEntry.tsx')
| -rw-r--r-- | frontend/src/components/RankingEntry.tsx | 94 |
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 @@ | |||
| 1 | import React from 'react'; | 1 | import React from 'react'; |
| 2 | import { Link } from "react-router-dom"; | 2 | import { Link } from 'react-router-dom'; |
| 3 | import { RankingType, SteamRanking, SteamRankingType } from '@customTypes/Ranking'; | 3 | import { |
| 4 | RankingType, | ||
| 5 | SteamRanking, | ||
| 6 | SteamRankingType, | ||
| 7 | } from '@customTypes/Ranking'; | ||
| 4 | 8 | ||
| 5 | enum RankingCategories { | 9 | enum RankingCategories { |
| 6 | rankings_overall, | 10 | rankings_overall, |
| 7 | rankings_multiplayer, | 11 | rankings_multiplayer, |
| 8 | rankings_singleplayer | 12 | rankings_singleplayer, |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | interface RankingEntryProps { | 15 | interface RankingEntryProps { |
| 12 | curRankingData: RankingType | SteamRankingType; | 16 | curRankingData: RankingType | SteamRankingType; |
| 13 | currentLeaderboardType: RankingCategories | 17 | currentLeaderboardType: RankingCategories; |
| 14 | }; | ||
| 15 | |||
| 16 | const 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 | ||
| 20 | const 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 | |||
| 46 | export default RankingEntry; | 66 | export default RankingEntry; |