@@ -13,6 +13,8 @@ import {
13
13
14
14
import { Fn } from '@iapps/function-analytics' ;
15
15
import { PeriodTypes } from '../../models/period-types.model' ;
16
+ import { ValidationRuleGroup } from '../../models/validation-rule-group' ;
17
+
16
18
17
19
@Component ( {
18
20
selector : 'lib-ngx-dhis2-validation-rule-filter' ,
@@ -33,7 +35,7 @@ export class NgxDhis2ValidationRuleFilterComponent implements OnInit {
33
35
totalAvailableItems = 0 ;
34
36
35
37
@Input ( ) dataSelection : Array < string > ;
36
- @Input ( ) selectedVRGs : Array < string > ;
38
+ @Input ( ) selectedVRGs : Array < ValidationRuleGroup > ;
37
39
@Output ( ) update = new EventEmitter ( ) ;
38
40
@Output ( ) close = new EventEmitter ( ) ;
39
41
@@ -47,7 +49,11 @@ export class NgxDhis2ValidationRuleFilterComponent implements OnInit {
47
49
. select ( getAllValidationRuleGroups )
48
50
. subscribe ( ( state : Array < { name : string ; id : string } > ) => {
49
51
state
50
- ? ( this . availableValidationRuleGroups = state )
52
+ ? ( this . availableValidationRuleGroups = this . getUniqueAvailableValidationRuleGroup (
53
+ state ,
54
+ this . selectedValidationRuleGroups ,
55
+ this . selectedVRGs
56
+ ) )
51
57
: ( this . availableValidationRuleGroups = [ ] ) ;
52
58
} ) ;
53
59
this . loaded$ = this . store . select ( getValidationRuleGroupsLoaded ) ;
@@ -57,7 +63,11 @@ export class NgxDhis2ValidationRuleFilterComponent implements OnInit {
57
63
this . periodTypes = periods ;
58
64
} ) ;
59
65
60
- this . totalAvailableItems = this . availableValidationRuleGroups . length ;
66
+ this . totalAvailableItems = this . getUniqueAvailableValidationRuleGroup (
67
+ this . availableValidationRuleGroups ,
68
+ this . selectedValidationRuleGroups ,
69
+ this . selectedVRGs
70
+ ) . length ;
61
71
62
72
if ( this . selectedVRGs ) {
63
73
this . selectedValidationRuleGroups = _ . uniqBy (
@@ -115,12 +125,16 @@ export class NgxDhis2ValidationRuleFilterComponent implements OnInit {
115
125
'id'
116
126
) ;
117
127
118
- this . availableValidationRuleGroups = _ . uniqBy (
119
- this . popValidationRuleGroup (
120
- this . availableValidationRuleGroups ,
121
- validationRuleGroup
128
+ this . availableValidationRuleGroups = this . getUniqueAvailableValidationRuleGroup (
129
+ _ . uniqBy (
130
+ this . popValidationRuleGroup (
131
+ this . availableValidationRuleGroups ,
132
+ validationRuleGroup
133
+ ) ,
134
+ 'id'
122
135
) ,
123
- 'id'
136
+ this . selectedValidationRuleGroups ,
137
+ this . selectedVRGs
124
138
) ;
125
139
}
126
140
@@ -135,12 +149,16 @@ export class NgxDhis2ValidationRuleFilterComponent implements OnInit {
135
149
'id'
136
150
) ;
137
151
138
- this . availableValidationRuleGroups = _ . uniqBy (
139
- this . pushValidationRuleGroup (
140
- this . availableValidationRuleGroups ,
141
- validationRuleGroup
152
+ this . availableValidationRuleGroups = this . getUniqueAvailableValidationRuleGroup (
153
+ _ . uniqBy (
154
+ this . pushValidationRuleGroup (
155
+ this . availableValidationRuleGroups ,
156
+ validationRuleGroup
157
+ ) ,
158
+ 'id'
142
159
) ,
143
- 'id'
160
+ this . selectedValidationRuleGroups ,
161
+ this . selectedVRGs
144
162
) ;
145
163
}
146
164
@@ -233,20 +251,25 @@ export class NgxDhis2ValidationRuleFilterComponent implements OnInit {
233
251
onDeselectAllValidationRuleGroup = e => {
234
252
e . stopPropagation ( ) ;
235
253
if ( this . availableValidationRuleGroups . length > 0 ) {
236
- this . availableValidationRuleGroups = _ . uniqBy (
237
- _ . sortBy (
238
- [
239
- ...this . availableValidationRuleGroups ,
240
- ...this . selectedValidationRuleGroups ,
241
- ] ,
242
- [ 'displayName' ]
254
+ this . availableValidationRuleGroups = this . getUniqueAvailableValidationRuleGroup (
255
+ _ . uniqBy (
256
+ _ . sortBy (
257
+ [
258
+ ...this . availableValidationRuleGroups ,
259
+ ...this . selectedValidationRuleGroups ,
260
+ ] ,
261
+ [ 'displayName' ]
262
+ ) ,
263
+ 'id'
243
264
) ,
244
- 'id'
265
+ this . selectedValidationRuleGroups ,
266
+ this . selectedVRGs
245
267
) ;
246
268
} else {
247
- this . availableValidationRuleGroups = _ . uniqBy (
269
+ this . availableValidationRuleGroups = this . getUniqueAvailableValidationRuleGroup (
270
+ _ . uniqBy ( this . selectedValidationRuleGroups , 'id' ) ,
248
271
this . selectedValidationRuleGroups ,
249
- 'id'
272
+ this . selectedVRGs
250
273
) ;
251
274
}
252
275
this . selectedValidationRuleGroups = [ ] ;
@@ -259,4 +282,12 @@ export class NgxDhis2ValidationRuleFilterComponent implements OnInit {
259
282
onSelectedPageChanged = e => {
260
283
e ? ( this . currentPageSelected = e ) : ( this . currentPageSelected = 1 ) ;
261
284
}
285
+
286
+ getUniqueAvailableValidationRuleGroup = (
287
+ available : Array < ValidationRuleGroup > ,
288
+ selected : Array < ValidationRuleGroup > ,
289
+ preSelected : Array < ValidationRuleGroup >
290
+ ) => {
291
+ return _ . differenceBy ( available , selected , preSelected , 'name' ) ;
292
+ }
262
293
}
0 commit comments