9
9
import * as ng1 from 'angular' ;
10
10
import { ILogService , IPromise , IQService } from 'angular' ;
11
11
import { convertSortToOrderBy , isGroupingFun } from './util' ;
12
+ import { assignPartialDeep } from '../shared' ;
12
13
import { Defaults } from './ngTableDefaults'
13
14
import { NgTableEventsChannel } from './ngTableEventsChannel'
14
15
import { SettingsPartial , Settings } from './ngTableSettings'
@@ -25,31 +26,34 @@ export interface InternalTableParams<T> extends NgTableParams<T> {
25
26
isNullInstance : boolean
26
27
}
27
28
29
+
30
+ export type ParamValuesPartial < T > = Partial < ParamValues < T > > ;
31
+
28
32
/**
29
33
* The runtime values for {@link NgTableParams} that determine the set of data rows and
30
34
* how they are to be displayed in a table
31
35
*/
32
- export interface ParamValues < T > {
36
+ export class ParamValues < T > {
33
37
/**
34
38
* The index of the "slice" of data rows, starting at 1, to be displayed by the table.
35
39
*/
36
- page ?: number ;
40
+ page = 1 ;
37
41
/**
38
42
* The number of data rows per page
39
43
*/
40
- count ?: number ;
44
+ count = 10 ;
41
45
/**
42
46
* The filter that should be applied to restrict the set of data rows
43
47
*/
44
- filter ? : FilterValues ;
48
+ filter : FilterValues = { } ;
45
49
/**
46
50
* The sort order that should be applied to the data rows.
47
51
*/
48
- sorting ? : SortingValues ;
52
+ sorting : SortingValues = { } ;
49
53
/**
50
54
* The grouping that should be applied to the data rows
51
55
*/
52
- group ? : string | Grouping < T > ;
56
+ group : string | Grouping < T > = { } ;
53
57
}
54
58
55
59
@@ -85,17 +89,11 @@ export class NgTableParams<T> {
85
89
private ngTableDefaults : Defaults
86
90
private ngTableEventsChannel : NgTableEventsChannel ;
87
91
private prevParamsMemento : Memento < T > ;
88
- private _params : ParamValues < T > = {
89
- page : 1 ,
90
- count : 10 ,
91
- filter : { } ,
92
- sorting : { } ,
93
- group : { }
94
- } ;
92
+ private _params = new ParamValues ( ) ;
95
93
private _settings = this . defaultSettings ;
96
94
private $q : IQService ;
97
95
private $log : ILogService
98
- constructor ( baseParameters ?: ParamValues < T > | boolean , baseSettings ?: SettingsPartial < T > ) {
96
+ constructor ( baseParameters ?: ParamValuesPartial < T > | boolean , baseSettings ?: SettingsPartial < T > ) {
99
97
100
98
// the ngTableController "needs" to create a dummy/null instance and it's important to know whether an instance
101
99
// is one of these
@@ -115,7 +113,7 @@ export class NgTableParams<T> {
115
113
}
116
114
} ) ( ) ;
117
115
118
- ng1 . extend ( this . _params , this . ngTableDefaults . params ) ;
116
+ assignPartialDeep ( this . _params , this . ngTableDefaults . params ) ;
119
117
120
118
this . settings ( baseSettings ) ;
121
119
this . parameters ( baseParameters , true ) ;
@@ -268,7 +266,7 @@ export class NgTableParams<T> {
268
266
return this . _params . group ;
269
267
}
270
268
271
- const newParameters : ParamValues < T > = {
269
+ const newParameters : ParamValuesPartial < T > = {
272
270
page : 1
273
271
} ;
274
272
if ( isGroupingFun ( group ) && sortDirection !== undefined ) {
@@ -382,39 +380,45 @@ export class NgTableParams<T> {
382
380
/**
383
381
* Set new parameters
384
382
*/
385
- parameters ( newParameters ?: ParamValues < T > | { [ name : string ] : string } , parseParamsFromUrl ?: boolean ) : this
386
- parameters ( newParameters ?: ParamValues < T > | { [ name : string ] : string } , parseParamsFromUrl ?: boolean ) : ParamValues < T > | this {
383
+ parameters ( newParameters ?: ParamValuesPartial < T > | { [ name : string ] : string } , parseParamsFromUrl ?: boolean ) : this
384
+ parameters ( newParameters ?: ParamValuesPartial < T > | { [ name : string ] : string } , parseParamsFromUrl ?: boolean ) : ParamValues < T > | this {
385
+ if ( newParameters === undefined ) {
386
+ return this . _params ;
387
+ }
388
+
389
+ // todo: move parsing of url like parameters into a seperate method
390
+
387
391
parseParamsFromUrl = parseParamsFromUrl || false ;
388
- if ( newParameters !== undefined ) {
389
- for ( const key in newParameters ) {
390
- let value = newParameters [ key ] ;
391
- if ( parseParamsFromUrl && key . indexOf ( '[' ) >= 0 ) {
392
- const keys = key . split ( / \[ ( .* ) \] / ) . reverse ( )
393
- let lastKey = '' ;
394
- for ( let i = 0 , len = keys . length ; i < len ; i ++ ) {
395
- const name = keys [ i ] ;
396
- if ( name !== '' ) {
397
- const v = value ;
398
- value = { } ;
399
- value [ lastKey = name ] = ( isNumber ( v ) ? parseFloat ( v ) : v ) ;
400
- }
401
- }
402
- if ( lastKey === 'sorting' ) {
403
- this . _params [ lastKey ] = { } ;
392
+ for ( const key in newParameters ) {
393
+ let value = newParameters [ key ] ;
394
+ if ( parseParamsFromUrl && key . indexOf ( '[' ) >= 0 ) {
395
+ const keys = key . split ( / \[ ( .* ) \] / ) . reverse ( )
396
+ let lastKey = '' ;
397
+ for ( let i = 0 , len = keys . length ; i < len ; i ++ ) {
398
+ const name = keys [ i ] ;
399
+ if ( name !== '' ) {
400
+ const v = value ;
401
+ value = { } ;
402
+ value [ lastKey = name ] = ( isNumber ( v ) ? parseFloat ( v ) : v ) ;
404
403
}
405
- this . _params [ lastKey ] = ng1 . extend ( this . _params [ lastKey ] || { } , value [ lastKey ] ) ;
404
+ }
405
+ if ( lastKey === 'sorting' ) {
406
+ this . _params [ lastKey ] = { } ;
407
+ }
408
+ this . _params [ lastKey ] = ng1 . extend ( this . _params [ lastKey ] || { } , value [ lastKey ] ) ;
409
+ } else {
410
+ if ( newParameters [ key ] === undefined ) {
411
+ // skip
412
+ }
413
+ else if ( key === 'group' ) {
414
+ this . _params [ key ] = this . parseGroup ( newParameters [ key ] ) ;
406
415
} else {
407
- if ( key === 'group' ) {
408
- this . _params [ key ] = this . parseGroup ( newParameters [ key ] ) ;
409
- } else {
410
- this . _params [ key ] = ( isNumber ( newParameters [ key ] ) ? parseFloat ( newParameters [ key ] ) : newParameters [ key ] ) ;
411
- }
416
+ this . _params [ key ] = ( isNumber ( newParameters [ key ] ) ? parseFloat ( newParameters [ key ] ) : newParameters [ key ] ) ;
412
417
}
413
418
}
414
- this . log ( 'ngTable: set parameters' , this . _params ) ;
415
- return this ;
416
419
}
417
- return this . _params ;
420
+ this . log ( 'ngTable: set parameters' , this . _params ) ;
421
+ return this ;
418
422
}
419
423
/**
420
424
* Trigger a reload of the data rows
0 commit comments