feat: generalized breakdown

This commit is contained in:
TresAbhi committed 2023-09-23 22:02:30 +00:00
1 parent e37e0ccf9f
commit 63257a13f5
4 files changed
+55 -73

No files matched your search

+2 -1
View File
@@ -13,4 +13,5 @@ test.*
/docs/.vitepress/dist /docs/.vitepress/dist
/docs/.vitepress/cache /docs/.vitepress/cache
servers.csv servers.csv
.next/ .next/
tsconfig.tsbuildinfo
+51 -70
View File
@@ -1,40 +1,32 @@
import getWN8Percentile from '../../../core/blitz/getWN8Percentile'; import { Percentile } from '../../../constants/percentiles';
import { TankType } from '../../../core/blitz/tankopedia'; import { TankType } from '../../../core/blitz/tankopedia';
import { theme } from '../../../stitches.config'; import { theme } from '../../../stitches.config';
import { TREE_TYPE_ICONS, TreeTypeEnum } from '../../Tanks'; import { TREE_TYPE_ICONS, TreeTypeEnum } from '../../Tanks';
import { RowStat } from './RowStat'; import { RowStat } from './RowStat';
export interface RowProps { type RowProps = (
name: string; | {
winrate: number; type: 'tank';
careerWinrate: number; treeType?: TreeTypeEnum;
WN8?: number; tankType?: TankType;
careerWN8?: number; }
damage: number; | {
careerDamage: number; type: 'summary';
battles: number; }
careerBattles: number; ) & {
minimized: boolean; title: string;
isTank: boolean; minimized?: boolean;
treeType?: TreeTypeEnum;
tankType?: TankType;
}
export function Row({ rows: {
isTank, title: string;
minimized, current?: number | string;
name, career?: number | string;
winrate, delta?: number;
careerWinrate, percentile?: Percentile;
WN8, }[];
careerWN8, };
damage,
careerDamage, export function Row(props: RowProps) {
battles,
careerBattles,
treeType,
tankType,
}: RowProps) {
return ( return (
<div <div
style={{ style={{
@@ -55,26 +47,30 @@ export function Row({
backgroundColor: theme.colors.componentInteractive, backgroundColor: theme.colors.componentInteractive,
}} }}
> >
{isTank && treeType !== undefined && tankType !== undefined && ( {props.type === 'tank' &&
<img props.treeType !== undefined &&
src={TREE_TYPE_ICONS[treeType][tankType]} props.tankType !== undefined && (
style={{ width: 16, height: 16 }} <img
/> src={TREE_TYPE_ICONS[props.treeType][props.tankType]}
)} style={{ width: 16, height: 16 }}
/>
)}
<span <span
style={{ style={{
color: isTank color:
? treeType === TreeTypeEnum.Collector props.type === 'tank'
? theme.colors.textLowContrast_blue ? props.treeType === TreeTypeEnum.Collector
: treeType === TreeTypeEnum.Premium ? theme.colors.textLowContrast_blue
? theme.colors.textLowContrast_amber : props.treeType === TreeTypeEnum.Premium
: theme.colors.textHighContrast ? theme.colors.textLowContrast_amber
: theme.colors.textLowContrast, : theme.colors.textHighContrast
: theme.colors.textLowContrast,
fontWeight: 900, fontWeight: 900,
fontSize: 16, fontSize: 16,
}} }}
> >
{name} {props.title}
</span> </span>
</div> </div>
@@ -85,31 +81,16 @@ export function Row({
paddingBottom: 8, paddingBottom: 8,
}} }}
> >
<RowStat {props.rows.map((row, index) => (
minimized={minimized} <RowStat
name={`Battles • ${careerBattles.toFixed(0)}`} minimized={props.minimized}
value={battles.toFixed(0)} key={index}
/> name={`${row.title} • ${row.career ?? '--'}`}
<RowStat value={row.current ?? '--'}
minimized={minimized} delta={row.delta}
name={`Winrate • ${(careerWinrate * 100).toFixed(2)}%`} percentile={row.percentile}
value={`${(winrate * 100).toFixed(2)}%`} />
delta={winrate - careerWinrate} ))}
/>
<RowStat
minimized={minimized}
name={`WN8 • ${
careerWN8 === undefined ? '--' : careerWN8.toFixed(0)
}`}
value={WN8 === undefined ? '--' : WN8.toFixed(0)}
percentile={WN8 === undefined ? undefined : getWN8Percentile(WN8)}
/>
<RowStat
minimized={minimized}
name={`Damage • ${careerDamage.toFixed(0)}`}
value={damage.toFixed(0)}
delta={damage - careerDamage}
/>
</div> </div>
</div> </div>
); );
@@ -4,7 +4,7 @@ import PercentileIndicator from '../../PercentileIndicator';
export interface RowStatProps { export interface RowStatProps {
name: string; name: string;
value: string | number; value?: string | number;
delta?: number; delta?: number;
percentile?: Percentile; percentile?: Percentile;
minimized?: boolean; minimized?: boolean;
+1 -1
View File
@@ -1 +1 @@
{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@sapphire/shapeshift/dist/index.d.ts","./node_modules/discord-api-types/globals.d.ts","./node_modules/discord-api-types/rest/common.d.ts","./node_modules/discord-api-types/payloads/common.d.ts","./node_modules/discord-api-types/payloads/v10/permissions.d.ts","./node_modules/discord-api-types/payloads/v10/user.d.ts","./node_modules/discord-api-types/payloads/v10/emoji.d.ts","./node_modules/discord-api-types/payloads/v10/oauth2.d.ts","./node_modules/discord-api-types/payloads/v10/sticker.d.ts","./node_modules/discord-api-types/payloads/v10/guild.d.ts","./node_modules/discord-api-types/payloads/v10/teams.d.ts","./node_modules/discord-api-types/payloads/v10/application.d.ts","./node_modules/discord-api-types/payloads/v10/autoModeration.d.ts","./node_modules/discord-api-types/payloads/v10/guildScheduledEvent.d.ts","./node_modules/discord-api-types/payloads/v10/stageInstance.d.ts","./node_modules/discord-api-types/payloads/v10/webhook.d.ts","./node_modules/discord-api-types/payloads/v10/auditLog.d.ts","./node_modules/discord-api-types/payloads/v10/invite.d.ts","./node_modules/discord-api-types/rest/v10/application.d.ts","./node_modules/discord-api-types/rest/v10/auditLog.d.ts","./node_modules/discord-api-types/rest/v10/autoModeration.d.ts","./node_modules/discord-api-types/utils/internals.d.ts","./node_modules/discord-api-types/rest/v10/channel.d.ts","./node_modules/discord-api-types/rest/Line truncated {"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@sapphire/shapeshift/dist/index.d.ts","./node_modules/discord-api-types/globals.d.ts","./node_modules/discord-api-types/rest/common.d.ts","./node_modules/discord-api-types/payloads/common.d.ts","./node_modules/discord-api-types/payloads/v10/permissions.d.ts","./node_modules/discord-api-types/payloads/v10/user.d.ts","./node_modules/discord-api-types/payloads/v10/emoji.d.ts","./node_modules/discord-api-types/payloads/v10/oauth2.d.ts","./node_modules/discord-api-types/payloads/v10/sticker.d.ts","./node_modules/discord-api-types/payloads/v10/guild.d.ts","./node_modules/discord-api-types/payloads/v10/teams.d.ts","./node_modules/discord-api-types/payloads/v10/application.d.ts","./node_modules/discord-api-types/payloads/v10/autoModeration.d.ts","./node_modules/discord-api-types/payloads/v10/guildScheduledEvent.d.ts","./node_modules/discord-api-types/payloads/v10/stageInstance.d.ts","./node_modules/discord-api-types/payloads/v10/webhook.d.ts","./node_modules/discord-api-types/payloads/v10/auditLog.d.ts","./node_modules/discord-api-types/payloads/v10/invite.d.ts","./node_modules/discord-api-types/rest/v10/application.d.ts","./node_modules/discord-api-types/rest/v10/auditLog.d.ts","./node_modules/discord-api-types/rest/v10/autoModeration.d.ts","./node_modules/discord-api-types/utils/internals.d.ts","./node_modules/discord-api-types/rest/v10/channel.d.ts","./node_modules/discord-api-types/rest/Line truncated