Fix weapon states filter in search
This commit is contained in:
parent
272b5157e1
commit
ef0aff5685
5 changed files with 87 additions and 81 deletions
|
|
@ -15,12 +15,8 @@ import {
|
||||||
emptyRarityState,
|
emptyRarityState,
|
||||||
emptyWeaponSeriesState,
|
emptyWeaponSeriesState,
|
||||||
} from '~utils/emptyStates'
|
} from '~utils/emptyStates'
|
||||||
import {
|
import { elements, proficiencies, rarities } from '~utils/stateValues'
|
||||||
elements,
|
import { weaponSeries } from '~utils/weaponSeries'
|
||||||
proficiencies,
|
|
||||||
rarities,
|
|
||||||
weaponSeries,
|
|
||||||
} from '~utils/stateValues'
|
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
sendFilters: (filters: { [key: string]: number[] }) => void
|
sendFilters: (filters: { [key: string]: number[] }) => void
|
||||||
|
|
@ -128,6 +124,45 @@ const WeaponSearchFilterBar = (props: Props) => {
|
||||||
props.sendFilters(filters)
|
props.sendFilters(filters)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const renderWeaponSeries = () => {
|
||||||
|
const numColumns = 3
|
||||||
|
return (
|
||||||
|
<React.Fragment>
|
||||||
|
{Array.from({ length: numColumns }, () => 0).map((x, i) => {
|
||||||
|
return renderWeaponSeriesGroup(i)
|
||||||
|
})}
|
||||||
|
</React.Fragment>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const renderWeaponSeriesGroup = (index: number) => {
|
||||||
|
return (
|
||||||
|
<DropdownMenu.Group className="Group">
|
||||||
|
{weaponSeries
|
||||||
|
.slice(
|
||||||
|
index * Math.ceil(weaponSeries.length / 3),
|
||||||
|
(index + 1) * Math.ceil(weaponSeries.length / 3)
|
||||||
|
)
|
||||||
|
.map((x, i) => {
|
||||||
|
return renderSingleWeaponSeries(x.id, x.slug)
|
||||||
|
})}
|
||||||
|
</DropdownMenu.Group>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const renderSingleWeaponSeries = (id: number, slug: string) => {
|
||||||
|
return (
|
||||||
|
<SearchFilterCheckboxItem
|
||||||
|
key={id}
|
||||||
|
onCheckedChange={handleSeriesChange}
|
||||||
|
checked={seriesState[slug].checked}
|
||||||
|
valueKey={slug}
|
||||||
|
>
|
||||||
|
{t(`series.${slug}`)}
|
||||||
|
</SearchFilterCheckboxItem>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
sendFilters()
|
sendFilters()
|
||||||
}, [rarityState, elementState, proficiencyState, seriesState])
|
}, [rarityState, elementState, proficiencyState, seriesState])
|
||||||
|
|
@ -254,58 +289,7 @@ const WeaponSearchFilterBar = (props: Props) => {
|
||||||
<DropdownMenu.Label className="Label">
|
<DropdownMenu.Label className="Label">
|
||||||
{t('filters.labels.series')}
|
{t('filters.labels.series')}
|
||||||
</DropdownMenu.Label>
|
</DropdownMenu.Label>
|
||||||
<section>
|
<section>{renderWeaponSeries()}</section>
|
||||||
<DropdownMenu.Group className="Group">
|
|
||||||
{Array.from(Array(weaponSeries.length / 3)).map((x, i) => {
|
|
||||||
return (
|
|
||||||
<SearchFilterCheckboxItem
|
|
||||||
key={weaponSeries[i]}
|
|
||||||
onCheckedChange={handleSeriesChange}
|
|
||||||
checked={seriesState[weaponSeries[i]].checked}
|
|
||||||
valueKey={weaponSeries[i]}
|
|
||||||
>
|
|
||||||
{t(`series.${weaponSeries[i]}`)}
|
|
||||||
</SearchFilterCheckboxItem>
|
|
||||||
)
|
|
||||||
})}
|
|
||||||
</DropdownMenu.Group>
|
|
||||||
<DropdownMenu.Group className="Group">
|
|
||||||
{Array.from(Array(weaponSeries.length / 3)).map((x, i) => {
|
|
||||||
return (
|
|
||||||
<SearchFilterCheckboxItem
|
|
||||||
key={weaponSeries[i + weaponSeries.length / 3]}
|
|
||||||
onCheckedChange={handleSeriesChange}
|
|
||||||
checked={
|
|
||||||
seriesState[weaponSeries[i + weaponSeries.length / 3]]
|
|
||||||
.checked
|
|
||||||
}
|
|
||||||
valueKey={weaponSeries[i + weaponSeries.length / 3]}
|
|
||||||
>
|
|
||||||
{t(`series.${weaponSeries[i + weaponSeries.length / 3]}`)}
|
|
||||||
</SearchFilterCheckboxItem>
|
|
||||||
)
|
|
||||||
})}
|
|
||||||
</DropdownMenu.Group>
|
|
||||||
<DropdownMenu.Group className="Group">
|
|
||||||
{Array.from(Array(weaponSeries.length / 3)).map((x, i) => {
|
|
||||||
return (
|
|
||||||
<SearchFilterCheckboxItem
|
|
||||||
key={weaponSeries[i + 2 * (weaponSeries.length / 3)]}
|
|
||||||
onCheckedChange={handleSeriesChange}
|
|
||||||
checked={
|
|
||||||
seriesState[weaponSeries[i + 2 * (weaponSeries.length / 3)]]
|
|
||||||
.checked
|
|
||||||
}
|
|
||||||
valueKey={weaponSeries[i + 2 * (weaponSeries.length / 3)]}
|
|
||||||
>
|
|
||||||
{t(
|
|
||||||
`series.${weaponSeries[i + 2 * (weaponSeries.length / 3)]}`
|
|
||||||
)}
|
|
||||||
</SearchFilterCheckboxItem>
|
|
||||||
)
|
|
||||||
})}
|
|
||||||
</DropdownMenu.Group>
|
|
||||||
</section>
|
|
||||||
</SearchFilter>
|
</SearchFilter>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@
|
||||||
"bahamut": "Bahamut",
|
"bahamut": "Bahamut",
|
||||||
"epic": "Epic",
|
"epic": "Epic",
|
||||||
"ennead": "Ennead",
|
"ennead": "Ennead",
|
||||||
"cosmos": "Cosmos",
|
"cosmic": "Cosmic",
|
||||||
"ancestral": "Ancestral",
|
"ancestral": "Ancestral",
|
||||||
"superlative": "Superlative",
|
"superlative": "Superlative",
|
||||||
"vintage": "Vintage",
|
"vintage": "Vintage",
|
||||||
|
|
@ -109,7 +109,8 @@
|
||||||
"new_world": "New World Foundation",
|
"new_world": "New World Foundation",
|
||||||
"revenant": "Revenant",
|
"revenant": "Revenant",
|
||||||
"proving": "Proving Grounds",
|
"proving": "Proving Grounds",
|
||||||
"disaster": "Disaster"
|
"disaster": "Disaster",
|
||||||
|
"illustrious": "Illustrious"
|
||||||
},
|
},
|
||||||
"recency": {
|
"recency": {
|
||||||
"all_time": "All time",
|
"all_time": "All time",
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@
|
||||||
"bahamut": "バハムートウェポン",
|
"bahamut": "バハムートウェポン",
|
||||||
"epic": "エピックウェポン",
|
"epic": "エピックウェポン",
|
||||||
"ennead": "エニアドシリーズ",
|
"ennead": "エニアドシリーズ",
|
||||||
"cosmos": "コスモスシリーズ",
|
"cosmic": "コスモスシリーズ",
|
||||||
"ancestral": "アンセスタルシリーズ",
|
"ancestral": "アンセスタルシリーズ",
|
||||||
"superlative": "スペリオシリーズ",
|
"superlative": "スペリオシリーズ",
|
||||||
"vintage": "ヴィンテージシリーズ",
|
"vintage": "ヴィンテージシリーズ",
|
||||||
|
|
@ -109,7 +109,8 @@
|
||||||
"new_world": "新世界の礎",
|
"new_world": "新世界の礎",
|
||||||
"revenant": "天星器",
|
"revenant": "天星器",
|
||||||
"proving": "ブレイブグラウンド",
|
"proving": "ブレイブグラウンド",
|
||||||
"disaster": "災害シリーズ"
|
"disaster": "災害シリーズ",
|
||||||
|
"luminous": "ルミナス"
|
||||||
},
|
},
|
||||||
"recency": {
|
"recency": {
|
||||||
"all_time": "全ての期間",
|
"all_time": "全ての期間",
|
||||||
|
|
|
||||||
|
|
@ -100,12 +100,16 @@ export const emptyWeaponSeriesState: WeaponSeriesState = {
|
||||||
id: 3,
|
id: 3,
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
},
|
||||||
ultima: {
|
revenant: {
|
||||||
id: 17,
|
id: 4,
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
},
|
||||||
bahamut: {
|
primal: {
|
||||||
id: 16,
|
id: 6,
|
||||||
|
checked: false,
|
||||||
|
},
|
||||||
|
beast: {
|
||||||
|
id: 7,
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
},
|
||||||
regalia: {
|
regalia: {
|
||||||
|
|
@ -116,10 +120,6 @@ export const emptyWeaponSeriesState: WeaponSeriesState = {
|
||||||
id: 9,
|
id: 9,
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
},
|
||||||
primal: {
|
|
||||||
id: 6,
|
|
||||||
checked: false,
|
|
||||||
},
|
|
||||||
olden_primal: {
|
olden_primal: {
|
||||||
id: 10,
|
id: 10,
|
||||||
checked: false,
|
checked: false,
|
||||||
|
|
@ -128,26 +128,30 @@ export const emptyWeaponSeriesState: WeaponSeriesState = {
|
||||||
id: 11,
|
id: 11,
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
},
|
||||||
beast: {
|
hollowsky: {
|
||||||
id: 7,
|
id: 12,
|
||||||
checked: false,
|
|
||||||
},
|
|
||||||
rose: {
|
|
||||||
id: 15,
|
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
},
|
||||||
xeno: {
|
xeno: {
|
||||||
id: 13,
|
id: 13,
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
},
|
||||||
hollowsky: {
|
|
||||||
id: 12,
|
|
||||||
checked: false,
|
|
||||||
},
|
|
||||||
astral: {
|
astral: {
|
||||||
id: 14,
|
id: 14,
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
},
|
||||||
|
rose: {
|
||||||
|
id: 15,
|
||||||
|
checked: false,
|
||||||
|
},
|
||||||
|
bahamut: {
|
||||||
|
id: 16,
|
||||||
|
checked: false,
|
||||||
|
},
|
||||||
|
ultima: {
|
||||||
|
id: 17,
|
||||||
|
checked: false,
|
||||||
|
},
|
||||||
epic: {
|
epic: {
|
||||||
id: 18,
|
id: 18,
|
||||||
checked: false,
|
checked: false,
|
||||||
|
|
@ -156,7 +160,7 @@ export const emptyWeaponSeriesState: WeaponSeriesState = {
|
||||||
id: 19,
|
id: 19,
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
},
|
||||||
cosmos: {
|
cosmic: {
|
||||||
id: 20,
|
id: 20,
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
},
|
||||||
|
|
@ -176,6 +180,10 @@ export const emptyWeaponSeriesState: WeaponSeriesState = {
|
||||||
id: 24,
|
id: 24,
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
},
|
||||||
|
proving: {
|
||||||
|
id: 25,
|
||||||
|
checked: false,
|
||||||
|
},
|
||||||
sephira: {
|
sephira: {
|
||||||
id: 28,
|
id: 28,
|
||||||
checked: false,
|
checked: false,
|
||||||
|
|
@ -184,6 +192,14 @@ export const emptyWeaponSeriesState: WeaponSeriesState = {
|
||||||
id: 29,
|
id: 29,
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
},
|
||||||
|
disaster: {
|
||||||
|
id: 30,
|
||||||
|
checked: false,
|
||||||
|
},
|
||||||
|
illustrious: {
|
||||||
|
id: 31,
|
||||||
|
checked: false,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
export const emptyPaginationObject = {
|
export const emptyPaginationObject = {
|
||||||
|
|
|
||||||
|
|
@ -116,4 +116,8 @@ export const weaponSeries: WeaponSeries[] = [
|
||||||
id: 30,
|
id: 30,
|
||||||
slug: 'disaster',
|
slug: 'disaster',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: 31,
|
||||||
|
slug: 'illustrious',
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue