mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-11-14 05:06:11 +01:00
feat: next safe generalization
This commit is contained in:
1 parent
eb87463f08
commit
dae902fe03
19 files changed
+163
-155
No files matched your search
@@ -10,7 +10,7 @@ export function Info() {
|
||||
const awaitedAverageDefinitions = use(averageDefinitions);
|
||||
const numberFormat = Intl.NumberFormat(undefined, { notation: 'compact' });
|
||||
const ratio = useAveragesExclusionRatio();
|
||||
const samples = ratio * awaitedAverageDefinitions.sampled_players;
|
||||
const samples = ratio * awaitedAverageDefinitions.samples.d_120;
|
||||
|
||||
return (
|
||||
<Flex justify="center">
|
||||
|
||||
@@ -24,11 +24,11 @@ export const TankRow = memo<TankRowProps>(
|
||||
{((averages.mu.wins / averages.mu.battles) * 100).toFixed(1)}%
|
||||
</Table.Cell>
|
||||
<Table.Cell align="center">
|
||||
{numberFormat.format(Math.round(ratio * averages.samples))}
|
||||
{numberFormat.format(Math.round(ratio * averages.samples.d_30))}
|
||||
</Table.Cell>
|
||||
<Table.Cell align="center">
|
||||
{numberFormat.format(
|
||||
Math.round(ratio * averages.mu.battles * averages.samples),
|
||||
Math.round(ratio * averages.mu.battles * averages.samples.total),
|
||||
)}
|
||||
</Table.Cell>
|
||||
<Table.Cell align="center">
|
||||
|
||||
@@ -6,7 +6,7 @@ import { Suspense, use, useEffect, useMemo, useState } from 'react';
|
||||
import { averageDefinitionsArray } from '../../../../core/blitzkit/averageDefinitions';
|
||||
import { filterTank } from '../../../../core/blitzkit/filterTank';
|
||||
import { tankDefinitions } from '../../../../core/blitzkit/tankDefinitions';
|
||||
import { useTankFilters } from '../../../../stores/tankFilters';
|
||||
import * as TankFilters from '../../../../stores/tankFilters';
|
||||
import { useTankPerformanceSort } from '../../../../stores/tankPerformanceSort';
|
||||
import { RowLoader } from './RowLoader';
|
||||
import { TankRow } from './TankRow';
|
||||
@@ -18,7 +18,7 @@ const DEFAULT_LOADED_ROWS = 25;
|
||||
export function Tanks() {
|
||||
const awaitedTankDefinitions = use(tankDefinitions);
|
||||
const awaitedAverageDefinitionsArray = use(averageDefinitionsArray);
|
||||
const filters = useTankFilters();
|
||||
const filters = TankFilters.use();
|
||||
const sort = useTankPerformanceSort();
|
||||
const tanksSorted = useMemo(() => {
|
||||
switch (sort.type) {
|
||||
@@ -31,7 +31,7 @@ export function Tanks() {
|
||||
return awaitedAverageDefinitionsArray.sort(
|
||||
(a, b) =>
|
||||
sort.direction *
|
||||
(a.samples * a.mu.battles - b.samples * b.mu.battles),
|
||||
(a.samples.total * a.mu.battles - b.samples.total * b.mu.battles),
|
||||
);
|
||||
case 'capturePoints':
|
||||
return awaitedAverageDefinitionsArray.sort(
|
||||
@@ -81,7 +81,7 @@ export function Tanks() {
|
||||
);
|
||||
case 'players':
|
||||
return awaitedAverageDefinitionsArray.sort(
|
||||
(a, b) => sort.direction * (a.samples - b.samples),
|
||||
(a, b) => sort.direction * (a.samples.d_30 - b.samples.d_30),
|
||||
);
|
||||
case 'spots':
|
||||
return awaitedAverageDefinitionsArray.sort(
|
||||
|
||||
@@ -44,7 +44,8 @@ export function TierBreakdown() {
|
||||
|
||||
tierTanks.forEach((stats) => {
|
||||
const tank = awaitedTankDefinitions[stats.id];
|
||||
populations[tank.class] += stats.mu.battles * stats.samples;
|
||||
populations[tank.class] +=
|
||||
stats.mu.battles * stats.samples.d_30;
|
||||
});
|
||||
|
||||
TANK_CLASSES.forEach((tankClass) => {
|
||||
|
||||
@@ -18,7 +18,7 @@ export const Total = memo<TotalProps>(
|
||||
const sum = useCallback(
|
||||
(slice: (tank: AverageDefinitionsAllStats) => number) => {
|
||||
return tanks.reduce(
|
||||
(acc, tank) => acc + tank.samples * slice(tank.mu),
|
||||
(acc, tank) => acc + tank.samples.total * slice(tank.mu),
|
||||
0,
|
||||
);
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import PageWrapper from '../../../components/PageWrapper';
|
||||
import { TankFiltersProvider } from '../../../stores/tankFilters';
|
||||
import * as TankFilters from '../../../stores/tankFilters';
|
||||
import { FilterControl } from '../tankopedia/components/FilterControl';
|
||||
import { Info } from './components/Info';
|
||||
import { TankTable } from './components/Table';
|
||||
@@ -7,13 +7,13 @@ import { TierBreakdown } from './components/TierBreakdown';
|
||||
|
||||
export default function Page() {
|
||||
return (
|
||||
<TankFiltersProvider>
|
||||
<TankFilters.Provider>
|
||||
<PageWrapper color="jade" noMaxWidth>
|
||||
<Info />
|
||||
<TierBreakdown />
|
||||
<FilterControl />
|
||||
<TankTable />
|
||||
</PageWrapper>
|
||||
</TankFiltersProvider>
|
||||
</TankFilters.Provider>
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user