Browse Source

fix(core): sort pipe null data problem

pull/2267/head
mehmet-erim 7 years ago
parent
commit
4764750a8c
  1. 20
      npm/ng-packs/packages/core/src/lib/pipes/sort.pipe.ts

20
npm/ng-packs/packages/core/src/lib/pipes/sort.pipe.ts

@ -5,7 +5,11 @@ export type SortOrder = 'asc' | 'desc';
name: 'abpSort',
})
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);
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();
stringArray = value.filter(item => typeof item === 'string').sort();
} 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
.filter(item => typeof item[sortKey] === 'string')
.sort((a, b) => {
@ -26,7 +32,15 @@ export class SortPipe implements PipeTransform {
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();
}
}

Loading…
Cancel
Save