Merge branch 'DEVELOP' of ssh://git.eclipse.org:29418/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.frontend into SI-353-schnellfilter2
Signed-off-by: Peter Buschmann <peter.buschmann@pta.de>
diff --git a/i18n/grid-failure.de.json b/i18n/grid-failure.de.json
index 5f7646a..69e784a 100644
--- a/i18n/grid-failure.de.json
+++ b/i18n/grid-failure.de.json
@@ -10,7 +10,8 @@
"CondenseChoosedGridFailureInformations": "Ausgewählte Meldungen verdichten",
"SelectAll": "Alles auswählen",
"NullValue": "Leer",
- "FilterLabel": "qualifiziert / veröffentlicht"
+ "PublisherFilterLabel": "qualifiziert / veröffentlicht",
+ "QualifierFilterLabel": "angelegt / geplant"
},
"GridFailure": {
"Title": "Störungsmeldung",
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.html b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.html
index aaee65b..b43d691 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.html
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.html
@@ -434,6 +434,7 @@
type="text"
class="form-control"
id="city"
+ [disabled]="!gridFailureDetailsSandbox.saveEnabled"
[ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['city']"
>
<option [value]="null" selected disabled>{{ 'SelectOption' | translate }}</option>
@@ -451,6 +452,7 @@
type="text"
class="form-control"
id="district"
+ [disabled]="!gridFailureDetailsSandbox.saveEnabled"
[ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['district']"
>
<option [value]="null" selected disabled>{{ 'SelectOption' | translate }}</option>
@@ -468,6 +470,7 @@
type="text"
class="form-control"
id="street"
+ [disabled]="!gridFailureDetailsSandbox.saveEnabled"
[ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['street']"
>
<option [value]="null" selected disabled>{{ 'SelectOption' | translate }}</option>
@@ -485,6 +488,8 @@
type="text"
class="form-control"
id="housenumber"
+ [disabled]="!gridFailureDetailsSandbox.saveEnabled"
+ (change)="gridFailureDetailsSandbox.setLatLong()"
[ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['housenumber']"
>
<option [value]="null" selected disabled>{{ 'SelectOption' | translate }}</option>
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.html b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.html
index 4a4707c..cc144ab 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.html
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.html
@@ -67,9 +67,25 @@
<div class="grid-failure-information-overview" *ngIf="view === 'list'; else map">
<div class="diverse-options" *ngIf="!showCondensationTable">
- <div class="custom-control custom-switch filter-switch" *visibleByRight="RolesEnum.PUBLISHER">
- <input type="checkbox" class="custom-control-input" id="filterSwitch" (change)="changeFilter($event.target.checked)" />
- <label class="custom-control-label" for="filterSwitch">{{ 'GridFailures.FilterLabel' | translate }}</label>
+ <div class="custom-control custom-switch filter-switch" *visibleByRight="[RolesEnum.PUBLISHER]">
+ <input
+ type="checkbox"
+ class="custom-control-input"
+ id="publisherFilterSwitch"
+ [disabled]="qualifierFilterIsActive"
+ (change)="changeFilter($event.target.checked, RolesEnum.PUBLISHER)"
+ />
+ <label class="custom-control-label" for="publisherFilterSwitch">{{ 'GridFailures.PublisherFilterLabel' | translate }}</label>
+ </div>
+ <div class="custom-control custom-switch filter-switch" *visibleByRight="[RolesEnum.QUALIFIER]">
+ <input
+ type="checkbox"
+ class="custom-control-input"
+ id="qualifierFilterSwitch"
+ [disabled]="publisherFilterIsActive"
+ (change)="changeFilter($event.target.checked, RolesEnum.QUALIFIER)"
+ />
+ <label class="custom-control-label" for="qualifierFilterSwitch">{{ 'GridFailures.QualifierFilterLabel' | translate }}</label>
</div>
<button class="btn btn-primary diverse-btn" (click)="changeToSelectionMode()">
{{ 'GridFailures.Condensation' | translate }}
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.spec.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.spec.ts
index b3e7b65..6ef4d4f 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.spec.ts
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.spec.ts
@@ -16,6 +16,7 @@
import { GridFailureSandbox } from '@grid-failure-information-app/pages/grid-failure/grid-failure-list/grid-failure.sandbox';
import { Subscription } from 'rxjs';
import { UtilService } from '@grid-failure-information-app/shared/utility';
+import { RolesEnum } from '@grid-failure-information-app/shared/constants/enums';
describe('GridFailureListComponent ', () => {
let component: GridFailureListComponent;
@@ -161,15 +162,27 @@
expect(spy).toHaveBeenCalled();
});
- it('should setGlobalGridFailureFilter when changeFilter(true) is called', () => {
+ it('should call setGlobalGridFailureFilter(RolesEnum.PUBLISHER) when changeFilter(true, RolesEnum.PUBLISHER) is called', () => {
const spy: any = spyOn(sandbox, 'setGlobalGridFailureFilter');
- component.changeFilter(true);
+ component.changeFilter(true, RolesEnum.PUBLISHER);
+ expect(spy).toHaveBeenCalledWith(RolesEnum.PUBLISHER);
+ });
+
+ it('should resetOverviewList when changeFilter(false, RolesEnum.PUBLISHER) is called', () => {
+ const spy: any = spyOn(sandbox, 'resetOverviewList');
+ component.changeFilter(false, RolesEnum.PUBLISHER);
expect(spy).toHaveBeenCalled();
});
- it('should resetOverviewList when changeFilter(false) is called', () => {
+ it('should call setGlobalGridFailureFilter(RolesEnum.QUALIFIER) when changeFilter(true, RolesEnum.QUALIFIER) is called', () => {
+ const spy: any = spyOn(sandbox, 'setGlobalGridFailureFilter');
+ component.changeFilter(true, RolesEnum.QUALIFIER);
+ expect(spy).toHaveBeenCalledWith(RolesEnum.QUALIFIER);
+ });
+
+ it('should resetOverviewList when changeFilter(false, RolesEnum.QUALIFIER) is called', () => {
const spy: any = spyOn(sandbox, 'resetOverviewList');
- component.changeFilter(false);
+ component.changeFilter(false, RolesEnum.QUALIFIER);
expect(spy).toHaveBeenCalled();
});
});
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.ts
index 40d2ae8..75be6a5 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.ts
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.ts
@@ -48,6 +48,8 @@
suppressLoadingOverlay: true,
localeText: Globals.LOCALE_TEXT,
};
+ public publisherFilterIsActive: boolean = false;
+ public qualifierFilterIsActive: boolean = false;
private _gridApi: GridApi;
private _modeEnum = ModeEnum;
@@ -72,12 +74,22 @@
this._gridApi = params.api;
}
- public changeFilter(checked: boolean): void {
+ public changeFilter(checked: boolean, filterFor: string): void {
this.overviewColumnDefinition = this.overviewColumnDefinition.map(item => {
if (checked && item['field'] && item['field'] === Globals.STATUS_INTERN_FIELD) {
- this.sandbox.setGlobalGridFailureFilter();
+ if (filterFor === RolesEnum.PUBLISHER) {
+ this.publisherFilterIsActive = true;
+ } else if (filterFor === RolesEnum.QUALIFIER) {
+ this.qualifierFilterIsActive = true;
+ }
+ this.sandbox.setGlobalGridFailureFilter(filterFor);
return { ...item, filter: null };
} else if (!checked) {
+ if (filterFor === RolesEnum.PUBLISHER) {
+ this.publisherFilterIsActive = false;
+ } else if (filterFor === RolesEnum.QUALIFIER) {
+ this.qualifierFilterIsActive = false;
+ }
this.sandbox.resetOverviewList();
return { ...item, filter: Globals.SET_FILTER_COMPONENT };
} else {
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure.sandbox.spec.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure.sandbox.spec.ts
index e67a571..bd60de3 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure.sandbox.spec.ts
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure.sandbox.spec.ts
@@ -17,6 +17,7 @@
import * as gridFailureActions from '@grid-failure-information-app/shared/store/actions/grid-failures.action';
import { Router } from '@angular/router';
import { GridFailure } from '@grid-failure-information-app/shared/models/grid-failure.model';
+import { RolesEnum } from '@grid-failure-information-app/shared/constants/enums';
describe('GridFailureSandbox', () => {
let service: GridFailureSandbox;
@@ -91,7 +92,7 @@
it('should filter overviewGridFailureList via setGlobalGridFailureFilter()', () => {
service.overviewGridFailureList = [new GridFailure({ statusIntern: 'x' })];
- service.setGlobalGridFailureFilter([service.StateEnum.QUALIFIED, service.StateEnum.PUBLISHED]);
+ service.setGlobalGridFailureFilter(RolesEnum.PUBLISHER);
expect(service.overviewGridFailureList).toEqual([]);
});
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure.sandbox.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure.sandbox.ts
index 3ac9c24..47aa0a6 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure.sandbox.ts
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure.sandbox.ts
@@ -22,7 +22,7 @@
import * as fromGridFailuresDetailFormReducer from '@grid-failure-information-app/shared/store/reducers/grid-failures/grid-failure-details-form.reducer';
import { ofType } from '@ngrx/effects';
import { map, take } from 'rxjs/operators';
-import { StateEnum } from '@grid-failure-information-app/shared/constants/enums';
+import { StateEnum, RolesEnum } from '@grid-failure-information-app/shared/constants/enums';
@Injectable()
export class GridFailureSandbox extends BaseSandbox {
@@ -33,6 +33,7 @@
public condensationList: GridFailure[] = new Array();
public condenseId: string = null;
public StateEnum = StateEnum;
+ public RolesEnum = RolesEnum;
constructor(protected appState$: Store<store.State>, private _router: Router, private actionsSubject: ActionsSubject) {
super(appState$);
@@ -87,7 +88,16 @@
this.appState$.dispatch(gridFailureActions.loadCondensedGridFailures({ payload: id }));
}
- public setGlobalGridFailureFilter(filterArray: Array<string> = [StateEnum.QUALIFIED, StateEnum.PUBLISHED]): void {
+ public setGlobalGridFailureFilter(filterFor: string): void {
+ let filterArray: Array<string> = [];
+ switch (filterFor) {
+ case RolesEnum.PUBLISHER:
+ filterArray = [StateEnum.QUALIFIED, StateEnum.PUBLISHED];
+ break;
+ case RolesEnum.QUALIFIER:
+ filterArray = [StateEnum.CREATED, StateEnum.PLANNED];
+ break;
+ }
this.overviewGridFailureList = this.overviewGridFailureList.filter(item => filterArray.includes(item.statusIntern));
}
diff --git a/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.css b/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.css
index 1d9cf04..d7e7381 100644
--- a/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.css
+++ b/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.css
@@ -1,4 +1,4 @@
- /********************************************************************************
+/********************************************************************************
* Copyright (c) 2020 Contributors to the Eclipse Foundation
*
* See the NOTICE file(s) distributed with this work for additional
@@ -10,9 +10,34 @@
*
* SPDX-License-Identifier: EPL-2.0
********************************************************************************/
- label {
+label {
white-space: nowrap;
}
-span{
- margin: 3px;;
+
+span {
+ margin: 3px;
+}
+
+.ag-grid-filter-container {
+ height: auto;
+ width: 250px;
+ margin: 4px;
+ border: 1px solid lightgrey;
+ z-index: 100;
+}
+
+.ag-grid-filter-text {
+ width: 99%;
+ margin: 1px;
+}
+
+.ag-grid-filter {
+ border-bottom: 1px solid lightgrey;
+ margin: 2px;
+}
+
+.ag-grid-filter-checkbox {
+ overflow-y: scroll;
+ overflow: hidden;
+ margin: 2px;
}
diff --git a/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.html b/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.html
index 1445ae2..6bc2731 100644
--- a/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.html
+++ b/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.html
@@ -10,18 +10,18 @@
*
* SPDX-License-Identifier: EPL-2.0
********************************************************************************/ -->
-<div style="height: auto; width: 250px; margin: 4px; border: 1px solid lightgrey; z-index: 100;">
- <div style="border-bottom: 1px solid lightgrey; margin: 2px;">
- <input mdInput style="width: 99%; margin: 1px;" [(ngModel)]="filterText" name="'filterText'" (input)="filterCheckboxList($event.target.value)" />
+<div class="ag-grid-filter-container">
+ <div class="ag-grid-filter">
+ <input mdInput class="ag-grid-filter-text" [(ngModel)]="filterText" name="'filterText'" (input)="filterCheckboxList($event.target.value)" />
</div>
- <div style="border-bottom: 1px solid lightgrey; margin: 2px;">
+ <div class="ag-grid-filter">
<div class="checkbox">
<label
><input type="checkbox" (change)="selectAll($event)" [checked]="selectAllChecked" /><span>{{ 'GridFailures.SelectAll' | translate }}</span></label
>
</div>
</div>
- <div style="overflow-y: scroll; overflow: hidden; margin: 2px;">
+ <div class="ag-grid-filter-checkbox">
<label *ngFor="let setItem of setItems | keyvalue" title="{{ setItem?.key }}" style="display: block;">
<input type="checkbox" [checked]="setItem.value.checked" (change)="notifyFilter($event)" [id]="setItem?.key" />
<span *ngIf="setItem.key != 'null' && setItem.key != ''; else nullValue">{{ setItem?.key }}</span>
diff --git a/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.spec.ts b/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.spec.ts
index 70e1eb6..dd8026b 100644
--- a/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.spec.ts
+++ b/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.spec.ts
@@ -87,4 +87,31 @@
component.selectAll();
expect(component.selectAllChecked).toBeTruthy();
});
+
+ it('should not pass filter for undefined setItems', () => {
+ const params = { node: 'x' } as any;
+ component['_valueGetter'] = () => {};
+ const returnValue = component.doesFilterPass(params);
+ expect(returnValue).toBeFalsy();
+ });
+
+ it('should set params via agInit', () => {
+ const params = {
+ node: 'x',
+ api: {
+ getModel() {
+ return {
+ rowsToDisplay: {
+ map: () => {
+ return ['Störung'];
+ },
+ },
+ };
+ },
+ gridOptionsWrapper: { gridOptions: { onGridSizeChanged: () => {}, onRowDataChanged: () => {} } },
+ },
+ } as any;
+ component.agInit(params);
+ expect(component['_params']).toEqual(params as any);
+ });
});
diff --git a/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.ts b/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.ts
index 468bb75..30888d8 100644
--- a/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.ts
+++ b/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.ts
@@ -27,6 +27,7 @@
public filterText: string = '';
public selectAllChecked: boolean = true;
private filtererdItems: any = {};
+
filterCheckboxList(text: string) {
text
.toLowerCase()