diff options
Diffstat (limited to 'client/src/app/shared/rest/rest-data-source.ts')
-rw-r--r-- | client/src/app/shared/rest/rest-data-source.ts | 98 |
1 files changed, 31 insertions, 67 deletions
diff --git a/client/src/app/shared/rest/rest-data-source.ts b/client/src/app/shared/rest/rest-data-source.ts index 5c205d280..57a2efb57 100644 --- a/client/src/app/shared/rest/rest-data-source.ts +++ b/client/src/app/shared/rest/rest-data-source.ts | |||
@@ -1,68 +1,32 @@ | |||
1 | import { Http, RequestOptionsArgs, URLSearchParams, Response } from '@angular/http' | 1 | export class RestDataSource { |
2 | 2 | // protected addSortRequestOptions (requestOptions: RequestOptionsArgs) { | |
3 | import { ServerDataSource } from 'ng2-smart-table' | 3 | // const searchParams = requestOptions.params as URLSearchParams |
4 | 4 | // | |
5 | export class RestDataSource extends ServerDataSource { | 5 | // if (this.sortConf) { |
6 | private updateResponse: (input: any[]) => any[] | 6 | // this.sortConf.forEach((fieldConf) => { |
7 | 7 | // const sortPrefix = fieldConf.direction === 'desc' ? '-' : '' | |
8 | constructor (http: Http, endpoint: string, updateResponse?: (input: any[]) => any[]) { | 8 | // |
9 | const options = { | 9 | // searchParams.set(this.conf.sortFieldKey, sortPrefix + fieldConf.field) |
10 | endPoint: endpoint, | 10 | // }) |
11 | sortFieldKey: 'sort', | 11 | // } |
12 | dataKey: 'data' | 12 | // |
13 | } | 13 | // return requestOptions |
14 | super(http, options) | 14 | // } |
15 | 15 | // | |
16 | if (updateResponse) { | 16 | // protected addPagerRequestOptions (requestOptions: RequestOptionsArgs) { |
17 | this.updateResponse = updateResponse | 17 | // const searchParams = requestOptions.params as URLSearchParams |
18 | } | 18 | // |
19 | } | 19 | // if (this.pagingConf && this.pagingConf['page'] && this.pagingConf['perPage']) { |
20 | 20 | // const perPage = this.pagingConf['perPage'] | |
21 | protected extractDataFromResponse (res: Response) { | 21 | // const page = this.pagingConf['page'] |
22 | const json = res.json() | 22 | // |
23 | if (!json) return [] | 23 | // const start = (page - 1) * perPage |
24 | let data = json.data | 24 | // const count = perPage |
25 | 25 | // | |
26 | if (this.updateResponse !== undefined) { | 26 | // searchParams.set('start', start.toString()) |
27 | data = this.updateResponse(data) | 27 | // searchParams.set('count', count.toString()) |
28 | } | 28 | // } |
29 | 29 | // | |
30 | return data | 30 | // return requestOptions |
31 | } | 31 | // } |
32 | |||
33 | protected extractTotalFromResponse (res: Response) { | ||
34 | const rawData = res.json() | ||
35 | return rawData ? parseInt(rawData.total, 10) : 0 | ||
36 | } | ||
37 | |||
38 | protected addSortRequestOptions (requestOptions: RequestOptionsArgs) { | ||
39 | const searchParams = requestOptions.params as URLSearchParams | ||
40 | |||
41 | if (this.sortConf) { | ||
42 | this.sortConf.forEach((fieldConf) => { | ||
43 | const sortPrefix = fieldConf.direction === 'desc' ? '-' : '' | ||
44 | |||
45 | searchParams.set(this.conf.sortFieldKey, sortPrefix + fieldConf.field) | ||
46 | }) | ||
47 | } | ||
48 | |||
49 | return requestOptions | ||
50 | } | ||
51 | |||
52 | protected addPagerRequestOptions (requestOptions: RequestOptionsArgs) { | ||
53 | const searchParams = requestOptions.params as URLSearchParams | ||
54 | |||
55 | if (this.pagingConf && this.pagingConf['page'] && this.pagingConf['perPage']) { | ||
56 | const perPage = this.pagingConf['perPage'] | ||
57 | const page = this.pagingConf['page'] | ||
58 | |||
59 | const start = (page - 1) * perPage | ||
60 | const count = perPage | ||
61 | |||
62 | searchParams.set('start', start.toString()) | ||
63 | searchParams.set('count', count.toString()) | ||
64 | } | ||
65 | |||
66 | return requestOptions | ||
67 | } | ||
68 | } | 32 | } |