diff options
Diffstat (limited to 'web/pw-server')
-rw-r--r-- | web/pw-server/src/lib/components/SubmitPane.svelte | 46 | ||||
-rw-r--r-- | web/pw-server/src/routes/index.svelte | 38 |
2 files changed, 43 insertions, 41 deletions
diff --git a/web/pw-server/src/lib/components/SubmitPane.svelte b/web/pw-server/src/lib/components/SubmitPane.svelte index 588a5e7..3c9fe22 100644 --- a/web/pw-server/src/lib/components/SubmitPane.svelte +++ b/web/pw-server/src/lib/components/SubmitPane.svelte @@ -2,6 +2,8 @@ import { createEventDispatcher, onMount } from "svelte"; import Select from "svelte-select"; + export let editSession; + let availableBots: object[] = []; let selectedOpponent = undefined; let botName: string | undefined = undefined; @@ -21,16 +23,48 @@ const dispatch = createEventDispatcher(); - function submitBot() { - dispatch("submitBot", { - opponentName: selectedOpponent["name"], + async function submitBot() { + const opponentName = selectedOpponent["name"]; + + let response = await fetch("/api/submit_bot", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + code: editSession.getDocument().getValue(), + opponent_name: opponentName, + }), }); + + let responseData = await response.json(); + + if (response.ok) { + // object has a "match" key containing the match data + dispatch("matchCreated", responseData); + } else { + throw responseData; + } } - function saveBot() { - dispatch("saveBot", { - botName: botName, + async function saveBot() { + let response = await fetch("/api/save_bot", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + bot_name: botName, + code: editSession.getDocument().getValue(), + }), }); + + let responseData = await response.json(); + if (response.ok) { + dispatch("botSaved", responseData); + } else { + throw responseData; + } } </script> diff --git a/web/pw-server/src/routes/index.svelte b/web/pw-server/src/routes/index.svelte index dec3294..a78c1ea 100644 --- a/web/pw-server/src/routes/index.svelte +++ b/web/pw-server/src/routes/index.svelte @@ -38,45 +38,13 @@ (editSession as any).on("change", debounce(saveCode, 2000)); } - async function submitBot(e: CustomEvent) { - console.log(e.detail); - let response = await fetch("/api/submit_bot", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - code: editSession.getDocument().getValue(), - opponent_name: e.detail["opponentName"], - }), - }); - - if (!response.ok) { - throw Error(response.statusText); - } - - let responseData = await response.json(); - - let matchData = responseData["match"]; - + async function onMatchCreated(e: CustomEvent) { + const matchData = e.detail["match"]; matches.unshift(matchData); matches = matches; await selectMatch(matchData["id"]); } - async function saveBot(e: CustomEvent) { - let response = await fetch("/api/save_bot", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - bot_name: e.detail["botName"], - code: editSession.getDocument().getValue(), - }), - }); - } - async function selectMatch(matchId: string) { selectedMatchId = matchId; selectedMatchLog = null; @@ -183,7 +151,7 @@ {#if selectedMatchId} <OutputPane matchLog={selectedMatchLog} /> {:else} - <SubmitPane on:submitBot={submitBot} on:saveBot={saveBot} /> + <SubmitPane {editSession} on:matchCreated={onMatchCreated} /> {/if} </div> </div> |