File tree Expand file tree Collapse file tree
components/FilteredNavigationData Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -8,7 +8,12 @@ import { ComicId } from '@models/ComicId'
88import { HydratedItemNavigationData } from '@models/HydratedItemData'
99import { ItemBody } from '@models/ItemBody'
1010import { ItemId } from '@models/ItemId'
11- import { ItemType } from '@models/ItemType'
11+
12+ import {
13+ filterItems ,
14+ getFilterWithoutType ,
15+ getTypeFromFilter ,
16+ } from '~/itemFilters'
1217
1318export default function FilteredNavigationData ( {
1419 isLoading,
@@ -122,48 +127,3 @@ export default function FilteredNavigationData({
122127 </ >
123128 )
124129}
125-
126- function filterItems (
127- allNavigationItems : HydratedItemNavigationData [ ] ,
128- filter : string
129- ) {
130- const type = getTypeFromFilter ( filter )
131-
132- let filteredByType
133- if ( type !== 'item' ) {
134- filteredByType = allNavigationItems . filter ( ( i ) => i . type === type )
135- } else {
136- filteredByType = allNavigationItems
137- }
138-
139- filter = getFilterWithoutType ( filter )
140- return filteredByType . filter (
141- ( i ) =>
142- i . shortName . toUpperCase ( ) . indexOf ( filter . toUpperCase ( ) ) !== - 1 ||
143- i . name . toUpperCase ( ) . indexOf ( filter . toUpperCase ( ) ) !== - 1
144- )
145- }
146-
147- function getTypeFromFilter ( filter : string ) {
148- const typeFilter = filter . charAt ( 0 )
149- let type : ItemType | 'item' = 'item'
150- switch ( typeFilter ) {
151- case '!' :
152- type = 'cast'
153- break
154- case '@' :
155- type = 'location'
156- break
157- case '#' :
158- type = 'storyline'
159- break
160- }
161- return type
162- }
163-
164- function getFilterWithoutType ( filter : string ) {
165- if ( getTypeFromFilter ( filter ) !== 'item' ) {
166- filter = filter . substring ( 1 )
167- }
168- return filter
169- }
Original file line number Diff line number Diff line change 1+ import { ItemType } from '@models/ItemType'
2+
3+ export type FilterItemType = ItemType | 'item'
4+
5+ export function getTypeFromFilter ( filter : string ) {
6+ const typeFilter = filter . charAt ( 0 )
7+ let type : FilterItemType = 'item'
8+ switch ( typeFilter ) {
9+ case '!' :
10+ type = 'cast'
11+ break
12+ case '@' :
13+ type = 'location'
14+ break
15+ case '#' :
16+ type = 'storyline'
17+ break
18+ }
19+ return type
20+ }
21+
22+ export function getFilterWithoutType ( filter : string ) {
23+ if ( getTypeFromFilter ( filter ) !== 'item' ) {
24+ filter = filter . substring ( 1 )
25+ }
26+ return filter
27+ }
28+
29+ type FilterableItem = {
30+ shortName : string
31+ name : string
32+ type : ItemType
33+ }
34+ export function filterItems < I extends FilterableItem > (
35+ items : I [ ] ,
36+ filter : string
37+ ) {
38+ const type = getTypeFromFilter ( filter )
39+
40+ let filteredByType
41+ if ( type !== 'item' ) {
42+ filteredByType = items . filter ( ( i ) => i . type === type )
43+ } else {
44+ filteredByType = items
45+ }
46+
47+ filter = getFilterWithoutType ( filter )
48+ return filteredByType . filter (
49+ ( i ) =>
50+ i . shortName . toUpperCase ( ) . indexOf ( filter . toUpperCase ( ) ) !== - 1 ||
51+ i . name . toUpperCase ( ) . indexOf ( filter . toUpperCase ( ) ) !== - 1
52+ )
53+ }
Original file line number Diff line number Diff line change @@ -238,8 +238,8 @@ export function range(start: number, end: number) {
238238 return Array . from ( { length } , ( _ , i ) => start + i )
239239}
240240
241- export function dbg < T > ( d : string , v : T ) {
242- console . log ( d , v )
241+ export function dbg < T > ( v : T , d ?: string ) {
242+ console . log ( v , d )
243243 return v
244244}
245245
You can’t perform that action at this time.
0 commit comments