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.name} + -
- - + + + {tank.testing && ( + + )} {tank.name} - + );