From c6c78f2661e355c38ca910258ddc2cc7efbdb882 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com>
Date: Sun, 30 Jun 2024 18:26:05 -0500
Subject: [PATCH] feat: some data
---
src/app/tools/tank-performance/page.tsx | 113 +++++++++++++++++++++---
src/components/TankRowHeaderCell.tsx | 61 +++++--------
2 files changed, 124 insertions(+), 50 deletions(-)
diff --git a/src/app/tools/tank-performance/page.tsx b/src/app/tools/tank-performance/page.tsx
index 8e2c51aae..8acfacabe 100644
--- a/src/app/tools/tank-performance/page.tsx
+++ b/src/app/tools/tank-performance/page.tsx
@@ -1,5 +1,6 @@
-import { Table } from '@radix-ui/themes';
-import { use } from 'react';
+import { InfoCircledIcon } from '@radix-ui/react-icons';
+import { Callout, Flex, Table } from '@radix-ui/themes';
+import { use, useMemo } from 'react';
import PageWrapper from '../../../components/PageWrapper';
import { TankRowHeaderCell } from '../../../components/TankRowHeaderCell';
import { averageDefinitionsArray } from '../../../core/blitzkit/averageDefinitions';
@@ -8,20 +9,108 @@ import { tankDefinitions } from '../../../core/blitzkit/tankDefinitions';
export default function Page() {
const awaitedTankDefinitions = use(tankDefinitions);
const awaitedAverageDefinitionsArray = use(averageDefinitionsArray);
+ const tankAverages = useMemo(
+ () => awaitedAverageDefinitionsArray.sort((a, b) => b.mu.wins - a.mu.wins),
+ [],
+ );
+ const samples = useMemo(
+ () => awaitedAverageDefinitionsArray.reduce((a, b) => a + b.samples, 0),
+ [],
+ );
return (
-
- {awaitedAverageDefinitionsArray.map((averages) => {
- const tank = awaitedTankDefinitions[averages.id];
+
+
+
+
+
+
+ Based on {samples.toLocaleString()} players with at least 5,000
+ career battles and 1 battle in the past 120 days. Updated daily.
+ Stats displayed as an average per battle.
+
+
+
- return (
-
-
- {Math.round(averages.mu.wins * 100)}%
-
- );
- })}
+
+
+
+ Tank
+
+ Winrate
+
+
+ Damage
+
+
+ Survival
+
+
+ XP
+
+
+ Kills
+
+
+ Spots
+
+
+ Accuracy
+
+
+ Shots
+
+
+ Hits
+
+
+ Capture points
+
+
+
+
+
+ {tankAverages.map((averages) => {
+ const tank = awaitedTankDefinitions[averages.id];
+
+ return (
+
+
+
+ {Math.round(averages.mu.wins * 100)}%
+
+
+ {Math.round(averages.mu.damage_dealt).toLocaleString()}
+
+
+ {Math.round(averages.mu.survived_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.capture_points.toFixed(1)}
+
+
+ );
+ })}
+
);
diff --git a/src/components/TankRowHeaderCell.tsx b/src/components/TankRowHeaderCell.tsx
index 5251d74b7..7e85f367a 100644
--- a/src/components/TankRowHeaderCell.tsx
+++ b/src/components/TankRowHeaderCell.tsx
@@ -1,7 +1,7 @@
-import { Table, Text } from '@radix-ui/themes';
+import { Flex, Table } from '@radix-ui/themes';
import { TankDefinition } from '../core/blitzkit/tankDefinitions';
import { tankIcon } from '../core/blitzkit/tankIcon';
-import { theme } from '../stitches.config';
+import { ExperimentIcon } from './ExperimentIcon';
import { Link } from './Link';
interface TankRowHeaderCellProps {
@@ -10,52 +10,37 @@ interface TankRowHeaderCellProps {
export function TankRowHeaderCell({ tank }: TankRowHeaderCellProps) {
return (
-
+
+
-
-
-
+
+
+ {tank.testing && (
+
+ )}
{tank.name}
-
+
);