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,
+ ),
[],
);