From 82014845cb72716f9ee0a00762e2150958e53790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Fri, 3 May 2024 09:02:06 -0500 Subject: [PATCH] feat: add column --- src/app/tools/session/page.tsx | 99 +++++++++++++++++++++++++++++---- src/core/blitz/authURL.ts | 4 +- src/core/blitz/generateStats.ts | 4 +- 3 files changed, 95 insertions(+), 12 deletions(-) diff --git a/src/app/tools/session/page.tsx b/src/app/tools/session/page.tsx index 227463c74..19f5027aa 100644 --- a/src/app/tools/session/page.tsx +++ b/src/app/tools/session/page.tsx @@ -1,13 +1,20 @@ 'use client'; -import { ArrowDownIcon, MagnifyingGlassIcon } from '@radix-ui/react-icons'; +import { + ArrowDownIcon, + MagnifyingGlassIcon, + PlusIcon, +} from '@radix-ui/react-icons'; import { AlertDialog, Button, Card, + DropdownMenu, Flex, Heading, + IconButton, Link, + Select, Table, Text, TextField, @@ -19,6 +26,8 @@ import { UNLOCALIZED_REGION_NAMES_SHORT } from '../../../constants/regions'; import { generateStats, prettifyStats, + Stat, + STAT_KEYS, STAT_NAMES, sumStats, } from '../../../core/blitz/generateStats'; @@ -308,9 +317,83 @@ export default function Page() { Tank - {session.columns.map((column) => ( - - {STAT_NAMES[column]} + {session.columns.map((column, index) => ( + + {index === 0 && session.columns.length < 4 && ( + + + + + + + + + {STAT_KEYS.filter( + (item) => !session.columns.includes(item), + ).map((key) => ( + { + mutateSession((draft) => { + (draft as SessionTracking).columns.unshift( + key as Stat, + ); + }); + }} + > + {STAT_NAMES[key]} + + ))} + + + )} + + { + mutateSession((draft) => { + if (value === 'remove') { + (draft as SessionTracking).columns.splice(index, 1); + } else { + (draft as SessionTracking).columns[index] = + value as Stat; + } + }); + }} + > + + + + {STAT_KEYS.filter( + (item) => + !session.columns.includes(item) || item === column, + ).map((key) => ( + + {STAT_NAMES[key]} + + ))} + + + + Remove + + ))} @@ -332,9 +415,7 @@ export default function Page() { Total {session.columns.map((column) => ( - - {total![column]} - + {total![column]} ))} @@ -395,9 +476,7 @@ export default function Page() { {session.columns.map((column) => ( - - {statsPretty[column]} - + {statsPretty[column]} ))} ); diff --git a/src/core/blitz/authURL.ts b/src/core/blitz/authURL.ts index 19d3a14b6..b6853e9dd 100644 --- a/src/core/blitz/authURL.ts +++ b/src/core/blitz/authURL.ts @@ -2,7 +2,9 @@ import { Region } from '../../constants/regions'; import { WARGAMING_APPLICATION_ID } from '../../constants/wargamingApplicationID'; export function authURL(region: Region, callback?: string) { + if (typeof window === 'undefined') throw new Error('window is undefined'); + return `https://api.worldoftanks.${region}/wot/auth/login/?application_id=${WARGAMING_APPLICATION_ID}&redirect_uri=${encodeURIComponent( - `${location.origin}/callback/wargaming/${callback ? `?return=${location.href}` : ''}`, + `${window.location.origin}/callback/wargaming/${callback ? `?return=${location.href}` : ''}`, )}`; } diff --git a/src/core/blitz/generateStats.ts b/src/core/blitz/generateStats.ts index 836cee06e..b3406ca0f 100644 --- a/src/core/blitz/generateStats.ts +++ b/src/core/blitz/generateStats.ts @@ -8,10 +8,12 @@ export const STAT_NAMES: Record = { winrate: 'Winrate', wn8: 'WN8', averageDamage: 'Damage', - damage: 'Damage', + damage: 'Accumulated damage', wins: 'Wins', }; +export const STAT_KEYS = Object.keys(STAT_NAMES) as Stat[]; + export function generateStats(s: AllStats, e?: AllStats) { return { battles: s.battles,