github.com/readium/readium-lcp-server@v0.0.0-20240101192032-6e95190e99f1/frontend/manage/app/shared/pipes/sort.pipe.ts (about) 1 import { Pipe, PipeTransform } from '@angular/core'; 2 3 @Pipe({name: 'sortBy'}) 4 export class Sort implements PipeTransform { 5 transform(value: {}[], filter: string, reverse: boolean): any { 6 var values: {a:string, b:string}; 7 8 var getValue = (a:any, b:any, filter:string):{a:string, b:string} => 9 { 10 var newA:string; 11 var newB:string; 12 13 var newFilter: string[] = filter.split(".") 14 for (var i = 0; i <= newFilter.length-1; i++) 15 { 16 a = a[newFilter[i]]; 17 b = b[newFilter[i]]; 18 } 19 20 return { 21 a, 22 b 23 } 24 } 25 26 if(!reverse){ 27 value.sort(function (a:{}, b:{}) { 28 values = getValue(a,b,filter); 29 if (values.a == values.b) return 0; 30 else if (values.a > values.b || values.a == null) return 1; 31 else if (values.a < values.b || values.b == null) return -1; 32 }); 33 } else { 34 35 value.sort(function (a:{}, b:{}) { 36 values = getValue(a,b,filter); 37 if (values.a == values.b) return 0; 38 else if (values.a < values.b || values.a == null) return 1; 39 else if (values.a > values.b || values.b == null) return -1; 40 }); 41 42 } 43 return value; 44 45 46 } 47 48 49 50 }