diff options
Diffstat (limited to 'vid-webpack-master/src/app/shared/pipes/order')
-rw-r--r-- | vid-webpack-master/src/app/shared/pipes/order/orderBy.pipe.spec.ts | 60 | ||||
-rw-r--r-- | vid-webpack-master/src/app/shared/pipes/order/orderBy.pipe.ts | 35 |
2 files changed, 95 insertions, 0 deletions
diff --git a/vid-webpack-master/src/app/shared/pipes/order/orderBy.pipe.spec.ts b/vid-webpack-master/src/app/shared/pipes/order/orderBy.pipe.spec.ts new file mode 100644 index 000000000..e6a1d310c --- /dev/null +++ b/vid-webpack-master/src/app/shared/pipes/order/orderBy.pipe.spec.ts @@ -0,0 +1,60 @@ +import {OrderByPipe} from "./orderBy.pipe"; +import {TestBed} from "@angular/core/testing"; + + +describe('Sort Pipe', () => { + let pipe: OrderByPipe; + + beforeAll(done => (async () => { + TestBed.configureTestingModule({ + + }); + await TestBed.compileComponents(); + pipe = new OrderByPipe(); + + })().then(done).catch(done.fail)); + + + test('Sort should order the array with nested objects', () => { + let list = [ + { + id: 1, + name: 'b' + }, + { + id: 3, + name: 'a' + }, + { + id: 2, + name: 'd' + } + ]; + + let result = pipe.transform(list, {property : 'name'}); + expect(result.length).toEqual(3); + expect(result).toEqual(<any>[ + { + 'id': 3, + 'name': 'a' + }, + { + 'id': 1, + 'name': 'b' + }, + { + 'id': 2, + 'name': 'd' + }]) + + }); + + test('Sort should order the array', () => { + let list = ['b', 'd', 'a']; + + let result = pipe.transform(list); + expect(result.length).toEqual(3); + expect(result).toEqual(<any>['a', 'b', 'd']); + + }); +}); diff --git a/vid-webpack-master/src/app/shared/pipes/order/orderBy.pipe.ts b/vid-webpack-master/src/app/shared/pipes/order/orderBy.pipe.ts new file mode 100644 index 000000000..a3b82329b --- /dev/null +++ b/vid-webpack-master/src/app/shared/pipes/order/orderBy.pipe.ts @@ -0,0 +1,35 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import * as _ from 'lodash'; +@Pipe({ name: 'orderBy' }) +export class OrderByPipe implements PipeTransform { + + transform(records: any[], args: any = {}): any { + args.direction = !_.isNil(args.direction) ? args.direction : 1; + + if(!_.isNil(records)){ + return records.sort(function(a, b){ + if(args.property){ + if(a[args.property] < b[args.property]){ + return -1 * args.direction; + } + else if( a[args.property] > b[args.property]){ + return 1 * args.direction; + } + else{ + return 0; + } + }else { + if(a < b){ + return -1 * args.direction; + } + else if( a > b){ + return 1 * args.direction; + } + else{ + return 0; + } + } + }); + } + }; +} |