diff --git a/app/job/shared/job.service.ts b/app/job/shared/job.service.ts index cf2c5f1..ebd7821 100644 --- a/app/job/shared/job.service.ts +++ b/app/job/shared/job.service.ts @@ -11,14 +11,27 @@ import {PageEnvelope, Pagination} from '../../shared/pagination'; import {AppSettings} from '../../shared/app.settings'; import {Job} from '../shared/job'; +import {QueryBuilder} from '../../shared/query-builder/query-builder'; + @Injectable() export class JobService { - constructor(private shttp: SecureHttp) { } + private _queryBuilder: QueryBuilder; + + constructor(private shttp: SecureHttp) { + // INFO: Should be injected here + this._queryBuilder = new QueryBuilder(); + } private jobUrl = AppSettings.TASKCAT_API_BASE + 'job'; getHistory(): Observable> { - return this.shttp.secureGet(this.jobUrl + '/odata') + let queryString : string = this._queryBuilder.orderBy([ + { + propName: "CreateTime", + orderDirection: "desc" + }]).toQueryString(); + + return this.shttp.secureGet(this.jobUrl + '/odata' + queryString) .map((res: Response) => { if (res.status < 200 || res.status >= 300) { throw new Error('Response status: ' + res.status); diff --git a/app/shared/query-builder/query-builder.ts b/app/shared/query-builder/query-builder.ts index 8b5ef64..ad4d111 100644 --- a/app/shared/query-builder/query-builder.ts +++ b/app/shared/query-builder/query-builder.ts @@ -3,13 +3,13 @@ import { Injectable } from '@angular/core'; export type OrderDirection = "asc" | "desc"; @Injectable() -export class QueryBuilderService { +export class QueryBuilder { private _querySegments: Array = new Array(); constructor() { } - public orderBy(props: Array<{ propName: string, orderDirection?: OrderDirection }>): QueryBuilderService { + public orderBy(props: Array<{ propName: string, orderDirection?: OrderDirection }>): QueryBuilder { if (props && props.length > 0) { let querySegment: string = "$orderby"; let orderbySegment = props.map( @@ -20,7 +20,7 @@ export class QueryBuilderService { return this; } - public ToQueryString(): string { + public toQueryString(): string { return "?".concat(this._querySegments.join("&")); } } \ No newline at end of file diff --git a/tests/query-builder.spec.ts b/tests/query-builder.spec.ts index 127c03c..c7b058f 100644 --- a/tests/query-builder.spec.ts +++ b/tests/query-builder.spec.ts @@ -1,13 +1,13 @@ -import { QueryBuilderService } from '../app/shared/query-builder/query-builder'; +import { QueryBuilder } from '../app/shared/query-builder/query-builder'; describe('QueryBuilder Service Tests', () => { it('Intantiates Okay', () => { - let service = new QueryBuilderService(); + let service = new QueryBuilder(); expect(service).not.toBe(null); }); it('Generates proper query for OrderBy', () => { - let service = new QueryBuilderService(); + let service = new QueryBuilder(); service = service.orderBy([ { propName: "test_prop1" @@ -20,7 +20,7 @@ describe('QueryBuilder Service Tests', () => { propName: "test_prop3", orderDirection: "asc" }]); - let qstring = service.ToQueryString(); + let qstring = service.toQueryString(); expect(qstring).toBe("?$orderby=test_prop1 asc,test_prop2 desc,test_prop3 asc"); }); });