feat: some more stats

This commit is contained in:
TrèsAbhi committed 2024-04-04 15:47:27 -05:00
1 parent 3448427de0
commit 096122d43c
1 file changed
+65 -13
+65 -13
View File
@@ -69,28 +69,65 @@ export default function Page() {
function Row({ function Row({
value, value,
decimals,
name, name,
display,
deltaType = 'higherIsBetter',
}: { }: {
name: string; name: string;
value: (member: Awaited<ReturnType<typeof tankCharacteristics>>) => number; value:
decimals?: number; | keyof Awaited<ReturnType<typeof tankCharacteristics>>
| ((
member: Awaited<ReturnType<typeof tankCharacteristics>>,
) => number | undefined);
display: (
member: Awaited<ReturnType<typeof tankCharacteristics>>,
) => number | string;
deltaType?: 'higherIsBetter' | 'lowerIsBetter';
}) { }) {
const values = stats.map(value); const values = stats.map((stat) =>
typeof value === 'function' ? value(stat) : (stat[value] as number),
);
return ( return (
<Table.Row> <Table.Row>
<Table.RowHeaderCell>{name}</Table.RowHeaderCell> <Table.RowHeaderCell>
<Flex
align="center"
justify="center"
style={{
width: '100%',
height: '100%',
}}
>
{name}
</Flex>
</Table.RowHeaderCell>
{values.map((value, index) => ( {values.map((value, index) => (
<Table.Cell key={index} justify="center"> <Table.Cell key={index}>
<Text <Flex
color={ align="center"
index === 0 ? undefined : value > values[0] ? 'green' : 'red' justify="center"
} style={{
width: '100%',
height: '100%',
}}
> >
{decimals === undefined ? value : value.toFixed(decimals)} <Text
</Text> style={{
textAlign: 'center',
}}
color={
index === 0 || value === undefined || values[0] === undefined
? undefined
: (deltaType ? value > values[0] : value < values[0])
? 'green'
: 'red'
}
>
{display(stats[index])}
</Text>
</Flex>
</Table.Cell> </Table.Cell>
))} ))}
</Table.Row> </Table.Row>
@@ -179,7 +216,22 @@ export default function Page() {
</Table.Header> </Table.Header>
<Table.Body> <Table.Body>
<Row name="DPM" value={(stats) => stats.dpm} decimals={0} /> <Row
name="DPM"
value="dpm"
display={(stats) => Math.round(stats.dpm).toLocaleString()}
/>
<Row
name="Reload"
deltaType="lowerIsBetter"
value={(stats) => stats.shellReload}
display={(stats) =>
stats.shellReload?.toFixed(2) ??
stats
.shellReloads!.map((reload) => reload.toFixed(2))
.join(', ')
}
/>
</Table.Body> </Table.Body>
</Table.Root> </Table.Root>
</Flex> </Flex>