Skip to content

Commit 6e34afd

Browse files
author
GeorgeZhang2035
committed
feat: rarity select ready
1 parent 8557c1a commit 6e34afd

File tree

2 files changed

+40
-19
lines changed

2 files changed

+40
-19
lines changed

src/components/editor/operator/sheet/sheetOperator/SheetOperatorFilterProvider.tsx

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,11 @@ export const OperatorFilterProvider: FC<OperatorFilterProviderProp> = ({
9292
usePaginationFilterState: [paginationFilter, setPaginationFilter],
9393
useProfFilterState: [profFilter, setProfFilter],
9494
useRarityFilterState: [rarityFilter, setRarityFilter],
95-
operatorFiltered: useOperatorFiltered(profFilter, paginationFilter),
95+
operatorFiltered: useOperatorFiltered(
96+
profFilter,
97+
paginationFilter,
98+
rarityFilter,
99+
),
96100
}}
97101
>
98102
{children}
@@ -115,22 +119,25 @@ const generateCustomizedOperInfo = (name: string): OperatorInfo => ({
115119
const useOperatorFiltered = (
116120
profFilter: ProfFilter,
117121
paginationFilter: PaginationFilter,
122+
rarityFilter: RarityFilter,
118123
) => {
119124
// Priority: prof > sub prof > rarity/rarityReverse
120125
// filterResult init and prof filter about
121-
const filterResult = useProfFilterHandle(profFilter)
126+
const profFilterResult = useProfFilterHandle(profFilter)
122127
// rarity about
123-
124-
const dataTotal = filterResult.length
128+
const rarityFilterResult = rarityFilterHandle(rarityFilter, profFilterResult)
125129
// pagination about
126-
127130
// filterResult
131+
const filterResult = paginationFilterHandle(
132+
paginationFilter,
133+
rarityFilterResult,
134+
)
128135
// console.log(filterResult)
129136
return {
130137
// return data after being paginated
131-
data: paginationFilterHandle(paginationFilter, filterResult),
138+
data: filterResult,
132139
meta: {
133-
dataTotal,
140+
dataTotal: profFilterResult.length,
134141
},
135142
}
136143
}
@@ -217,3 +224,13 @@ const paginationFilterHandle = (
217224
{ current, size }: PaginationFilter,
218225
originData: OperatorInfo[] = OPERATORS,
219226
) => originData.slice(0, current * size)
227+
228+
const rarityFilterHandle = (
229+
{ selectedRarity, reverse }: RarityFilter,
230+
originData: OperatorInfo[] = OPERATORS,
231+
) =>
232+
originData
233+
.filter(({ rarity }) => selectedRarity.includes(rarity))
234+
.sort(({ rarity: rarityA }, { rarity: rarityB }) =>
235+
reverse ? rarityA - rarityB : rarityB - rarityA,
236+
)

src/components/editor/operator/sheet/sheetOperator/toolBox/OperatorRaritySelect.tsx

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Button, Divider, H5 } from '@blueprintjs/core'
22

33
import clsx from 'clsx'
4+
import { debounce } from 'lodash-es'
45
import { FC } from 'react'
56

67
import {
@@ -20,7 +21,7 @@ export const OperatorRaritySelect: FC<OperatorRaritySelectProp> = () => {
2021
return (
2122
<>
2223
<div className="flex items-center">
23-
<H5 className="m-0 mr-1">按干员稀有度展示</H5>
24+
<H5 className="m-0 mr-1">按干员星级展示</H5>
2425
<Button
2526
icon="reset"
2627
minimal
@@ -38,17 +39,20 @@ export const OperatorRaritySelect: FC<OperatorRaritySelectProp> = () => {
3839
text={rarityIndex}
3940
minimal
4041
className={clsx(isSelect && selectClass)}
41-
onClick={() =>
42-
setRarityFilter(({ selectedRarity, ...rest }) => ({
43-
...rest,
44-
selectedRarity: isSelect
45-
? selectedRarity.filter(
46-
(selectedRarityIndex) =>
47-
selectedRarityIndex !== rarityIndex,
48-
)
49-
: [...selectedRarity, rarityIndex],
50-
}))
51-
}
42+
rightIcon="star"
43+
onClick={debounce(
44+
() =>
45+
setRarityFilter(({ selectedRarity, ...rest }) => ({
46+
...rest,
47+
selectedRarity: isSelect
48+
? selectedRarity.filter(
49+
(selectedRarityIndex) =>
50+
selectedRarityIndex !== rarityIndex,
51+
)
52+
: [...selectedRarity, rarityIndex],
53+
})),
54+
150,
55+
)}
5256
/>
5357
)
5458
})}

0 commit comments

Comments
 (0)