mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-23 11:39:50 +02:00
feat: sort order
This commit is contained in:
1 parent
a5c4dad3d4
commit
4d09b3deb1
1 file changed
+21
-1
@@ -11,8 +11,10 @@ import {
|
|||||||
} from '@radix-ui/themes';
|
} from '@radix-ui/themes';
|
||||||
import { go } from 'fuzzysort';
|
import { go } from 'fuzzysort';
|
||||||
import { Suspense, use, useEffect, useMemo, useRef, useState } from 'react';
|
import { Suspense, use, useEffect, useMemo, useRef, useState } from 'react';
|
||||||
|
import { TankType, TreeType } from '../../../../../components/Tanks';
|
||||||
import { asset } from '../../../../../core/blitzkrieg/asset';
|
import { asset } from '../../../../../core/blitzkrieg/asset';
|
||||||
import {
|
import {
|
||||||
|
NATIONS,
|
||||||
TANK_ICONS,
|
TANK_ICONS,
|
||||||
TANK_ICONS_COLLECTOR,
|
TANK_ICONS_COLLECTOR,
|
||||||
TANK_ICONS_PREMIUM,
|
TANK_ICONS_PREMIUM,
|
||||||
@@ -37,11 +39,29 @@ interface TankSearchProps {
|
|||||||
onSelect?: (tank: TankDefinition) => void;
|
onSelect?: (tank: TankDefinition) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const tankTypeOrder: TankType[] = ['light', 'medium', 'heavy', 'tankDestroyer'];
|
||||||
|
const treeTypeOrder: TreeType[] = ['researchable', 'premium', 'collector'];
|
||||||
|
|
||||||
export function TankSearch({ compact, onSelect = () => {} }: TankSearchProps) {
|
export function TankSearch({ compact, onSelect = () => {} }: TankSearchProps) {
|
||||||
const tanksPerPage = compact ? 16 : 24;
|
const tanksPerPage = compact ? 16 : 24;
|
||||||
|
const nations = use(NATIONS);
|
||||||
const filters = useTankopediaPersistent((state) => state.filters);
|
const filters = useTankopediaPersistent((state) => state.filters);
|
||||||
const sort = useTankopediaPersistent((state) => state.sort);
|
const sort = useTankopediaPersistent((state) => state.sort);
|
||||||
const awaitedTanks = use(tanksDefinitionsArray);
|
const awaitedTanks = use(
|
||||||
|
tanksDefinitionsArray.then((tanks) =>
|
||||||
|
tanks
|
||||||
|
.sort(
|
||||||
|
(a, b) =>
|
||||||
|
treeTypeOrder.indexOf(a.treeType) -
|
||||||
|
treeTypeOrder.indexOf(b.treeType),
|
||||||
|
)
|
||||||
|
.sort(
|
||||||
|
(a, b) =>
|
||||||
|
tankTypeOrder.indexOf(a.type) - tankTypeOrder.indexOf(b.type),
|
||||||
|
)
|
||||||
|
.sort((a, b) => nations.indexOf(a.nation) - nations.indexOf(b.nation)),
|
||||||
|
),
|
||||||
|
);
|
||||||
const input = useRef<HTMLInputElement>(null);
|
const input = useRef<HTMLInputElement>(null);
|
||||||
const searchableTanks = useMemo(
|
const searchableTanks = useMemo(
|
||||||
() =>
|
() =>
|
||||||
|
|||||||
Reference in new issue
Block a user