aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/pages/Maps.tsx
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2024-09-09 19:29:42 +0300
committerArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2024-09-09 19:29:42 +0300
commit89560a61bc6e41d86acaea596762eda2da38fe50 (patch)
tree1cf4b7c73c17f045d3f4837b480ddf7a61230a94 /frontend/src/pages/Maps.tsx
parentrefactor: rankings page (diff)
downloadlphub-89560a61bc6e41d86acaea596762eda2da38fe50.tar.gz
lphub-89560a61bc6e41d86acaea596762eda2da38fe50.tar.bz2
lphub-89560a61bc6e41d86acaea596762eda2da38fe50.zip
refactor: upload run form, lots of random shit
Diffstat (limited to 'frontend/src/pages/Maps.tsx')
-rw-r--r--frontend/src/pages/Maps.tsx33
1 files changed, 25 insertions, 8 deletions
diff --git a/frontend/src/pages/Maps.tsx b/frontend/src/pages/Maps.tsx
index 707d865..5548650 100644
--- a/frontend/src/pages/Maps.tsx
+++ b/frontend/src/pages/Maps.tsx
@@ -7,21 +7,24 @@ import Leaderboards from '../components/Leaderboards';
7import Discussions from '../components/Discussions'; 7import Discussions from '../components/Discussions';
8import ModMenu from '../components/ModMenu'; 8import ModMenu from '../components/ModMenu';
9import { MapDiscussions, MapLeaderboard, MapSummary } from '../types/Map'; 9import { MapDiscussions, MapLeaderboard, MapSummary } from '../types/Map';
10import { UserProfile } from '../types/Profile';
10import { API } from '../api/Api'; 11import { API } from '../api/Api';
11import "../css/Maps.css"; 12import "../css/Maps.css";
13import Loading from '../components/Loading';
12 14
13interface MapProps { 15interface MapProps {
16 profile?: UserProfile;
14 isModerator: boolean; 17 isModerator: boolean;
18 onUploadRun: (mapID: number) => void;
15}; 19};
16 20
17const Maps: React.FC<MapProps> = ({ isModerator }) => { 21const Maps: React.FC<MapProps> = ({ profile, isModerator, onUploadRun }) => {
18 22
19 const [selectedRun, setSelectedRun] = React.useState<number>(0); 23 const [selectedRun, setSelectedRun] = React.useState<number>(0);
20 24
21 const [mapSummaryData, setMapSummaryData] = React.useState<MapSummary | undefined>(undefined); 25 const [mapSummaryData, setMapSummaryData] = React.useState<MapSummary | undefined>(undefined);
22 const [mapLeaderboardData, setMapLeaderboardData] = React.useState<MapLeaderboard | undefined>(undefined); 26 const [mapLeaderboardData, setMapLeaderboardData] = React.useState<MapLeaderboard | undefined>(undefined);
23 const [mapDiscussionsData, setMapDiscussionsData] = React.useState<MapDiscussions | undefined>(undefined) 27 const [mapDiscussionsData, setMapDiscussionsData] = React.useState<MapDiscussions | undefined>(undefined);
24
25 28
26 const [navState, setNavState] = React.useState<number>(0); 29 const [navState, setNavState] = React.useState<number>(0);
27 30
@@ -51,8 +54,23 @@ const Maps: React.FC<MapProps> = ({ isModerator }) => {
51 }, []); 54 }, []);
52 55
53 if (!mapSummaryData) { 56 if (!mapSummaryData) {
57 // loading placeholder
54 return ( 58 return (
55 <></> 59 <main>
60 <section id='section1' className='summary1'>
61 <div>
62 <Link to="/games"><button className='nav-button' style={{ borderRadius: "20px 20px 20px 20px" }}><i className='triangle'></i><span>Games List</span></button></Link>
63 </div>
64 </section>
65
66 <section id='section2' className='summary1'>
67 <button className='nav-button'><img src={PortalIcon} alt="" /><span>Summary</span></button>
68 <button className='nav-button'><img src={FlagIcon} alt="" /><span>Leaderboards</span></button>
69 <button className='nav-button'><img src={ChatIcon} alt="" /><span>Discussions</span></button>
70 </section>
71
72 <Loading />
73 </main>
56 ); 74 );
57 } 75 }
58 76
@@ -66,12 +84,11 @@ const Maps: React.FC<MapProps> = ({ isModerator }) => {
66 <main> 84 <main>
67 <section id='section1' className='summary1'> 85 <section id='section1' className='summary1'>
68 <div> 86 <div>
69 <Link to="/games"><button className='nav-button' style={{ borderRadius: "20px 0px 0px 20px" }}><i className='triangle'></i><span>Games list</span></button></Link> 87 <Link to="/games"><button className='nav-button' style={{ borderRadius: "20px 0px 0px 20px" }}><i className='triangle'></i><span>Games List</span></button></Link>
70 <Link to={`/games/${!mapSummaryData.map.is_coop ? "1" : "2"}?chapter=${mapSummaryData.map.chapter_name}`}><button className='nav-button' style={{ borderRadius: "0px 20px 20px 0px", marginLeft: "2px" }}><i className='triangle'></i><span>{mapSummaryData.map.chapter_name}</span></button></Link> 88 <Link to={`/games/${!mapSummaryData.map.is_coop ? "1" : "2"}?chapter=${mapSummaryData.map.chapter_name.split(" ")[1]}`}><button className='nav-button' style={{ borderRadius: "0px 20px 20px 0px", marginLeft: "2px" }}><i className='triangle'></i><span>{mapSummaryData.map.chapter_name}</span></button></Link>
71 <br /><span><b>{mapSummaryData.map.map_name}</b></span> 89 <br /><span><b>{mapSummaryData.map.map_name}</b></span>
90 {profile && <button onClick={() => onUploadRun(mapSummaryData.map.id)}>Submit a Run</button>}
72 </div> 91 </div>
73
74
75 </section> 92 </section>
76 93
77 <section id='section2' className='summary1'> 94 <section id='section2' className='summary1'>