@NgModule({
declarations: [
OrderByPipe
]
})
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'orderBy'
})
export class OrderByPipe implements PipeTransform {
transform(value: Array<any>, field: any): any {
if (value == null) {
return null;
}
let sortingtype: number = parseInt(field[0] + 1);
var crntfield = field.substring(1).split('.');
function compare(a, b) {
switch (crntfield.length) {
case 1: a = a[crntfield[0]]; b = b[crntfield[0]]; break;
case 2: a = a[crntfield[0]][crntfield[1]];
b = b[crntfield[0]][crntfield[1]]; break;
case 3: a = a[crntfield[0]][crntfield[1]][crntfield[2]];
b = b[crntfield[0]][crntfield[1]][crntfield[2]]; break;
case 4: a = a[crntfield[0]][crntfield[1]][crntfield[2]][crntfield[3]];
b = b[crntfield[0]][crntfield[1]][crntfield[2]][crntfield[3]]; break;
case 5: a = a[crntfield[0]][crntfield[1]][crntfield[2]][crntfield[3]][crntfield[4]]; b = b[crntfield[0]][crntfield[1]][crntfield[2]][crntfield[3]][crntfield[4]]; break;
}
if (a < b)
return sortingtype * 1;
if (a > b)
return sortingtype * -1;
return 0;
}
return value.sort(compare);
}
}
No comments:
Post a Comment