Files
blitzkit/src/components/GenericAllStats.tsx
T

57 lines
2.0 KiB
TypeScript
Raw Normal View History

2023-06-01 19:16:29 +00:00
import getWN8Percentile from '../core/blitz/getWN8Percentile.js';
2023-06-23 16:58:17 +00:00
import isNumber from '../core/process/isNumber.js';
2023-06-01 18:36:39 +00:00
import { AllStats, SupplementaryStats } from '../types/accountInfo.js';
import GenericStats from './GenericStats/index.js';
export interface GenericAllStatsProps {
stats: AllStats;
supplementaryStats?: SupplementaryStats;
}
export default function GenericAllStats({
stats,
supplementaryStats,
}: GenericAllStatsProps) {
const damageRatio = stats.damage_dealt / stats.damage_received;
const killsToDeathRatio =
stats.frags / (stats.battles - stats.survived_battles);
2023-06-01 18:36:39 +00:00
return (
<GenericStats
stats={[
['Winrate', `${(100 * (stats.wins / stats.battles)).toFixed(2)}%`],
2023-06-01 19:16:29 +00:00
[
'WN8',
supplementaryStats
2023-06-23 16:58:17 +00:00
? isNumber(supplementaryStats.WN8)
? supplementaryStats.WN8!.toFixed(0)
: '--'
: undefined,
isNumber(supplementaryStats?.WN8)
? getWN8Percentile(supplementaryStats!.WN8!)
2023-06-01 19:16:29 +00:00
: undefined,
],
2023-06-01 18:36:39 +00:00
[
'Survival',
`${(100 * (stats.survived_battles / stats.battles)).toFixed(2)}%`,
],
['Accuracy', `${((stats.hits / stats.shots) * 100).toFixed(2)}%`],
['Battles', stats.battles],
['Wins', stats.wins],
['Losses', stats.losses],
['Average damage', (stats.damage_dealt / stats.battles).toFixed(0)],
2023-06-02 01:31:14 +00:00
['Average tier', supplementaryStats?.tier.toFixed(2)],
2023-06-01 18:36:39 +00:00
['Average XP', (stats.xp / stats.battles).toFixed(0)],
['Average shots', (stats.shots / stats.battles).toFixed(2)],
['Average hits', (stats.hits / stats.battles).toFixed(2)],
['Average kills', (stats.frags / stats.battles).toFixed(2)],
['Average spots', (stats.spotted / stats.battles).toFixed(2)],
['Damage ratio', isFinite(damageRatio) ? damageRatio.toFixed(2) : '--'],
2023-06-01 18:36:39 +00:00
[
'Kills to death ratio',
isFinite(killsToDeathRatio) ? killsToDeathRatio.toFixed(2) : '--',
2023-06-01 18:36:39 +00:00
],
]}
/>
);
}