|
|
@ -5,7 +5,11 @@ export type SortOrder = 'asc' | 'desc'; |
|
|
name: 'abpSort', |
|
|
name: 'abpSort', |
|
|
}) |
|
|
}) |
|
|
export class SortPipe implements PipeTransform { |
|
|
export class SortPipe implements PipeTransform { |
|
|
transform(value: any[], sortOrder: SortOrder | string = 'asc', sortKey?: string): any { |
|
|
transform( |
|
|
|
|
|
value: any[], |
|
|
|
|
|
sortOrder: SortOrder | string = 'asc', |
|
|
|
|
|
sortKey?: string, |
|
|
|
|
|
): any { |
|
|
sortOrder = sortOrder && (sortOrder.toLowerCase() as any); |
|
|
sortOrder = sortOrder && (sortOrder.toLowerCase() as any); |
|
|
|
|
|
|
|
|
if (!value || (sortOrder !== 'asc' && sortOrder !== 'desc')) return value; |
|
|
if (!value || (sortOrder !== 'asc' && sortOrder !== 'desc')) return value; |
|
|
@ -17,7 +21,9 @@ export class SortPipe implements PipeTransform { |
|
|
numberArray = value.filter(item => typeof item === 'number').sort(); |
|
|
numberArray = value.filter(item => typeof item === 'number').sort(); |
|
|
stringArray = value.filter(item => typeof item === 'string').sort(); |
|
|
stringArray = value.filter(item => typeof item === 'string').sort(); |
|
|
} else { |
|
|
} else { |
|
|
numberArray = value.filter(item => typeof item[sortKey] === 'number').sort((a, b) => a[sortKey] - b[sortKey]); |
|
|
numberArray = value |
|
|
|
|
|
.filter(item => typeof item[sortKey] === 'number') |
|
|
|
|
|
.sort((a, b) => a[sortKey] - b[sortKey]); |
|
|
stringArray = value |
|
|
stringArray = value |
|
|
.filter(item => typeof item[sortKey] === 'string') |
|
|
.filter(item => typeof item[sortKey] === 'string') |
|
|
.sort((a, b) => { |
|
|
.sort((a, b) => { |
|
|
@ -26,7 +32,15 @@ export class SortPipe implements PipeTransform { |
|
|
else return 0; |
|
|
else return 0; |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
const sorted = numberArray.concat(stringArray); |
|
|
const sorted = [ |
|
|
|
|
|
...numberArray, |
|
|
|
|
|
...stringArray, |
|
|
|
|
|
...value.filter( |
|
|
|
|
|
item => |
|
|
|
|
|
typeof item[sortKey] !== 'number' && |
|
|
|
|
|
typeof item[sortKey] !== 'string', |
|
|
|
|
|
), |
|
|
|
|
|
]; |
|
|
return sortOrder === 'asc' ? sorted : sorted.reverse(); |
|
|
return sortOrder === 'asc' ? sorted : sorted.reverse(); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|