From 16bee489897d2d828f23963c93308990926233ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Mon, 1 Jul 2024 19:41:13 -0500 Subject: [PATCH] feat: scaling --- .../tank-performance/components/Header.tsx | 36 +++++----- .../tank-performance/components/Info.tsx | 14 ++-- .../tank-performance/components/TankRow.tsx | 71 +++++++++++++------ .../tank-performance/components/Tanks.tsx | 5 +- 4 files changed, 78 insertions(+), 48 deletions(-) diff --git a/src/app/tools/tank-performance/components/Header.tsx b/src/app/tools/tank-performance/components/Header.tsx index 988f696fb..dcd672b75 100644 --- a/src/app/tools/tank-performance/components/Header.tsx +++ b/src/app/tools/tank-performance/components/Header.tsx @@ -2,47 +2,47 @@ import { Table } from '@radix-ui/themes'; export function Header() { return ( - + Tank - + Winrate - - Players + + Players (30d) - + Damage - + Survival - + XP - + Kills - + Spots - + Accuracy - + Shots - + Hits - - Damage ratio + + Dmg. ratio - - Damage received + + Dmg. taken - - Capture points + + Cap points diff --git a/src/app/tools/tank-performance/components/Info.tsx b/src/app/tools/tank-performance/components/Info.tsx index 8e10f37e7..0932d0c8b 100644 --- a/src/app/tools/tank-performance/components/Info.tsx +++ b/src/app/tools/tank-performance/components/Info.tsx @@ -9,6 +9,7 @@ import { discoveredIdsDefinitions } from '../../../../core/blitzkit/discoveredId export function Info() { const awaitedAverageDefinitions = use(averageDefinitions); const awaitedDiscoveredIdsDefinitions = use(discoveredIdsDefinitions); + const numberFormat = Intl.NumberFormat(undefined, { notation: 'compact' }); const ratio = awaitedDiscoveredIdsDefinitions.count / awaitedAverageDefinitions.scanned_players; @@ -20,13 +21,12 @@ export function Info() { - Based on{' '} - {Math.round( - ratio * awaitedAverageDefinitions.sampled_players, - ).toLocaleString()}{' '} - players with at least 5,000 career battles and 1 battle in the past - 120 days. {awaitedDiscoveredIdsDefinitions.count.toLocaleString()}{' '} - scanned in total. Updated daily. + Career stats based on{' '} + {numberFormat.format( + Math.round(ratio * awaitedAverageDefinitions.sampled_players), + )}{' '} + players with at least 5K career battles and 1 battle in the past 30 + days. Updated daily. diff --git a/src/app/tools/tank-performance/components/TankRow.tsx b/src/app/tools/tank-performance/components/TankRow.tsx index a676a52bd..145b0ac2f 100644 --- a/src/app/tools/tank-performance/components/TankRow.tsx +++ b/src/app/tools/tank-performance/components/TankRow.tsx @@ -1,7 +1,8 @@ import { Table } from '@radix-ui/themes'; -import { memo, use, useMemo } from 'react'; +import { memo, use } from 'react'; import { TankRowHeaderCell } from '../../../../components/TankRowHeaderCell'; import { averageDefinitions } from '../../../../core/blitzkit/averageDefinitions'; +import { discoveredIdsDefinitions } from '../../../../core/blitzkit/discoveredIdDefinitions'; import { TankDefinition } from '../../../../core/blitzkit/tankDefinitions'; interface TankRowProps { @@ -10,46 +11,72 @@ interface TankRowProps { export const TankRow = memo( ({ tank }) => { + const awaitedDiscoveredIdsDefinitions = use(discoveredIdsDefinitions); const awaitedAverageDefinitions = use(averageDefinitions); const averages = awaitedAverageDefinitions.averages[tank.id]; - const numberFormat = useMemo( - () => Intl.NumberFormat(undefined, { notation: 'compact' }), - [], - ); + const numberFormat = Intl.NumberFormat(undefined, { notation: 'compact' }); + const ratio = + awaitedDiscoveredIdsDefinitions.count / + awaitedAverageDefinitions.scanned_players; return ( - {Math.round(averages.mu.wins * 100)}% + {Math.round((averages.mu.wins / averages.mu.battles) * 100)}% - {numberFormat.format(Math.round(averages.samples))} + {numberFormat.format(Math.round(ratio * averages.samples))} - {Math.round(averages.mu.damage_dealt).toLocaleString()} + {Math.round( + averages.mu.damage_dealt / averages.mu.battles, + ).toLocaleString()} - {Math.round(averages.mu.survived_battles * 100)}% + {Math.round( + (averages.mu.survived_battles / averages.mu.battles) * 100, + )} + % - {Math.round(averages.mu.xp).toLocaleString()} - - {averages.mu.frags.toFixed(2)} - {averages.mu.spotted.toFixed(2)} - - {Math.round((averages.mu.hits / averages.mu.shots) * 100)}% - - {averages.mu.shots.toFixed(1)} - {averages.mu.hits.toFixed(1)} - - {(averages.mu.damage_dealt / averages.mu.damage_received).toFixed(2)} + {Math.round(averages.mu.xp / averages.mu.battles).toLocaleString()} - {Math.round(averages.mu.damage_received).toLocaleString()} + {(averages.mu.frags / averages.mu.battles).toFixed(2)} - {averages.mu.capture_points.toFixed(2)} + {(averages.mu.spotted / averages.mu.battles).toFixed(2)} + + + {Math.round( + (averages.mu.hits / + averages.mu.battles / + (averages.mu.shots / averages.mu.battles)) * + 100, + )} + % + + + {(averages.mu.shots / averages.mu.battles).toFixed(1)} + + + {(averages.mu.hits / averages.mu.battles).toFixed(1)} + + + {( + averages.mu.damage_dealt / + averages.mu.battles / + (averages.mu.damage_received / averages.mu.battles) + ).toFixed(2)} + + + {Math.round( + averages.mu.damage_received / averages.mu.battles, + ).toLocaleString()} + + + {(averages.mu.capture_points / averages.mu.battles).toFixed(2)} ); diff --git a/src/app/tools/tank-performance/components/Tanks.tsx b/src/app/tools/tank-performance/components/Tanks.tsx index 7a71a5aec..953080a3b 100644 --- a/src/app/tools/tank-performance/components/Tanks.tsx +++ b/src/app/tools/tank-performance/components/Tanks.tsx @@ -11,7 +11,10 @@ export function Tanks() { const awaitedTankDefinitions = use(tankDefinitions); const awaitedAverageDefinitionsArray = use(averageDefinitionsArray); const tankAverages = useMemo( - () => awaitedAverageDefinitionsArray.sort((a, b) => b.mu.wins - a.mu.wins), + () => + awaitedAverageDefinitionsArray.sort( + (a, b) => b.mu.wins / b.mu.battles - a.mu.wins / a.mu.battles, + ), [], );