mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-08-14 00:26:21 +00:00
Refactor: allow filterpipe to specify key
This commit is contained in:
@@ -25,4 +25,25 @@ describe('FilterPipe', () => {
|
||||
itemsReturned = pipe.transform(items, null)
|
||||
expect(itemsReturned).toEqual(items)
|
||||
})
|
||||
|
||||
it('should filter matchingmodel items by key', () => {
|
||||
const pipe = new FilterPipe()
|
||||
const items: MatchingModel[] = [
|
||||
{
|
||||
id: 1,
|
||||
name: 'Hello World',
|
||||
slug: 'slug-1',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: 'Hello with slug',
|
||||
slug: 'not this',
|
||||
},
|
||||
]
|
||||
let itemsReturned = pipe.transform(items, 'slug')
|
||||
expect(itemsReturned).toEqual(items)
|
||||
|
||||
itemsReturned = pipe.transform(items, 'slug', 'slug')
|
||||
expect(itemsReturned).toEqual([items[0]])
|
||||
})
|
||||
})
|
||||
|
@@ -5,21 +5,26 @@ import { MatchingModel } from '../data/matching-model'
|
||||
name: 'filter',
|
||||
})
|
||||
export class FilterPipe implements PipeTransform {
|
||||
transform(items: MatchingModel[], searchText: string): MatchingModel[] {
|
||||
transform(
|
||||
items: MatchingModel[],
|
||||
searchText: string,
|
||||
key?: string
|
||||
): MatchingModel[] {
|
||||
if (!items) return []
|
||||
if (!searchText) return items
|
||||
|
||||
return items.filter((item) => {
|
||||
return Object.keys(item)
|
||||
.filter(
|
||||
(key) =>
|
||||
typeof item[key] === 'string' || typeof item[key] === 'number'
|
||||
)
|
||||
.some((key) => {
|
||||
return String(item[key])
|
||||
.toLowerCase()
|
||||
.includes(searchText.toLowerCase())
|
||||
})
|
||||
const keys = key
|
||||
? [key]
|
||||
: Object.keys(item).filter(
|
||||
(key) =>
|
||||
typeof item[key] === 'string' || typeof item[key] === 'number'
|
||||
)
|
||||
return keys.some((key) => {
|
||||
return String(item[key])
|
||||
.toLowerCase()
|
||||
.includes(searchText.toLowerCase())
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user