Skip to content

Commit 30a595b

Browse files
authored
Merge pull request #171 from hisptz/develop
Develop
2 parents 59d9401 + d9b0b01 commit 30a595b

File tree

5 files changed

+79
-26
lines changed

5 files changed

+79
-26
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"version": "1.0.0-alpha.15",
44
"scripts": {
55
"ng": "ng",
6-
"start": "ng serve --port 4201 --proxy-config proxy-config.json",
6+
"start": "ng serve --port 4202 --proxy-config proxy-config.json",
77
"build-lib": "ng build ngx-dhis2-validation-rule-filter",
88
"build": "npm run build-lib && ng build --prod --aot",
99
"build-lib-dev": "npm run build-lib && cd dist/ngx-dhis2-validation-rule-filter && npm pack && cd ../../ && npm install dist/ngx-dhis2-validation-rule-filter/*.tgz",

projects/ngx-dhis2-validation-rule-filter/src/lib/containers/validation-rule-group/ngx-dhis2-validation-rule-filter.component.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,16 @@
130130
color: #000000;
131131
}
132132

133+
.no-items-found-error-message {
134+
padding: 5px;
135+
display: flex;
136+
align-items: center;
137+
width: 100%;
138+
cursor: pointer;
139+
font-size: 14px;
140+
color: #000000;
141+
}
142+
133143
.validation-rule-group-list > li > a:hover {
134144
background-color: #dddddd;
135145
}

projects/ngx-dhis2-validation-rule-filter/src/lib/containers/validation-rule-group/ngx-dhis2-validation-rule-filter.component.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,18 @@
9696
</a>
9797
</li>
9898
</ul>
99+
<ul
100+
class="validation-rule-group-list"
101+
*ngIf="
102+
(loaded$ | async) && availableValidationRuleGroups.length === 0
103+
"
104+
>
105+
<li class="no-items-found-error-message">
106+
<i class="material-icons">
107+
warning </i
108+
>&nbsp; Oops! no items to select!
109+
</li>
110+
</ul>
99111
<pagination-controls
100112
*ngIf="availableValidationRuleGroups.length >= 4"
101113
style="bottom: 0; position: relative;"

projects/ngx-dhis2-validation-rule-filter/src/lib/containers/validation-rule-group/ngx-dhis2-validation-rule-filter.component.ts

Lines changed: 54 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import {
1313

1414
import { Fn } from '@iapps/function-analytics';
1515
import { PeriodTypes } from '../../models/period-types.model';
16+
import { ValidationRuleGroup } from '../../models/validation-rule-group';
17+
1618

1719
@Component({
1820
selector: 'lib-ngx-dhis2-validation-rule-filter',
@@ -33,7 +35,7 @@ export class NgxDhis2ValidationRuleFilterComponent implements OnInit {
3335
totalAvailableItems = 0;
3436

3537
@Input() dataSelection: Array<string>;
36-
@Input() selectedVRGs: Array<string>;
38+
@Input() selectedVRGs: Array<ValidationRuleGroup>;
3739
@Output() update = new EventEmitter();
3840
@Output() close = new EventEmitter();
3941

@@ -47,7 +49,11 @@ export class NgxDhis2ValidationRuleFilterComponent implements OnInit {
4749
.select(getAllValidationRuleGroups)
4850
.subscribe((state: Array<{ name: string; id: string }>) => {
4951
state
50-
? (this.availableValidationRuleGroups = state)
52+
? (this.availableValidationRuleGroups = this.getUniqueAvailableValidationRuleGroup(
53+
state,
54+
this.selectedValidationRuleGroups,
55+
this.selectedVRGs
56+
))
5157
: (this.availableValidationRuleGroups = []);
5258
});
5359
this.loaded$ = this.store.select(getValidationRuleGroupsLoaded);
@@ -57,7 +63,11 @@ export class NgxDhis2ValidationRuleFilterComponent implements OnInit {
5763
this.periodTypes = periods;
5864
});
5965

60-
this.totalAvailableItems = this.availableValidationRuleGroups.length;
66+
this.totalAvailableItems = this.getUniqueAvailableValidationRuleGroup(
67+
this.availableValidationRuleGroups,
68+
this.selectedValidationRuleGroups,
69+
this.selectedVRGs
70+
).length;
6171

6272
if (this.selectedVRGs) {
6373
this.selectedValidationRuleGroups = _.uniqBy(
@@ -115,12 +125,16 @@ export class NgxDhis2ValidationRuleFilterComponent implements OnInit {
115125
'id'
116126
);
117127

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'
122135
),
123-
'id'
136+
this.selectedValidationRuleGroups,
137+
this.selectedVRGs
124138
);
125139
}
126140

@@ -135,12 +149,16 @@ export class NgxDhis2ValidationRuleFilterComponent implements OnInit {
135149
'id'
136150
);
137151

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'
142159
),
143-
'id'
160+
this.selectedValidationRuleGroups,
161+
this.selectedVRGs
144162
);
145163
}
146164

@@ -233,20 +251,25 @@ export class NgxDhis2ValidationRuleFilterComponent implements OnInit {
233251
onDeselectAllValidationRuleGroup = e => {
234252
e.stopPropagation();
235253
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'
243264
),
244-
'id'
265+
this.selectedValidationRuleGroups,
266+
this.selectedVRGs
245267
);
246268
} else {
247-
this.availableValidationRuleGroups = _.uniqBy(
269+
this.availableValidationRuleGroups = this.getUniqueAvailableValidationRuleGroup(
270+
_.uniqBy(this.selectedValidationRuleGroups, 'id'),
248271
this.selectedValidationRuleGroups,
249-
'id'
272+
this.selectedVRGs
250273
);
251274
}
252275
this.selectedValidationRuleGroups = [];
@@ -259,4 +282,12 @@ export class NgxDhis2ValidationRuleFilterComponent implements OnInit {
259282
onSelectedPageChanged = e => {
260283
e ? (this.currentPageSelected = e) : (this.currentPageSelected = 1);
261284
}
285+
286+
getUniqueAvailableValidationRuleGroup = (
287+
available: Array<ValidationRuleGroup>,
288+
selected: Array<ValidationRuleGroup>,
289+
preSelected: Array<ValidationRuleGroup>
290+
) => {
291+
return _.differenceBy(available, selected, preSelected, 'name');
292+
}
262293
}

projects/ngx-dhis2-validation-rule-filter/src/lib/helpers/extract-validation-rule-group.helper.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export function getAllValidationRuleGroup(apiResult: APIResult) {
2828
periodType: getSanitizePeriodType(periodType),
2929
};
3030
} else {
31-
return [];
31+
return { validationRuleGroup: [] };
3232
}
3333
} else if (apiResult.hasOwnProperty('validationRuleGroups')) {
3434
return {
@@ -44,7 +44,7 @@ export function getAllValidationRuleGroup(apiResult: APIResult) {
4444
),
4545
};
4646
} else {
47-
return [];
47+
return { validationRuleGroup: [] };
4848
}
4949
}
5050

0 commit comments

Comments
 (0)