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,