[SI-566 - SI-2801/2802] config column visibility main table / condensed table
Signed-off-by: Peter Buschmann <peter.buschmann@pta.de>
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.spec.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.spec.ts
index c5ef70a..32808e9 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.spec.ts
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.spec.ts
@@ -420,12 +420,12 @@
});
it('should return true for detailFieldVisibility if config provides "show" string for a specified form field', () => {
- component.visibilityConfiguration = { detailFieldVisibility: { description: 'show' } as any } as any;
+ component.visibilityConfiguration = { fieldVisibility: { description: 'show' } as any } as any;
expect(component.determineDetailFieldVisibility('description')).toBeTruthy();
});
it('should return false for detailFieldVisibility if config does not provides "show" string for a specified form field', () => {
- component.visibilityConfiguration = { detailFieldVisibility: { description: 'hide' } as any } as any;
+ component.visibilityConfiguration = { fieldVisibility: { description: 'hide' } as any } as any;
expect(component.determineDetailFieldVisibility('description')).toBeFalsy();
});
});
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.ts
index 4b521e5..da6d6f8 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.ts
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.ts
@@ -27,6 +27,7 @@
import { unboxProperties } from '@grid-failure-information-app/shared/utility/form-utils';
import { unbox } from 'ngrx-forms';
import { VisibilityConfigurationInterface } from '@grid-failure-information-app/shared/interfaces/visibility-configuration.interface';
+import { determineDetailFieldVisibility } from '@grid-failure-information-app/shared/utility';
@Component({
selector: 'app-grid-failure-details',
@@ -188,11 +189,7 @@
}
public determineDetailFieldVisibility(field: string): boolean {
- if (this.visibilityConfiguration && this.visibilityConfiguration.detailFieldVisibility) {
- return this.visibilityConfiguration.detailFieldVisibility[field] === 'show';
- } else {
- return true;
- }
+ return determineDetailFieldVisibility(this.visibilityConfiguration, 'fieldVisibility', field);
}
private _initialFailureLocationState() {
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 2584a18..8fb8236 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
@@ -28,6 +28,7 @@
let appState$: any;
let _gridApi: any;
let filterInstance: any;
+ let preConfig$: any;
beforeEach(() => {
router = { navigate() {} } as any;
@@ -48,6 +49,7 @@
displayNotification() {},
} as any;
appState$ = { dispatch: () => {}, pipe: () => of(true), select: () => of(true) } as any;
+ preConfig$ = of({ visibilityConfiguration: { fieldVisibility: {} } });
subscription = { unsubscribe() {} } as any;
_gridApi = { onFilterChanged() {}, setFilterModel(model: any) {} } as any;
component = new GridFailureListComponent(sandbox, appState$, router, utilService);
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 6b9c3f0..d42744b 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
@@ -38,8 +38,8 @@
export class GridFailureListComponent extends BaseList implements OnInit, OnDestroy {
public Globals = Globals;
public RolesEnum = RolesEnum;
- public overviewColumnDefinition: any = GRID_FAILURE_COLDEF;
- public condensationColumnDefinition: any = GRID_FAILURE_FOR_CONDENSATION_COLDEF;
+ public overviewColumnDefinition: any;
+ public condensationColumnDefinition: any;
public mapOptions: MapOptions = new MapOptions();
public frameworkComponents: any;
public view: any = 'list';
@@ -53,6 +53,7 @@
suppressLoadingOverlay: true,
localeText: Globals.LOCALE_TEXT,
};
+ public preConfig$ = this.appState$.select(store.getPreConfiguration);
private _gridApi: GridApi;
private _modeEnum = ModeEnum;
@@ -61,6 +62,19 @@
constructor(public sandbox: GridFailureSandbox, private appState$: Store<store.State>, private _router: Router, private _utilService: UtilService) {
super();
this.frameworkComponents = { setFilterComponent: SetFilterComponent, headerCellRendererComponent: HeaderCellRendererComponent };
+
+ this.preConfig$.pipe(takeUntil(this._endSubscriptions$)).subscribe(config => {
+ if (config && config.visibilityConfiguration) {
+ GRID_FAILURE_COLDEF.forEach((column: any) => {
+ column['hide'] = config.visibilityConfiguration.fieldVisibility[column['field']] === 'hide';
+ });
+ this.overviewColumnDefinition = GRID_FAILURE_COLDEF;
+ GRID_FAILURE_FOR_CONDENSATION_COLDEF.forEach((column: any) => {
+ column['hide'] = config.visibilityConfiguration.fieldVisibility[column['field']] === 'hide';
+ });
+ this.condensationColumnDefinition = GRID_FAILURE_FOR_CONDENSATION_COLDEF;
+ }
+ });
}
ngOnInit(): void {
diff --git a/projects/grid-failure-information-app/src/app/shared/directives/agGrid/translate-column-definitions.directive.ts b/projects/grid-failure-information-app/src/app/shared/directives/agGrid/translate-column-definitions.directive.ts
index b9dad8b..ec05e2e 100644
--- a/projects/grid-failure-information-app/src/app/shared/directives/agGrid/translate-column-definitions.directive.ts
+++ b/projects/grid-failure-information-app/src/app/shared/directives/agGrid/translate-column-definitions.directive.ts
@@ -42,11 +42,13 @@
}
private _getTranslatedColumnDefinitions(columnDefs: any): any {
- return columnDefs.map((columnDefinition: any) => {
- return {
- ...columnDefinition,
- headerName: this._translationService.instant(columnDefinition.headerName),
- };
- });
+ if (columnDefs) {
+ return columnDefs.map((columnDefinition: any) => {
+ return {
+ ...columnDefinition,
+ headerName: this._translationService.instant(columnDefinition.headerName),
+ };
+ });
+ }
}
}
diff --git a/projects/grid-failure-information-app/src/app/shared/interfaces/visibility-configuration.interface.ts b/projects/grid-failure-information-app/src/app/shared/interfaces/visibility-configuration.interface.ts
index 5c3785c..679e78d 100644
--- a/projects/grid-failure-information-app/src/app/shared/interfaces/visibility-configuration.interface.ts
+++ b/projects/grid-failure-information-app/src/app/shared/interfaces/visibility-configuration.interface.ts
@@ -11,7 +11,7 @@
* SPDX-License-Identifier: EPL-2.0
********************************************************************************/
export interface VisibilityConfigurationInterface {
- detailFieldVisibility: {
+ fieldVisibility: {
description: string;
failureClassification: string;
internalRemark: string;
diff --git a/projects/grid-failure-information-app/src/app/shared/utility/utilityHelpers.ts b/projects/grid-failure-information-app/src/app/shared/utility/utilityHelpers.ts
index be0acda..534b7a1 100644
--- a/projects/grid-failure-information-app/src/app/shared/utility/utilityHelpers.ts
+++ b/projects/grid-failure-information-app/src/app/shared/utility/utilityHelpers.ts
@@ -15,6 +15,7 @@
import { DateTimeModel } from '@grid-failure-information-app/shared/models/date-time.model';
import { NgrxValueConverter, NgrxValueConverters } from 'ngrx-forms';
import { FailureHousenumber } from '@grid-failure-information-app/shared/models';
+import { VisibilityConfigurationInterface } from '@grid-failure-information-app/shared/interfaces/visibility-configuration.interface';
/**
* Returns formated date based on given culture
@@ -142,3 +143,11 @@
actionPayload = { ...actionPayload, payload: sortedItems };
return actionPayload;
}
+
+export function determineDetailFieldVisibility(config: VisibilityConfigurationInterface, config_prop: string, field: string): boolean {
+ if (config && config[config_prop]) {
+ return config[config_prop][field] === 'show';
+ } else {
+ return true;
+ }
+}