diff --git a/src/components/Breakdown/components/Row.tsx b/src/components/Breakdown/components/Row.tsx index c92f28ced..c99ed1e91 100644 --- a/src/components/Breakdown/components/Row.tsx +++ b/src/components/Breakdown/components/Row.tsx @@ -1,6 +1,7 @@ import getWN8Percentile from '../../../core/blitz/getWN8Percentile'; +import { TankType } from '../../../core/blitz/tankopedia'; import { theme } from '../../../stitches.config'; -import { RowDiscriminator } from './RowDiscriminator'; +import { TREE_TYPE_ICONS, TreeTypeEnum } from '../../Tanks'; import { RowStat } from './RowStat'; export interface RowProps { @@ -13,14 +14,14 @@ export interface RowProps { careerDamage: number; battles: number; careerBattles: number; - icon?: string; minimized: boolean; - isListing: boolean; - naked?: boolean; + isTank: boolean; + treeType?: TreeTypeEnum; + tankType?: TankType; } export function Row({ - isListing, + isTank, minimized, name, winrate, @@ -31,45 +32,85 @@ export function Row({ careerDamage, battles, careerBattles, - icon, - naked, + treeType, + tankType, }: RowProps) { return (
- +
+ {isTank && treeType !== undefined && tankType !== undefined && ( + + )} + + {name} + +
- - - - +
+ + + + +
); } diff --git a/src/components/Breakdown/components/RowDiscriminator.tsx b/src/components/Breakdown/components/RowDiscriminator.tsx deleted file mode 100644 index 04bc4c2d3..000000000 --- a/src/components/Breakdown/components/RowDiscriminator.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { theme } from '../../../stitches.config'; - -export interface RowDiscriminatorProps { - name: string; - icon?: string; - minimized: boolean; -} - -export function RowDiscriminator({ - name, - icon, - minimized, -}: RowDiscriminatorProps) { - return ( -
- {!minimized && icon && ( - - )} - - - {name} - -
- ); -} diff --git a/src/components/Breakdown/components/RowStat.tsx b/src/components/Breakdown/components/RowStat.tsx index cf58e3a14..43ce8e133 100644 --- a/src/components/Breakdown/components/RowStat.tsx +++ b/src/components/Breakdown/components/RowStat.tsx @@ -53,6 +53,7 @@ export function RowStat({ diff --git a/src/components/Breakdown/index.ts b/src/components/Breakdown/index.ts index 8bb31e1ff..c2782754b 100644 --- a/src/components/Breakdown/index.ts +++ b/src/components/Breakdown/index.ts @@ -1,4 +1,4 @@ export * from './components/Root'; export * from './components/Row'; -export * from './components/RowDiscriminator'; export * from './components/RowStat'; + diff --git a/src/components/Tanks/components/Item.tsx b/src/components/Tanks/components/Item.tsx index 9d9b52ef7..4aa2e77ea 100644 --- a/src/components/Tanks/components/Item.tsx +++ b/src/components/Tanks/components/Item.tsx @@ -2,6 +2,7 @@ import { TANK_ICONS, TANK_ICONS_COLLECTOR, TANK_ICONS_PREMIUM, + TankType, } from '../../../core/blitz/tankopedia'; import { theme } from '../../../stitches.config'; @@ -15,7 +16,7 @@ export type TreeTypeString = 'techtree' | 'premium' | 'collector'; export interface ItemProps { image?: string; - tankType?: string; + tankType?: TankType; name: string; treeType: TreeTypeEnum; } @@ -26,7 +27,7 @@ const TREE_TYPE_COLOR = { [TreeTypeEnum.Collector]: '_blue', } as const; -const TREE_TYPE_ICONS = { +export const TREE_TYPE_ICONS = { [TreeTypeEnum.TechTree]: TANK_ICONS, [TreeTypeEnum.Premium]: TANK_ICONS_PREMIUM, [TreeTypeEnum.Collector]: TANK_ICONS_COLLECTOR, diff --git a/src/core/blitz/tankopedia.ts b/src/core/blitz/tankopedia.ts index 1a51edbe8..ffb2cf6c8 100644 --- a/src/core/blitz/tankopedia.ts +++ b/src/core/blitz/tankopedia.ts @@ -1,6 +1,8 @@ import { secrets } from '../node/secrets'; import getWargamingResponse from './getWargamingResponse'; +export type TankType = 'AT-SPG' | 'lightTank' | 'mediumTank' | 'heavyTank'; + export interface TankopediaEntry { name: string; nation: string; @@ -10,7 +12,7 @@ export interface TankopediaEntry { cost: { price_credit: number; price_gold: number }; images: { preview: string; normal: string }; tank_id: number; - type: string; + type: TankType; description: string; } @@ -51,21 +53,21 @@ export const tankopediaInfo = getWargamingResponse( ); console.log('Cached tankopedia info'); -export const TANK_ICONS: Record = { +export const TANK_ICONS: Record = { 'AT-SPG': 'https://i.imgur.com/BIHSEH0.png', lightTank: 'https://i.imgur.com/CSNha5V.png', mediumTank: 'https://i.imgur.com/wvf3ltm.png', heavyTank: 'https://i.imgur.com/ECeqlZa.png', }; -export const TANK_ICONS_PREMIUM: Record = { +export const TANK_ICONS_PREMIUM: Record = { 'AT-SPG': 'https://i.imgur.com/TCu3EdR.png', lightTank: 'https://i.imgur.com/zdkpTRb.png', mediumTank: 'https://i.imgur.com/3z7eHX6.png', heavyTank: 'https://i.imgur.com/P3vbmyA.png', }; -export const TANK_ICONS_COLLECTOR: Record = { +export const TANK_ICONS_COLLECTOR: Record = { 'AT-SPG': 'https://i.imgur.com/WTjeirB.png', lightTank: 'https://i.imgur.com/EwhtKkU.png', mediumTank: 'https://i.imgur.com/u8YDMBh.png', diff --git a/src/renderers/today.tsx b/src/renderers/today.tsx index e231cb280..d378cbcb2 100644 --- a/src/renderers/today.tsx +++ b/src/renderers/today.tsx @@ -5,6 +5,7 @@ import TitleBar from '../components/TitleBar'; import Wrapper from '../components/Wrapper'; import calculateWN8 from '../core/blitz/calculateWN8'; import getTankStats from '../core/blitz/getTankStats'; +import getTreeType from '../core/blitz/getTreeType'; import getWargamingResponse from '../core/blitz/getWargamingResponse'; import resolveTankName from '../core/blitz/resolveTankName'; import sumStats from '../core/blitz/sumStats'; @@ -117,28 +118,27 @@ export default async function today( // this code unreadable on god will forget tomorrow no cap ...(order.length === 0 ? [] : [0]), ...(isFinite(limit) ? order.slice(0, limit) : order), - ].map(async (tankId, index) => { - const tankStats = diffed[tankId]; - const career = careerStats[tankId]; + ].map(async (id, index) => { + const tankStats = diffed[id]; + const career = careerStats[id]; + const tankopediaEntry = (await tankopedia)[id]; return ( 4} - key={tankId} - name={tankId === 0 ? 'Total' : await resolveTankName(tankId)} + key={id} + name={id === 0 ? 'Total' : await resolveTankName(id)} winrate={tankStats.wins / tankStats.battles} careerWinrate={career.wins / career.battles} - WN8={isNaN(todayWN8s[tankId]) ? undefined : todayWN8s[tankId]} - careerWN8={isNaN(careerWN8s[tankId]) ? undefined : careerWN8s[tankId]} + WN8={isNaN(todayWN8s[id]) ? undefined : todayWN8s[id]} + careerWN8={isNaN(careerWN8s[id]) ? undefined : careerWN8s[id]} damage={tankStats.damage_dealt / tankStats.battles} careerDamage={career.damage_dealt / career.battles} battles={tankStats.battles} careerBattles={career.battles} - icon={ - tankId === 0 ? undefined : (await tankopedia)[tankId]?.images.normal - } /> ); }), @@ -146,7 +146,7 @@ export default async function today( return naked ? ( - {rows.slice(1)} + {rows} ) : (