aboutsummaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
authorWolfboy248 <georgejvindkarlsen@gmail.com>2024-11-01 17:56:35 +0100
committerWolfboy248 <georgejvindkarlsen@gmail.com>2024-11-01 17:56:35 +0100
commita6a5735e4869ac9835a0b2a1f7740448ecd63449 (patch)
tree7f58458483f74d938adf9cae7d2b98e169401261 /frontend
parentfrontend: convert all native confirm and alerts to custom hooks (diff)
downloadlphub-a6a5735e4869ac9835a0b2a1f7740448ecd63449.tar.gz
lphub-a6a5735e4869ac9835a0b2a1f7740448ecd63449.tar.bz2
lphub-a6a5735e4869ac9835a0b2a1f7740448ecd63449.zip
frontend: uploadrundialog.tsx
Diffstat (limited to 'frontend')
-rw-r--r--frontend/src/api/Api.tsx2
-rw-r--r--frontend/src/components/Login.tsx3
-rw-r--r--frontend/src/components/UploadRunDialog.tsx18
-rw-r--r--frontend/src/css/UploadRunDialog.css14
-rw-r--r--frontend/src/pages/Maplist.tsx5
5 files changed, 26 insertions, 16 deletions
diff --git a/frontend/src/api/Api.tsx b/frontend/src/api/Api.tsx
index 053e920..ddc7ac6 100644
--- a/frontend/src/api/Api.tsx
+++ b/frontend/src/api/Api.tsx
@@ -49,7 +49,7 @@ export const API = {
49 delete_map_summary: (token: string, map_id: string, route_id: number) => delete_map_summary(token, map_id, route_id), 49 delete_map_summary: (token: string, map_id: string, route_id: number) => delete_map_summary(token, map_id, route_id),
50}; 50};
51 51
52const BASE_API_URL: string = "/api/v1/" 52const BASE_API_URL: string = "https://lp.portal2.sr/api/v1/"
53 53
54export function url(path: string): string { 54export function url(path: string): string {
55 return BASE_API_URL + path; 55 return BASE_API_URL + path;
diff --git a/frontend/src/components/Login.tsx b/frontend/src/components/Login.tsx
index 545f724..d33e25e 100644
--- a/frontend/src/components/Login.tsx
+++ b/frontend/src/components/Login.tsx
@@ -17,7 +17,8 @@ const Login: React.FC<LoginProps> = ({ setToken, profile, setProfile }) => {
17 const navigate = useNavigate(); 17 const navigate = useNavigate();
18 18
19 const _login = () => { 19 const _login = () => {
20 window.location.href = "/api/v1/login"; 20 setToken("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzI3Nzg0NTEsIm1vZCI6ZmFsc2UsInN1YiI6Ijc2NTYxMTk5MDg4MjU3MDk4In0.MwYcAy1q463-A2qxLn3Dk4T7ECwta_x4h-CJOTB6VZY");
21 // window.location.href = "/api/v1/login";
21 }; 22 };
22 23
23 const _logout = () => { 24 const _logout = () => {
diff --git a/frontend/src/components/UploadRunDialog.tsx b/frontend/src/components/UploadRunDialog.tsx
index 1679ac1..8c201ff 100644
--- a/frontend/src/components/UploadRunDialog.tsx
+++ b/frontend/src/components/UploadRunDialog.tsx
@@ -197,13 +197,13 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose,
197 <div id='upload-run-menu'> 197 <div id='upload-run-menu'>
198 <div id='upload-run-menu-add'> 198 <div id='upload-run-menu-add'>
199 <div id='upload-run-route-category'> 199 <div id='upload-run-route-category'>
200 <div style={{ padding: "15px 0px" }} className='upload-run-dropdown-container'> 200 <div style={{ padding: "15px 0px" }} className='upload-run-dropdown-container upload-run-item'>
201 <h3 style={{ margin: "10px 0px" }}>Select Game</h3> 201 <h1 style={{ paddingBottom: "14px" }}>Select Game</h1>
202 <div onClick={() => _handle_dropdowns(1)} style={{ display: "flex", alignItems: "center", cursor: "pointer", justifyContent: "space-between" }}> 202 <div onClick={() => _handle_dropdowns(1)} style={{ display: "flex", alignItems: "center", cursor: "pointer", justifyContent: "space-between" }}>
203 <div className='dropdown-cur'>{selectedGameName}</div> 203 <div className='dropdown-cur'>{selectedGameName}</div>
204 <i style={{ rotate: "-90deg", transform: "translate(-5px, 10px)" }} className="triangle"></i> 204 <i style={{ rotate: "-90deg", transform: "translate(-5px, 10px)" }} className="triangle"></i>
205 </div> 205 </div>
206 <div className={dropdown1Vis ? "upload-run-dropdown" : "upload-run-dropdown hidden"}> 206 <div style={{top: "160px"}} className={dropdown1Vis ? "upload-run-dropdown" : "upload-run-dropdown hidden"}>
207 {games.map((game) => ( 207 {games.map((game) => (
208 <div onClick={() => { _handle_game_select(game.id.toString(), game.name); _handle_dropdowns(1) }} key={game.id}>{game.name}</div> 208 <div onClick={() => { _handle_game_select(game.id.toString(), game.name); _handle_dropdowns(1) }} key={game.id}>{game.name}</div>
209 ))} 209 ))}
@@ -213,7 +213,7 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose,
213 !loading && 213 !loading &&
214 ( 214 (
215 <> 215 <>
216 <div className='upload-run-map-container' style={{ paddingBottom: "10px" }}> 216 <div className='upload-run-map-container upload-run-item' style={{ paddingBottom: "10px" }}>
217 <div style={{ padding: "15px 0px" }}> 217 <div style={{ padding: "15px 0px" }}>
218 <h3 style={{ margin: "10px 0px" }}>Select Map</h3> 218 <h3 style={{ margin: "10px 0px" }}>Select Map</h3>
219 <div onClick={() => _handle_dropdowns(2)} style={{ display: "flex", alignItems: "center", cursor: "pointer", justifyContent: "space-between" }}> 219 <div onClick={() => _handle_dropdowns(2)} style={{ display: "flex", alignItems: "center", cursor: "pointer", justifyContent: "space-between" }}>
@@ -221,14 +221,13 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose,
221 <i style={{ rotate: "-90deg", transform: "translate(-5px, 10px)" }} className="triangle"></i> 221 <i style={{ rotate: "-90deg", transform: "translate(-5px, 10px)" }} className="triangle"></i>
222 </div> 222 </div>
223 </div> 223 </div>
224 <div> 224 <div style={{top: "160px"}} id='dropdown2' className={dropdown2Vis ? "upload-run-dropdown" : "upload-run-dropdown hidden"}>
225 <div id='dropdown2' className={dropdown2Vis ? "upload-run-dropdown" : "upload-run-dropdown hidden"}>
226 {selectedGameMaps && selectedGameMaps.filter(gameMap => !gameMap.is_disabled).map((gameMap) => ( 225 {selectedGameMaps && selectedGameMaps.filter(gameMap => !gameMap.is_disabled).map((gameMap) => (
227 <div onClick={() => { setUploadRunContent({ ...uploadRunContent, map_id: gameMap.id }); _set_current_map(gameMap.name); _handle_dropdowns(2); }} key={gameMap.id}>{gameMap.name}</div> 226 <div onClick={() => { setUploadRunContent({ ...uploadRunContent, map_id: gameMap.id }); _set_current_map(gameMap.name); _handle_dropdowns(2); }} key={gameMap.id}>{gameMap.name}</div>
228 ))} 227 ))}
229 </div> 228 </div>
230 </div> 229 </div>
231 <h3 style={{ margin: "10px 0px" }}>Host Demo</h3> 230 <h1>Host Demo</h1>
232 <div onClick={() => { _handle_file_click(true) }} onDragOver={(e) => { _handle_drag_over(e, true) }} onDrop={(e) => { _handle_drop(e, true) }} onDragLeave={(e) => { _handle_drag_leave(e, true) }} className={`upload-run-drag-area ${dragHightlight ? "upload-run-drag-area-highlight" : ""} ${uploadRunContent.host_demo ? "upload-run-drag-area-hidden" : ""}`}> 231 <div onClick={() => { _handle_file_click(true) }} onDragOver={(e) => { _handle_drag_over(e, true) }} onDrop={(e) => { _handle_drop(e, true) }} onDragLeave={(e) => { _handle_drag_leave(e, true) }} className={`upload-run-drag-area ${dragHightlight ? "upload-run-drag-area-highlight" : ""} ${uploadRunContent.host_demo ? "upload-run-drag-area-hidden" : ""}`}>
233 <input ref={fileInputRef} type="file" name="host_demo" id="host_demo" accept=".dem" onChange={(e) => _handle_file_change(e.target.files, true)} /> 232 <input ref={fileInputRef} type="file" name="host_demo" id="host_demo" accept=".dem" onChange={(e) => _handle_file_change(e.target.files, true)} />
234 {!uploadRunContent.host_demo ? 233 {!uploadRunContent.host_demo ?
@@ -243,11 +242,12 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose,
243 242
244 <span className="upload-run-demo-name">{uploadRunContent.host_demo?.name}</span> 243 <span className="upload-run-demo-name">{uploadRunContent.host_demo?.name}</span>
245 </div> 244 </div>
245 </div><br/>
246 { 246 {
247 games[selectedGameID].is_coop && 247 games[selectedGameID].is_coop &&
248 ( 248 (
249 <> 249 <>
250 <h3 style={{ margin: "10px 0px" }}>Partner Demo</h3> 250 <h1>Partner Demo</h1>
251 <div onClick={() => { _handle_file_click(false) }} onDragOver={(e) => { _handle_drag_over(e, false) }} onDrop={(e) => { _handle_drop(e, false) }} onDragLeave={(e) => { _handle_drag_leave(e, false) }} className={`upload-run-drag-area ${dragHightlightPartner ? "upload-run-drag-area-highlight-partner" : ""} ${uploadRunContent.partner_demo ? "upload-run-drag-area-hidden" : ""}`}> 251 <div onClick={() => { _handle_file_click(false) }} onDragOver={(e) => { _handle_drag_over(e, false) }} onDrop={(e) => { _handle_drop(e, false) }} onDragLeave={(e) => { _handle_drag_leave(e, false) }} className={`upload-run-drag-area ${dragHightlightPartner ? "upload-run-drag-area-highlight-partner" : ""} ${uploadRunContent.partner_demo ? "upload-run-drag-area-hidden" : ""}`}>
252 <input ref={fileInputRefPartner} type="file" name="partner_demo" id="partner_demo" accept=".dem" onChange={(e) => _handle_file_change(e.target.files, false)} /> {!uploadRunContent.partner_demo ? 252 <input ref={fileInputRefPartner} type="file" name="partner_demo" id="partner_demo" accept=".dem" onChange={(e) => _handle_file_change(e.target.files, false)} /> {!uploadRunContent.partner_demo ?
253 <div> 253 <div>
@@ -261,12 +261,14 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose,
261 261
262 <span className="upload-run-demo-name">{uploadRunContent.partner_demo?.name}</span> 262 <span className="upload-run-demo-name">{uploadRunContent.partner_demo?.name}</span>
263 </div> 263 </div>
264 </div>
264 </> 265 </>
265 ) 266 )
266 } 267 }
267 <div className='search-container'> 268 <div className='search-container'>
268 269
269 </div> 270 </div>
271 <br/>
270 <div className='upload-run-buttons-container'> 272 <div className='upload-run-buttons-container'>
271 <button onClick={_upload_run}>Submit</button> 273 <button onClick={_upload_run}>Submit</button>
272 <button onClick={() => onClose(false)}>Cancel</button> 274 <button onClick={() => onClose(false)}>Cancel</button>
diff --git a/frontend/src/css/UploadRunDialog.css b/frontend/src/css/UploadRunDialog.css
index f6e910b..78fca5e 100644
--- a/frontend/src/css/UploadRunDialog.css
+++ b/frontend/src/css/UploadRunDialog.css
@@ -10,7 +10,7 @@ div#upload-run{
10 10
11#upload-run-menu{ 11#upload-run-menu{
12 position: absolute; 12 position: absolute;
13 left: calc(50% + 160px); top: 130px; 13 left: calc(50%); top: 130px;
14 transform: translateX(-50%); 14 transform: translateX(-50%);
15 background-color: #2b2e46; 15 background-color: #2b2e46;
16 z-index: 3; color: white; 16 z-index: 3; color: white;
@@ -23,14 +23,19 @@ div#upload-run{
23 outline: 8px solid #2b2e46; 23 outline: 8px solid #2b2e46;
24 border-radius: 20px; 24 border-radius: 20px;
25 font-size: 40px; 25 font-size: 40px;
26 width: 400px; 26 text-wrap: nowrap;
27} 27}
28 28
29#upload-run-menu-add>div, 29#upload-run-menu-add>div,
30#upload-run-menu-edit>div{ 30#upload-run-menu-edit>div{
31 display: grid; 31 display: flex;
32 font-size: 20px; 32 font-size: 20px;
33 padding: 0px 15px; 33 padding: 0px 15px;
34 gap: 2px;
35}
36
37#upload-run-menu-add>div .upload-run-item {
38 margin: 0px 20px;
34} 39}
35 40
36#upload-run-block{ 41#upload-run-block{
@@ -59,7 +64,7 @@ div#upload-run{
59 animation: dropdown-in 0.2s ease; 64 animation: dropdown-in 0.2s ease;
60 max-height: 300px; 65 max-height: 300px;
61 overflow-y: scroll; 66 overflow-y: scroll;
62 width: calc(100% - 30px); 67 width: 400px;
63} 68}
64 69
65.upload-run-dropdown div { 70.upload-run-dropdown div {
@@ -111,7 +116,6 @@ button:hover {
111 116
112.upload-run-map-container { 117.upload-run-map-container {
113 display: flex; 118 display: flex;
114 flex-direction: column;
115} 119}
116 120
117.upload-run-buttons-container { 121.upload-run-buttons-container {
diff --git a/frontend/src/pages/Maplist.tsx b/frontend/src/pages/Maplist.tsx
index a76c1f5..4c1c172 100644
--- a/frontend/src/pages/Maplist.tsx
+++ b/frontend/src/pages/Maplist.tsx
@@ -53,7 +53,10 @@ const Maplist: React.FC = () => {
53 // location query params 53 // location query params
54 const queryParams = new URLSearchParams(location.search); 54 const queryParams = new URLSearchParams(location.search);
55 if (queryParams.get("chapter")) { 55 if (queryParams.get("chapter")) {
56 const cat = parseFloat(queryParams.get("chapter") || ""); 56 let cat = parseFloat(queryParams.get("chapter") || "");
57 if (gameId == 2) {
58 cat += 10;
59 }
57 _fetch_chapters(cat.toString()); 60 _fetch_chapters(cat.toString());
58 } 61 }
59 62