diff options
| author | Wolfboy248 <georgejvindkarlsen@gmail.com> | 2024-09-16 18:13:12 +0200 |
|---|---|---|
| committer | Wolfboy248 <georgejvindkarlsen@gmail.com> | 2024-09-16 18:13:12 +0200 |
| commit | fa0856cedd846d82bcbd3f54dd491419b2c41910 (patch) | |
| tree | a093b40012ed563d446b3d44f3227175ad9e4c87 /frontend/src/components | |
| parent | refactor: unofficial rankings implementation (diff) | |
| download | lphub-fa0856cedd846d82bcbd3f54dd491419b2c41910.tar.gz lphub-fa0856cedd846d82bcbd3f54dd491419b2c41910.tar.bz2 lphub-fa0856cedd846d82bcbd3f54dd491419b2c41910.zip | |
refactor: rankings page
Diffstat (limited to 'frontend/src/components')
| -rw-r--r-- | frontend/src/components/RankingEntry.tsx | 50 |
1 files changed, 36 insertions, 14 deletions
diff --git a/frontend/src/components/RankingEntry.tsx b/frontend/src/components/RankingEntry.tsx index 023a896..58a6aa6 100644 --- a/frontend/src/components/RankingEntry.tsx +++ b/frontend/src/components/RankingEntry.tsx | |||
| @@ -1,24 +1,46 @@ | |||
| 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 } from '../types/Ranking'; | 3 | import { RankingType, SteamRanking, SteamRankingType } from '../types/Ranking'; |
| 4 | |||
| 5 | enum RankingCategories { | ||
| 6 | rankings_overall, | ||
| 7 | rankings_multiplayer, | ||
| 8 | rankings_singleplayer | ||
| 9 | } | ||
| 4 | 10 | ||
| 5 | interface RankingEntryProps { | 11 | interface RankingEntryProps { |
| 6 | curRankingData: RankingType; | 12 | curRankingData: RankingType | SteamRankingType; |
| 13 | currentLeaderboardType: RankingCategories | ||
| 7 | }; | 14 | }; |
| 8 | 15 | ||
| 9 | const RankingEntry: React.FC<RankingEntryProps> = (curRankingData) => { | 16 | const RankingEntry: React.FC<RankingEntryProps> = (prop) => { |
| 10 | return ( | 17 | if ("placement" in prop.curRankingData) { |
| 11 | <div className='leaderboard-entry'> | 18 | return ( |
| 12 | <span>{curRankingData.curRankingData.placement}</span> | 19 | <div className='leaderboard-entry'> |
| 13 | <div> | 20 | <span>{prop.curRankingData.placement}</span> |
| 14 | <Link to={`/users/${curRankingData.curRankingData.user.steam_id}`}> | 21 | <div> |
| 15 | <img src={curRankingData.curRankingData.user.avatar_link}></img> | 22 | <Link to={`/users/${prop.curRankingData.user.steam_id}`}> |
| 16 | <span>{curRankingData.curRankingData.user.user_name}</span> | 23 | <img src={prop.curRankingData.user.avatar_link}></img> |
| 17 | </Link> | 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.curRankingData.overall_score}</span> | ||
| 18 | </div> | 41 | </div> |
| 19 | <span>{curRankingData.curRankingData.total_score}</span> | 42 | ) |
| 20 | </div> | 43 | } |
| 21 | ) | ||
| 22 | } | 44 | } |
| 23 | 45 | ||
| 24 | export default RankingEntry; | 46 | export default RankingEntry; |