Files
blitzkit/src/components/AllStatsOverview/index.tsx
T

104 lines
2.8 KiB
TypeScript
Raw Normal View History

2024-03-08 20:29:35 -06:00
import { Locale } from 'discord.js';
2023-10-14 11:06:03 -05:00
import { AllStats, SupplementaryStats } from '../../core/blitz/getAccountInfo';
2024-03-08 20:29:35 -06:00
import { translator } from '../../core/localization/translator';
2023-07-11 19:54:57 +00:00
import { WN8Display } from './components/WN8Display';
2023-06-28 17:58:36 +00:00
import {
WN8SurroundingStat,
WN8SurroundingStatAlign,
2023-07-11 19:54:57 +00:00
} from './components/WN8SurroundingStat';
2023-06-28 17:58:36 +00:00
export interface AllStatsOverviewProps {
stats: AllStats;
supplementaryStats: SupplementaryStats;
2024-03-08 20:29:35 -06:00
locale: Locale;
2023-06-28 17:58:36 +00:00
}
export default function AllStatsOverview({
stats,
2024-03-08 20:29:35 -06:00
locale,
2023-06-28 17:58:36 +00:00
supplementaryStats,
}: AllStatsOverviewProps) {
2024-03-08 20:29:35 -06:00
const { t } = translator(locale);
2023-06-28 17:58:36 +00:00
return (
<div
style={{
display: 'flex',
gap: -64,
width: '100%',
2023-06-28 17:58:36 +00:00
}}
>
<div
style={{
display: 'flex',
flexDirection: 'column',
gap: 8,
alignItems: 'flex-end',
flex: 1,
}}
>
<WN8SurroundingStat
2024-03-08 20:29:35 -06:00
label={t`bot.commands.stats.body.battles`}
2023-06-28 17:58:36 +00:00
value={stats.battles.toLocaleString()}
align={WN8SurroundingStatAlign.Right}
/>
<WN8SurroundingStat
2024-03-08 20:29:35 -06:00
label={t`bot.commands.stats.body.winrate`}
2023-06-28 17:58:36 +00:00
value={`${(100 * (stats.wins / stats.battles)).toFixed(2)}%`}
align={WN8SurroundingStatAlign.Right}
padded
/>
<WN8SurroundingStat
2024-03-08 20:29:35 -06:00
label={t`bot.commands.stats.body.damage`}
2023-06-28 17:58:36 +00:00
value={Math.round(
stats.damage_dealt / stats.battles,
).toLocaleString()}
align={WN8SurroundingStatAlign.Right}
padded
/>
<WN8SurroundingStat
2024-03-08 20:29:35 -06:00
label={t`bot.commands.stats.body.damage_ratio`}
2023-06-28 17:58:36 +00:00
value={(stats.damage_dealt / stats.damage_received).toFixed(2)}
align={WN8SurroundingStatAlign.Right}
/>
</div>
2024-03-08 20:29:35 -06:00
<WN8Display locale={locale} wn8={supplementaryStats.WN8} />
2023-06-28 17:58:36 +00:00
<div
style={{
display: 'flex',
flexDirection: 'column',
gap: 8,
flex: 1,
}}
>
<WN8SurroundingStat
2024-03-08 20:29:35 -06:00
label={t`bot.commands.stats.body.tier`}
value={
supplementaryStats.tier ? supplementaryStats.tier.toFixed(2) : '--'
}
2023-06-28 17:58:36 +00:00
/>
<WN8SurroundingStat
2024-03-08 20:29:35 -06:00
label={t`bot.commands.stats.body.survival`}
2023-06-28 17:58:36 +00:00
value={`${(100 * (stats.survived_battles / stats.battles)).toFixed(
2,
)}%`}
padded
/>
<WN8SurroundingStat
2024-03-08 20:29:35 -06:00
label={t`bot.commands.stats.body.accuracy`}
2023-06-28 17:58:36 +00:00
value={`${(100 * (stats.hits / stats.shots)).toFixed(2)}%`}
padded
/>
<WN8SurroundingStat
2024-03-08 20:29:35 -06:00
label={t`bot.commands.stats.body.kill_ratio`}
2023-06-28 17:58:36 +00:00
value={(
stats.frags /
(stats.battles - stats.survived_battles)
).toFixed(2)}
/>
</div>
</div>
);
}