diff --git a/packages/website/src/pages/tools/session/_index.tsx b/packages/website/src/pages/tools/session/_index.tsx index 2c4657bba..c549176dc 100644 --- a/packages/website/src/pages/tools/session/_index.tsx +++ b/packages/website/src/pages/tools/session/_index.tsx @@ -1,20 +1,19 @@ import { - STAT_KEYS, - STAT_NAMES, + compositeStats, + compositeStatsKeys, deltaTankStats, fetchAverageDefinitions, fetchTankDefinitions, - generateStats, + formatCompositeStat, getAccountInfo, getTankStats, idToRegion, - prettifyStats, searchPlayersAcrossRegions, - sumBlitzStarsStats, + sumCompositeStats, type AccountListWithServer, + type CompositeStatsKey, type IndividualAccountInfo, type IndividualTankStats, - type Stat, } from '@blitzkit/core'; import strings from '@blitzkit/core/lang/en-US.json'; import { @@ -85,14 +84,12 @@ function Content() { .map((entry) => { const tank = tankDefinitions.tanks[entry.tank_id]; const average = tankAverages.averages[tank.id]; - const stats = generateStats(entry.all, average?.mu); - const statsPretty = prettifyStats(stats); + const composite = compositeStats( + { ...entry.all, battle_life_time: entry.battle_life_time }, + average?.mu, + ); - return { - tank, - stats, - statsPretty, - }; + return { tank, composite }; }) : undefined, [session.tracking && session.player, tankStatsB], @@ -100,7 +97,7 @@ function Content() { const total = useMemo( () => delta - ? prettifyStats(sumBlitzStarsStats(delta.map(({ stats }) => stats))) + ? sumCompositeStats(delta.map(({ composite }) => composite)) : undefined, [delta], ); @@ -307,13 +304,12 @@ function Content() { Tank + {session.columns.map((column, index) => ( {index === 0 && session.columns.length < 4 && ( @@ -334,22 +330,22 @@ function Content() { - {STAT_KEYS.filter( - (item) => !session.columns.includes(item), - ).map((key) => ( - { - mutateSession((draft) => { - (draft as SessionTracking).columns.unshift( - key as Stat, - ); - }); - }} - > - {STAT_NAMES[key]} - - ))} + {compositeStatsKeys + .filter((item) => !session.columns.includes(item)) + .map((key) => ( + { + mutateSession((draft) => { + (draft as SessionTracking).columns.unshift( + key, + ); + }); + }} + > + {strings.common.composite_stats[key]} + + ))} )} @@ -362,7 +358,7 @@ function Content() { (draft as SessionTracking).columns.splice(index, 1); } else { (draft as SessionTracking).columns[index] = - value as Stat; + value as CompositeStatsKey; } }); }} @@ -370,14 +366,16 @@ function Content() { - {STAT_KEYS.filter( - (item) => - !session.columns.includes(item) || item === column, - ).map((key) => ( - - {STAT_NAMES[key]} - - ))} + {compositeStatsKeys + .filter( + (item) => + !session.columns.includes(item) || item === column, + ) + .map((key) => ( + + {strings.common.composite_stats[key]} + + ))} @@ -405,11 +403,13 @@ function Content() { Total {session.columns.map((column) => ( - {total![column]} + + {formatCompositeStat(total![column], column, total!)} + ))} - {delta.map(({ statsPretty, tank }) => { + {delta.map(({ tank, composite }) => { return ( {session.columns.map((column) => ( - {statsPretty[column]} + + {formatCompositeStat( + composite[column], + column, + composite, + )} + ))} ); diff --git a/packages/website/src/stores/session.ts b/packages/website/src/stores/session.ts index 333e2ce28..303852dfd 100644 --- a/packages/website/src/stores/session.ts +++ b/packages/website/src/stores/session.ts @@ -1,11 +1,15 @@ -import type { IndividualTankStats, Region, Stat } from '@blitzkit/core'; +import type { + CompositeStatsKey, + IndividualTankStats, + Region, +} from '@blitzkit/core'; import { merge } from 'lodash-es'; import { create } from 'zustand'; import { persist } from 'zustand/middleware'; import { createContextualStore } from '../core/zustand/createContextualStore'; interface SessionBase { - columns: Stat[]; + columns: CompositeStatsKey[]; } export interface SessionTracking extends SessionBase { @@ -28,10 +32,15 @@ export const Session = createContextualStore(() => create()( persist( (_) => ({ - columns: ['battles', 'winrate', 'wn8', 'averageDamage'], + columns: [ + 'cumulative_battles', + 'normalized_wins', + 'cumulative_wn8', + 'normalized_damage_dealt', + ], tracking: false, }), - { name: 'session-2', merge: (a, b) => merge(b, a) }, + { name: 'session-3', merge: (a, b) => merge(b, a) }, ), ), );