From 5b1cdb6741677dbbc7be9e11703cbb8f54aad74b Mon Sep 17 00:00:00 2001 From: Wolfboy248 Date: Thu, 10 Oct 2024 21:06:19 +0200 Subject: refactor: upload run dialog --- frontend/src/components/UploadRunDialog.tsx | 77 ++++++++++++++++++++++------- 1 file changed, 58 insertions(+), 19 deletions(-) (limited to 'frontend/src/components') diff --git a/frontend/src/components/UploadRunDialog.tsx b/frontend/src/components/UploadRunDialog.tsx index aa7ab5a..fb146ba 100644 --- a/frontend/src/components/UploadRunDialog.tsx +++ b/frontend/src/components/UploadRunDialog.tsx @@ -24,12 +24,34 @@ const UploadRunDialog: React.FC = ({ open, onClose, mapID, is_partner_orange: undefined, }); + const [currentMap, setCurrentMap] = React.useState(""); + + const _set_current_map = (game_name: string) => { + setCurrentMap(game_name); + } + const [selectedGameID, setSelectedGameID] = React.useState(0); const [selectedGameMaps, setSelectedGameMaps] = React.useState([]); + const [selectedGameName, setSelectedGameName] = React.useState(""); + + // dropdowns + const [dropdown1Vis, setDropdown1Vis] = React.useState(false); + const [dropdown2Vis, setDropdown2Vis] = React.useState(false); const [loading, setLoading] = React.useState(false); - const _handle_game_select = async (game_id: string) => { + const _handle_dropdowns = (dropdown: number) => { + setDropdown1Vis(false); + setDropdown2Vis(false); + if (dropdown == 1) { + setDropdown1Vis(!dropdown1Vis); + } else if (dropdown == 2) { + setDropdown2Vis(!dropdown2Vis); + document.querySelector("#dropdown2")?.scrollTo(0, 0); + } + } + + const _handle_game_select = async (game_id: string, game_name: string) => { setLoading(true); const gameMaps = await API.get_game_maps(game_id); setSelectedGameMaps(gameMaps); @@ -37,13 +59,15 @@ const UploadRunDialog: React.FC = ({ open, onClose, mapID, ...uploadRunContent, map_id: gameMaps[0].id, }); + _set_current_map(gameMaps[0].name); setSelectedGameID(parseInt(game_id) - 1); + setSelectedGameName(game_name); setLoading(false); }; React.useEffect(() => { if (open) { - _handle_game_select("1"); // a different approach?. + _handle_game_select("1", "Portal 2 - Singleplayer"); // a different approach?. } }, [open]); @@ -54,25 +78,37 @@ const UploadRunDialog: React.FC = ({ open, onClose, mapID,
- Select Game - +
+

Select Game

+
_handle_dropdowns(1)} style={{display: "flex", alignItems: "center", cursor: "pointer", justifyContent: "space-between"}}> +
{selectedGameName}
+ +
+
+ {games.map((game) => ( +
{_handle_game_select(game.id.toString(), game.name); _handle_dropdowns(1)}} key={game.id}>{game.name}
+ ))} +
+
{ !loading && ( <> - Select Map - +
+
+

Select Map

+
_handle_dropdowns(2)} style={{display: "flex", alignItems: "center", cursor: "pointer", justifyContent: "space-between"}}> + {currentMap} + +
+
+
+ +
Host Demo { @@ -84,8 +120,11 @@ const UploadRunDialog: React.FC = ({ open, onClose, mapID, ) } - - +
+ + +
+
) } -- cgit v1.2.3