From a65d6d9127c3fa7f6a8ecaec5d1ffd1f47c2bc98 Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Tue, 3 Sep 2024 00:08:53 +0300 Subject: refactor: port to typescript --- frontend/src/components/Leaderboards.tsx | 105 +++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 frontend/src/components/Leaderboards.tsx (limited to 'frontend/src/components/Leaderboards.tsx') diff --git a/frontend/src/components/Leaderboards.tsx b/frontend/src/components/Leaderboards.tsx new file mode 100644 index 0000000..badff37 --- /dev/null +++ b/frontend/src/components/Leaderboards.tsx @@ -0,0 +1,105 @@ +import React from 'react'; + +import { DownloadIcon, ThreedotIcon } from '../images/Images'; +import { MapLeaderboard } from '../types/Map'; +import { ticks_to_time, time_ago } from '../utils/Time'; +import "../css/Maps.css" + +interface LeaderboardsProps { + data?: MapLeaderboard; +} + +const Leaderboards: React.FC = ({ data }) => { + + const [pageNumber, setPageNumber] = React.useState(1); + + if (!data) { + return ( +
+

Map is not available for competitive boards.

+
+ ); + }; + + if (data.records.length === 0) { + return ( +
+

No records found.

+
+ ); + }; + + return ( +
+ +
+ Place + + {data.map.is_coop ? ( +
+ Host + Partner +
+ ) : ( + Runner + )} + + Portals + Time + Date +
+
+ + + {data.pagination.current_page}/{data.pagination.total_pages} + +
+
+
+
+
+ {data.records.map((r, index) => ( + + {r.placement} + + {r.kind === "multiplayer" ? ( +
+   {r.host.user_name} +   {r.partner.user_name} +
+ ) : ( +
  {r.user.user_name}
+ )} + + {r.score_count} + + {ticks_to_time(r.score_time)} + {time_ago(new Date(r.record_date.replace("T", " ").replace("Z", "")))} + + {r.kind === "multiplayer" ? ( + + + + + + ) : ( + + + + + + )} +
+ ))} +
+
+ ); +}; + +export default Leaderboards; -- cgit v1.2.3