From 1bfee312bf6a176f50bc6751ad6d3cb8a80be5d8 Mon Sep 17 00:00:00 2001 From: lonkaars Date: Wed, 10 Mar 2021 17:50:22 +0100 Subject: game status in recent games thingy works better now --- api/api.ts | 2 +- api/user/games.py | 7 ++++--- components/recentGames.tsx | 44 ++++++++++++++++++++++++++------------------ pages/user.tsx | 2 -- 4 files changed, 31 insertions(+), 24 deletions(-) diff --git a/api/api.ts b/api/api.ts index 1db6e0e..1cf50ef 100644 --- a/api/api.ts +++ b/api/api.ts @@ -50,7 +50,7 @@ export interface gameInfo { duration: number; id: string; moves: Array; - opponent: userInfo; + opponent?: userInfo; outcome: outcome; parent?: string; private: boolean; diff --git a/api/user/games.py b/api/user/games.py index 009e5ee..1cd19f2 100644 --- a/api/user/games.py +++ b/api/user/games.py @@ -30,12 +30,13 @@ def game_info(game_id, user_id = None): "private", # 13 ]) + " from games where game_id = ?", [game_id]).fetchone() is_player_1 = game[4] != user_id + opponent = game[4] if is_player_1 else game[3] return { "id": game[0], "parent": game[1], - "moves": [int(move) for move in str(game[2]).split(",")], - "opponent": format_user(game[4] if is_player_1 else game[3]), - "outcome": outcome(game[5], is_player_1), + "moves": [] if len(game[2]) == 0 else [int(move) for move in str(game[2] + "0").split(",")], + "opponent": None if not opponent else format_user(opponent), + "outcome": None if not game[5] else outcome(game[5], is_player_1), "created": game[6], "started": game[7], "duration": game[8], diff --git a/components/recentGames.tsx b/components/recentGames.tsx index 750a9e7..92855a1 100644 --- a/components/recentGames.tsx +++ b/components/recentGames.tsx @@ -1,7 +1,7 @@ import { CSSProperties } from 'react'; import friendlyTime from 'friendly-time'; -import { gameInfo, outcome } from '../api/api'; +import { gameInfo } from '../api/api'; var LeftAlignedTableColumn: CSSProperties = { textAlign: "left", @@ -13,21 +13,29 @@ var RightAlignedTableColumn: CSSProperties = { paddingRight: 16 } -function GameOutcome(props: { outcome: outcome }) { +function GameOutcome(props: { game: gameInfo }) { + var gameStatus = (() => { + return { + "resign": () => "Opgegeven", + "wait_for_opponent": () => "Aan het wachten op een tegenstander", + "in_progress": () => "Bezig", + "finished": () => { + return { + "w": "Gewonnen", + "l": "Verloren", + "d": "Gelijkspel" + }[props.game.outcome] + }, + }[props.game.status](); + })(); + var outcome = props.game.outcome; return { - { - "w": "Gewonnen", - "l": "Verloren", - "d": "Gelijkspel" - }[props.outcome] - } + color: + outcome == "w" ? "var(--disk-b-text)" : + outcome == "l" ? "var(--disk-a-text)" : + "var(--text)", + opacity: !["w", "l"].includes(outcome) ? 0.75 : 1.0 + }}>{gameStatus} } export default function RecentGames(props: { games?: Array }) { @@ -43,9 +51,9 @@ export default function RecentGames(props: { games?: Array }) { { props.games?.map(game => - {game.opponent.username} - - {game.moves.length -1} + {game.opponent?.username} + + {Math.max(0, game.moves.length -1)} {(() => { var timeCreated = new Date(game.created); return friendlyTime(timeCreated); diff --git a/pages/user.tsx b/pages/user.tsx index 280f8e2..6462109 100644 --- a/pages/user.tsx +++ b/pages/user.tsx @@ -109,8 +109,6 @@ export default function AccountPage() { data: { "id": id || self_id } }); - console.log(userGamesReq.data) - setGameInfo(userGamesReq.data); } else { window.history.go(-1); -- cgit v1.2.3