diff --git a/public/assets/versions.json b/public/assets/versions.json index a5d21bbc5..0291bc5a3 100644 --- a/public/assets/versions.json +++ b/public/assets/versions.json @@ -1 +1 @@ -["1.10.0","1.10.1","1.10.2","1.11.0","1.12.0","1.12.1","1.12.2","1.12.3","1.12.4","1.12.5","1.12.6","1.12.7","1.12.8","1.12.9","1.13.0","1.13.1","1.13.2","1.13.3","1.14.0","1.14.1","1.14.2","1.14.3","1.14.4","1.15.0","1.15.1","1.15.10","1.15.11","1.15.12","1.15.13","1.15.2","1.15.3","1.15.4","1.15.5","1.15.6","1.15.7","1.15.8","1.15.9","1.16.0","1.16.1","1.16.2","1.16.3","1.16.4","1.17.0","1.17.1","1.17.2","1.18.0","1.18.1","1.18.2","1.18.3","1.19.0","1.19.1","1.19.2","1.19.3","1.19.4","1.19.5","1.19.6","1.20.0","1.20.1","1.20.2","1.20.3","1.3.0","1.3.1","1.3.2","1.3.3","1.4.0","1.4.1","1.5.0","1.5.1","1.5.2","1.5.3","1.5.4","1.6.0","1.7.0","1.7.1","1.7.2","1.7.3-1.7.4","1.7.5","1.7.6","1.7.7","1.8.0","1.8.1","1.9.0","1.9.1","1.9.2","1.9.3","1.9.4","1.9.5"] \ No newline at end of file +["1.10.0","1.10.1","1.10.2","1.11.0","1.12.0","1.12.1","1.12.2","1.12.3","1.12.4","1.12.5","1.12.6","1.12.7","1.12.8","1.12.9","1.13.0","1.13.1","1.13.2","1.13.3","1.14.0","1.14.1","1.14.2","1.14.3","1.14.4","1.15.0","1.15.1","1.15.10","1.15.11","1.15.12","1.15.13","1.15.2","1.15.3","1.15.4","1.15.5","1.15.6","1.15.7","1.15.8","1.15.9","1.16.0","1.16.1","1.16.2","1.16.3","1.16.4","1.17.0","1.17.1","1.17.2","1.18.0","1.18.1","1.18.2","1.18.3","1.19.0","1.19.1","1.19.2","1.19.3","1.19.4","1.19.5","1.19.6","1.20.0","1.20.1","1.20.2","1.20.3","1.20.4","1.3.0","1.3.1","1.3.2","1.3.3","1.4.0","1.4.1","1.5.0","1.5.1","1.5.2","1.5.3","1.5.4","1.6.0","1.7.0","1.7.1","1.7.2","1.7.3-1.7.4","1.7.5","1.7.6","1.7.7","1.8.0","1.8.1","1.9.0","1.9.1","1.9.2","1.9.3","1.9.4","1.9.5"] \ No newline at end of file diff --git a/src/app/page.tsx b/src/app/page.tsx index 31a679642..4798e234b 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,6 +1,6 @@ 'use client'; -import { Flex } from '@radix-ui/themes'; +import { Box, Flex } from '@radix-ui/themes'; import { Ad, AdType } from '../components/Ad'; import { AdMidSectionResponsive } from '../components/AdMidSectionResponsive'; import { @@ -11,6 +11,7 @@ import { ratingTool, sessionTool, tankopediaTool, + tankPerformanceTool, } from '../constants/tools'; import { useAdExempt } from '../hooks/useAdExempt'; import { Hero } from './components/Hero'; @@ -64,13 +65,13 @@ export default function Page() { )} - + + - {!exempt && ( @@ -86,8 +87,13 @@ export default function Page() { )} + + + + + diff --git a/src/app/tools/session/page.tsx b/src/app/tools/session/page.tsx index d5f05aee1..7bb4b6328 100644 --- a/src/app/tools/session/page.tsx +++ b/src/app/tools/session/page.tsx @@ -13,7 +13,6 @@ import { Flex, Heading, IconButton, - Link, Select, Spinner, Table, @@ -23,6 +22,7 @@ import { import { debounce } from 'lodash'; import { use, useEffect, useMemo, useRef, useState } from 'react'; import PageWrapper from '../../../components/PageWrapper'; +import { TankRowHeaderCell } from '../../../components/TankRowHeaderCell'; import { UNLOCALIZED_REGION_NAMES_SHORT } from '../../../constants/regions'; import { STAT_KEYS, @@ -42,11 +42,9 @@ import searchPlayersAcrossRegions, { AccountListWithServer, } from '../../../core/blitz/searchPlayersAcrossRegions'; import { tankDefinitions } from '../../../core/blitzkit/tankDefinitions'; -import { tankIcon } from '../../../core/blitzkit/tankIcon'; import { tankAverages } from '../../../core/blitzstars/tankAverages'; import { deltaTankStats } from '../../../core/statistics/deltaTankStats'; import { useWideFormat } from '../../../hooks/useWideFormat'; -import { theme } from '../../../stitches.config'; import mutateSession, { SessionTracking, useSession, @@ -483,55 +481,7 @@ export default function Page({ overflow: 'hidden', }} > - - - {tank.name} - -
- - - {tank.name} - - - + {session.columns.map((column) => ( {statsPretty[column]} ))} diff --git a/src/app/tools/tank-performance/page.tsx b/src/app/tools/tank-performance/page.tsx new file mode 100644 index 000000000..8e2c51aae --- /dev/null +++ b/src/app/tools/tank-performance/page.tsx @@ -0,0 +1,28 @@ +import { Table } from '@radix-ui/themes'; +import { use } from 'react'; +import PageWrapper from '../../../components/PageWrapper'; +import { TankRowHeaderCell } from '../../../components/TankRowHeaderCell'; +import { averageDefinitionsArray } from '../../../core/blitzkit/averageDefinitions'; +import { tankDefinitions } from '../../../core/blitzkit/tankDefinitions'; + +export default function Page() { + const awaitedTankDefinitions = use(tankDefinitions); + const awaitedAverageDefinitionsArray = use(averageDefinitionsArray); + + return ( + + + {awaitedAverageDefinitionsArray.map((averages) => { + const tank = awaitedTankDefinitions[averages.id]; + + return ( + + + {Math.round(averages.mu.wins * 100)}% + + ); + })} + + + ); +} diff --git a/src/components/TankRowHeaderCell.tsx b/src/components/TankRowHeaderCell.tsx new file mode 100644 index 000000000..5251d74b7 --- /dev/null +++ b/src/components/TankRowHeaderCell.tsx @@ -0,0 +1,62 @@ +import { Table, Text } from '@radix-ui/themes'; +import { TankDefinition } from '../core/blitzkit/tankDefinitions'; +import { tankIcon } from '../core/blitzkit/tankIcon'; +import { theme } from '../stitches.config'; +import { Link } from './Link'; + +interface TankRowHeaderCellProps { + tank: TankDefinition; +} + +export function TankRowHeaderCell({ tank }: TankRowHeaderCellProps) { + return ( + + + {tank.name} + +
+ + + {tank.name} + + + + ); +} diff --git a/src/constants/tools.tsx b/src/constants/tools.tsx index 4ab52b6e7..06e56d880 100644 --- a/src/constants/tools.tsx +++ b/src/constants/tools.tsx @@ -106,6 +106,18 @@ export const playerStatsTool: Tool = { image: 'YelSOfT', }; +export const tankPerformanceTool: Tool = { + id: 'tank-performance', + title: 'Tank performance', + description: 'Tank performance statistics', + pageDescription: 'Tank performance statistics in World of Tanks Blitz', + button: { + text: 'View tanks', + color: 'jade', + }, + image: 'vOKFB03', +}; + export const TOOLS: Tool[] = [ tankopediaTool, ratingTool, @@ -114,4 +126,5 @@ export const TOOLS: Tool[] = [ sessionTool, discordTool, moreTool, + tankPerformanceTool, ]; diff --git a/src/core/blitzkit/averageDefinitions/index.ts b/src/core/blitzkit/averageDefinitions/index.ts index 5f37ae1d0..6b0031f43 100644 --- a/src/core/blitzkit/averageDefinitions/index.ts +++ b/src/core/blitzkit/averageDefinitions/index.ts @@ -37,3 +37,10 @@ export const averageDefinitions = fetch(asset('definitions/averages.pb')) ); }) .then((data) => data.averages); + +export const averageDefinitionsArray = averageDefinitions.then((data) => + Object.entries(data).map(([key, value]) => ({ + id: Number(key), + ...(value as AverageDefinitionsEntry), + })), +);