diff --git a/e2e/process-services-cloud/process/process-custom-filters.e2e.ts b/e2e/process-services-cloud/process/process-custom-filters.e2e.ts index 427e52fac1..7681ff40bc 100644 --- a/e2e/process-services-cloud/process/process-custom-filters.e2e.ts +++ b/e2e/process-services-cloud/process/process-custom-filters.e2e.ts @@ -252,8 +252,6 @@ describe('Process list cloud', () => { await processList.checkContentIsDisplayedById(completedProcess.entry.id); await expect(await processList.getDataTable().numberOfRows()).toBe(1); - await editProcessFilter.openFilter(); - await expect(await editProcessFilter.getProcessInstanceId()).toEqual(completedProcess.entry.id); }); @@ -276,7 +274,6 @@ describe('Process list cloud', () => { await editProcessFilter.saveAs('SavedFilter'); await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toBe('SavedFilter'); - await editProcessFilter.openFilter(); await expect(await editProcessFilter.getProcessInstanceId()).toEqual(runningProcessInstance.entry.id); await editProcessFilter.setStatusFilterDropDown(PROCESS_STATUS.RUNNING); @@ -288,7 +285,6 @@ describe('Process list cloud', () => { await editProcessFilter.saveAs('SwitchFilter'); await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toBe('SwitchFilter'); - await editProcessFilter.openFilter(); await expect(await editProcessFilter.getProcessInstanceId()).toEqual(switchProcessInstance.entry.id); await expect(await editProcessFilter.getNumberOfAppNameOptions()).toBe(noOfApps); await expect(await editProcessFilter.checkAppNamesAreUnique()).toBe(true); diff --git a/e2e/process-services-cloud/task-list/edit-process-filters-component.e2e.ts b/e2e/process-services-cloud/task-list/edit-process-filters-component.e2e.ts index 095c5373d3..1f0d549497 100644 --- a/e2e/process-services-cloud/task-list/edit-process-filters-component.e2e.ts +++ b/e2e/process-services-cloud/task-list/edit-process-filters-component.e2e.ts @@ -85,7 +85,6 @@ describe('Edit process filters cloud', () => { await createNewProcessCustomFilter('New'); await expect(await processFilter.getActiveFilterName()).toBe('New'); await processFilter.clickProcessFilter('custom-new'); - await editProcessFilter.openFilter(); await editProcessFilter.setSortFilterDropDown('Start Date'); await expect(await editProcessFilter.getSortFilterDropDownValue()).toEqual('Start Date'); await expect(await editProcessFilter.getOrderFilterDropDownValue()).toEqual('Descending'); @@ -105,7 +104,6 @@ describe('Edit process filters cloud', () => { await createNewProcessCustomFilter('New'); await expect(await processFilter.getActiveFilterName()).toBe('New'); - await editProcessFilter.openFilter(); await expect(await editProcessFilter.getSortFilterDropDownValue()).toEqual('Id'); await processFilter.clickAllProcessesFilter(); @@ -119,11 +117,9 @@ describe('Edit process filters cloud', () => { await createNewProcessCustomFilter('New'); await expect(await processFilter.getActiveFilterName()).toBe('New'); - await editProcessFilter.openFilter(); await editProcessFilter.setSortFilterDropDown('Process Name'); await expect(await editProcessFilter.getSortFilterDropDownValue()).toEqual('Process Name'); await editProcessFilter.clickSaveButton(); - await editProcessFilter.openFilter(); await expect(await processFilter.getActiveFilterName()).toBe('New'); await expect(await editProcessFilter.getSortFilterDropDownValue()).toEqual('Process Name'); @@ -133,7 +129,6 @@ describe('Edit process filters cloud', () => { it('[C291808] A process filter is deleted when clicking on delete button', async () => { await createNewProcessCustomFilter('New'); - await editProcessFilter.openFilter(); await expect(await processFilter.getActiveFilterName()).toBe('New'); await expect(await editProcessFilter.getSortFilterDropDownValue()).toEqual('Id'); await editProcessFilter.clickDeleteButton(); @@ -154,7 +149,6 @@ describe('Edit process filters cloud', () => { await expect(await processFilter.getActiveFilterName()).toEqual(PROCESSES.ALL); await processFilter.clickRunningProcessesFilter(); await expect(await processFilter.getActiveFilterName()).toEqual(PROCESSES.RUNNING); - await editProcessFilter.openFilter(); await processFilter.clickAllProcessesFilter(); await expect(await processFilter.getActiveFilterName()).toEqual(PROCESSES.ALL); await expect(await editProcessFilter.getSortFilterDropDownValue()).toEqual('Start Date'); diff --git a/lib/process-services-cloud/src/lib/i18n/en.json b/lib/process-services-cloud/src/lib/i18n/en.json index 6007740408..af9f1112a7 100644 --- a/lib/process-services-cloud/src/lib/i18n/en.json +++ b/lib/process-services-cloud/src/lib/i18n/en.json @@ -277,7 +277,8 @@ "TOOL_TIP": { "SAVE": "Save filter", "SAVE_AS": "Save filter as", - "DELETE": "Delete filter" + "DELETE": "Delete filter", + "RESTORE": "Restore filter" }, "DIALOG": { "TITLE": "Save filter as", diff --git a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html index 41949533d6..921aaa9e1c 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html +++ b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html @@ -7,7 +7,7 @@ {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.TITLE' | translate}}
- diff --git a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.spec.ts index c841f81377..5693518a25 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.spec.ts @@ -25,7 +25,7 @@ import { MatDialog } from '@angular/material/dialog'; import { of } from 'rxjs'; import { debounceTime } from 'rxjs/operators'; import { ProcessFilterDialogCloudComponent } from './process-filter-dialog-cloud.component'; -import { EditProcessFilterCloudComponent } from './edit-process-filter-cloud.component'; +import { EditProcessFilterCloudComponent, PROCESS_FILTER_ACTION_RESTORE, PROCESS_FILTER_ACTION_SAVE_DEFAULT } from './edit-process-filter-cloud.component'; import { ProcessFiltersCloudModule } from '../process-filters-cloud.module'; import { ProcessFilterCloudModel } from '../models/process-filter-cloud.model'; import { ProcessFilterCloudService } from '../services/process-filter-cloud.service'; @@ -329,13 +329,13 @@ describe('EditProcessFilterCloudComponent', () => { fixture.detectChanges(); component.editProcessFilterForm.valueChanges - .pipe(debounceTime(500)) - .subscribe(() => { - const saveButton = fixture.debugElement.nativeElement.querySelector('[data-automation-id="adf-filter-action-saveAs"]'); - fixture.detectChanges(); - expect(saveButton.disabled).toEqual(false); - done(); - }); + .pipe(debounceTime(500)) + .subscribe(() => { + const saveButton = fixture.debugElement.nativeElement.querySelector('[data-automation-id="adf-filter-action-saveAs"]'); + fixture.detectChanges(); + expect(saveButton.disabled).toEqual(false); + done(); + }); const stateElement = fixture.debugElement.nativeElement.querySelector('[data-automation-id="adf-cloud-edit-process-property-status"] .mat-select-trigger'); stateElement.click(); @@ -353,13 +353,13 @@ describe('EditProcessFilterCloudComponent', () => { fixture.detectChanges(); component.editProcessFilterForm.valueChanges - .pipe(debounceTime(500)) - .subscribe(() => { - const saveButton = fixture.debugElement.nativeElement.querySelector('[data-automation-id="adf-filter-action-saveAs"]'); - fixture.detectChanges(); - expect(saveButton.disabled).toEqual(false); - done(); - }); + .pipe(debounceTime(500)) + .subscribe(() => { + const saveButton = fixture.debugElement.nativeElement.querySelector('[data-automation-id="adf-filter-action-saveAs"]'); + fixture.detectChanges(); + expect(saveButton.disabled).toEqual(false); + done(); + }); const stateElement = fixture.debugElement.nativeElement.querySelector('[data-automation-id="adf-cloud-edit-process-property-status"] .mat-select-trigger'); stateElement.click(); @@ -501,7 +501,7 @@ describe('EditProcessFilterCloudComponent', () => { suspendedDateType: DateCloudFilterType.RANGE }); filter.suspendedFrom = new Date(2021, 1, 1).toString(); - filter.suspendedTo = new Date(2021, 1, 2).toString(); + filter.suspendedTo = new Date(2021, 1, 2).toString(); getProcessFilterByIdSpy.and.returnValue(of(filter)); fixture.detectChanges(); @@ -888,6 +888,84 @@ describe('EditProcessFilterCloudComponent', () => { expect(component.processFilterActions.length).toEqual(1); }); + it('should emit save default filter event and save the filter on click save default filter button', async () => { + const expectedAction = { + actionType: PROCESS_FILTER_ACTION_SAVE_DEFAULT, + icon: 'adf:save', + tooltip: 'ADF_CLOUD_EDIT_PROCESS_FILTER.TOOL_TIP.SAVE', + filter: jasmine.anything() + }; + + component.actions = [PROCESS_FILTER_ACTION_SAVE_DEFAULT]; + component.toggleFilterActions = true; + + fixture.detectChanges(); + await fixture.whenStable(); + + const processFilterIdChange = new SimpleChange(null, 'mock-process-filter-id', true); + component.ngOnChanges({ id: processFilterIdChange }); + + fixture.detectChanges(); + await fixture.whenStable(); + + const saveDefaultFilterSpy = spyOn(service, 'updateFilter').and.returnValue(of([fakeFilter])); + const saveDefaultFilterEmitSpy: jasmine.Spy = spyOn(component.action, 'emit'); + const expansionPanel = fixture.debugElement.nativeElement.querySelector('mat-expansion-panel-header'); + expansionPanel.click(); + fixture.detectChanges(); + + const saveDefaultFilterButton = fixture.debugElement.nativeElement.querySelector(`[data-automation-id="adf-filter-action-${PROCESS_FILTER_ACTION_SAVE_DEFAULT}"]`); + fixture.detectChanges(); + expect(saveDefaultFilterButton.disabled).toBe(false); + saveDefaultFilterButton.click(); + + fixture.detectChanges(); + await fixture.whenStable(); + + expect(saveDefaultFilterSpy).toHaveBeenCalled(); + expect(saveDefaultFilterEmitSpy).toHaveBeenCalledWith(expectedAction); + }); + + it('should emit reset filter to defaults event and save the default filters on click reset button', async () => { + const expectedAction = { + actionType: PROCESS_FILTER_ACTION_RESTORE, + icon: 'settings_backup_restore', + tooltip: 'ADF_CLOUD_EDIT_PROCESS_FILTER.TOOL_TIP.RESTORE', + filter: jasmine.anything() + }; + + component.actions = [PROCESS_FILTER_ACTION_RESTORE]; + component.toggleFilterActions = true; + + fixture.detectChanges(); + await fixture.whenStable(); + + const processFilterIdChange = new SimpleChange(null, 'mock-process-filter-id', true); + component.ngOnChanges({ id: processFilterIdChange }); + + fixture.detectChanges(); + await fixture.whenStable(); + + const restoreDefaultProcessFiltersSpy = spyOn(service, 'getProcessFilters').and.returnValue(of([fakeFilter])); + const resetDefaultsFilterSpy = spyOn(service, 'resetProcessFilterToDefaults').and.returnValue(of([fakeFilter])); + const resetDefaultsEmitSpy: jasmine.Spy = spyOn(component.action, 'emit'); + const expansionPanel = fixture.debugElement.nativeElement.querySelector('mat-expansion-panel-header'); + expansionPanel.click(); + fixture.detectChanges(); + + const resetButton = fixture.debugElement.nativeElement.querySelector(`[data-automation-id="adf-filter-action-${PROCESS_FILTER_ACTION_RESTORE}"]`); + fixture.detectChanges(); + expect(resetButton.disabled).toBe(false); + resetButton.click(); + + fixture.detectChanges(); + await fixture.whenStable(); + + expect(resetDefaultsFilterSpy).toHaveBeenCalledWith(fakeFilter.appName, component.processFilter); + expect(restoreDefaultProcessFiltersSpy).toHaveBeenCalledWith(fakeFilter.appName); + expect(resetDefaultsEmitSpy).toHaveBeenCalledWith(expectedAction); + }); + it('should display default filter actions when input is empty', async () => { component.toggleFilterActions = true; component.actions = []; @@ -1054,7 +1132,7 @@ describe('EditProcessFilterCloudComponent', () => { it('should not call restore default filters service on deletion first filter', (done) => { component.toggleFilterActions = true; - const deleteFilterSpy = spyOn(service, 'deleteFilter').and.returnValue(of([new ProcessFilterCloudModel({ name: 'mock-filter-name'})])); + const deleteFilterSpy = spyOn(service, 'deleteFilter').and.returnValue(of([new ProcessFilterCloudModel({ name: 'mock-filter-name' })])); const restoreFiltersSpy = spyOn(component, 'restoreDefaultProcessFilters').and.returnValue(of([])); const deleteSpy: jasmine.Spy = spyOn(component.action, 'emit'); fixture.detectChanges(); @@ -1087,7 +1165,7 @@ describe('EditProcessFilterCloudComponent', () => { component.ngOnChanges({ id: processFilterIdChange }); fixture.detectChanges(); - expect(component.initiatorOptions).toEqual([ { username: 'user1' }, { username: 'user2'} ]); + expect(component.initiatorOptions).toEqual([{ username: 'user1' }, { username: 'user2' }]); }); }); }); diff --git a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.ts b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.ts index 98ce3a2b5e..ca20192e30 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.ts @@ -19,7 +19,7 @@ import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChange import { FormGroup, FormBuilder, AbstractControl } from '@angular/forms'; import { DateAdapter } from '@angular/material/core'; import { MatDialog } from '@angular/material/dialog'; -import { debounceTime, filter, takeUntil, finalize, switchMap } from 'rxjs/operators'; +import { debounceTime, filter, takeUntil, finalize, switchMap, tap } from 'rxjs/operators'; import { Subject, Observable, Subscription } from 'rxjs'; import moment from 'moment-es6'; import { Moment } from 'moment'; @@ -34,6 +34,8 @@ import { DateCloudFilterType, DateRangeFilter } from '../../../models/date-cloud export const PROCESS_FILTER_ACTION_SAVE = 'save'; export const PROCESS_FILTER_ACTION_SAVE_AS = 'saveAs'; export const PROCESS_FILTER_ACTION_DELETE = 'delete'; +export const PROCESS_FILTER_ACTION_SAVE_DEFAULT = 'saveDefaultFilter'; +export const PROCESS_FILTER_ACTION_RESTORE = 'restoreDefaultFilter'; const DEFAULT_PROCESS_FILTER_PROPERTIES = ['status', 'sort', 'order', 'lastModified']; const DEFAULT_SORT_PROPERTIES = ['id', 'name', 'status', 'startDate']; const DEFAULT_ACTIONS = ['save', 'saveAs', 'delete']; @@ -82,7 +84,7 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes @Input() showTitle = true; - /** Toggles the appearance of the process filter name . */ + /** Toggles the appearance of the process filter name . */ @Input() showProcessFilterName = true; @@ -272,7 +274,7 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes if (this.filterProperties.includes('initiator')) { this.initiatorOptions = !!this.processFilter.initiator - ? this.processFilter.initiator.split(',').map( username => Object.assign({}, { username })) + ? this.processFilter.initiator.split(',').map(username => Object.assign({}, { username })) : []; } @@ -377,7 +379,7 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes } onChangedUser(users: IdentityUserModel[], processProperty: ProcessFilterProperties) { - this.getPropertyController(processProperty).setValue(users.map( user => user.username).join(',')); + this.getPropertyController(processProperty).setValue(users.map(user => user.username).join(',')); } hasError(property: ProcessFilterProperties): boolean { @@ -416,14 +418,19 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes }); } - executeFilterActions(action: ProcessFilterAction): void { + executeFilterActions(event: Event, action: ProcessFilterAction): void { if (action.actionType === PROCESS_FILTER_ACTION_SAVE) { this.save(action); } else if (action.actionType === PROCESS_FILTER_ACTION_SAVE_AS) { this.saveAs(action); } else if (action.actionType === PROCESS_FILTER_ACTION_DELETE) { this.delete(action); + } else if (action.actionType === PROCESS_FILTER_ACTION_SAVE_DEFAULT) { + this.save(action); + } else if (action.actionType === PROCESS_FILTER_ACTION_RESTORE) { + this.reset(action); } + event.stopPropagation(); } save(saveAction: ProcessFilterAction) { @@ -449,7 +456,7 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes return filters.length === 0; }), switchMap(() => this.restoreDefaultProcessFilters())) - .subscribe(() => {}); + .subscribe(() => { }); } /** @@ -485,6 +492,16 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes }); } + reset(resetAction: ProcessFilterAction) { + this.processFilterCloudService.resetProcessFilterToDefaults(this.appName, this.processFilter).pipe( + tap((filters: ProcessFilterCloudModel[]) => { + resetAction.filter = filters.find(defaultFilter => defaultFilter.name === this.processFilter.name) || this.processFilter; + this.action.emit(resetAction); + }), + switchMap(() => this.restoreDefaultProcessFilters())) + .subscribe(() => { }); + } + /** * Return filter name * @@ -558,6 +575,16 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes actionType: PROCESS_FILTER_ACTION_DELETE, icon: 'delete', tooltip: 'ADF_CLOUD_EDIT_PROCESS_FILTER.TOOL_TIP.DELETE' + }, + { + actionType: PROCESS_FILTER_ACTION_SAVE_DEFAULT, + icon: 'adf:save', + tooltip: 'ADF_CLOUD_EDIT_PROCESS_FILTER.TOOL_TIP.SAVE' + }, + { + actionType: PROCESS_FILTER_ACTION_RESTORE, + icon: 'settings_backup_restore', + tooltip: 'ADF_CLOUD_EDIT_PROCESS_FILTER.TOOL_TIP.RESTORE' } ]; } @@ -772,7 +799,7 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.COMPLETED_DATE', type: 'date-range', key: 'completedDateRange', - attributes: { dateType: 'completedDateType', from: '_completedFrom', to: '_completedTo'}, + attributes: { dateType: 'completedDateType', from: '_completedFrom', to: '_completedTo' }, value: { completedDateType: filterModel.completedDateType || null, _completedFrom: filterModel.completedFrom || null, @@ -783,7 +810,7 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.STARTED_DATE', type: 'date-range', key: 'startedDateRange', - attributes: { dateType: 'startedDateType', from: '_startFrom', to: '_startTo'}, + attributes: { dateType: 'startedDateType', from: '_startFrom', to: '_startTo' }, value: { startedDateType: filterModel.startedDateType || null, _startFrom: filterModel.startFrom || null, @@ -794,7 +821,7 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.SUSPENDED_DATE', type: 'date-range', key: 'suspendedDateRange', - attributes: { dateType: 'suspendedDateType', from: '_suspendedFrom', to: '_suspendedTo'}, + attributes: { dateType: 'suspendedDateType', from: '_suspendedFrom', to: '_suspendedTo' }, value: { suspendedDateType: filterModel.suspendedDateType || null, _suspendedFrom: filterModel.suspendedFrom || null, diff --git a/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.spec.ts b/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.spec.ts index ba3a58a122..e753ae8ddd 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.spec.ts +++ b/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.spec.ts @@ -24,6 +24,7 @@ import { LocalPreferenceCloudService } from '../../../services/local-preference- import { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module'; import { TranslateModule } from '@ngx-translate/core'; import { fakeEmptyProcessCloudFilterEntries, fakeProcessCloudFilterEntries, fakeProcessCloudFilters, fakeProcessCloudFilterWithDifferentEntries, fakeProcessFilter } from '../mock/process-filters-cloud.mock'; +import { ProcessFilterCloudModel } from '../models/process-filter-cloud.model'; describe('ProcessFilterCloudService', () => { let service: ProcessFilterCloudService; @@ -216,4 +217,14 @@ describe('ProcessFilterCloudService', () => { expect(service.isDefaultFilter(defaultFilterName)).toBe(true); expect(service.isDefaultFilter(fakeFilterName)).toBe(false); }); + + it('should reset filters to default values', async () => { + const changedFilter = new ProcessFilterCloudModel(fakeProcessCloudFilters[0]); + changedFilter.processDefinitionKey = 'modifiedProcessDefinitionKey'; + spyOn(service, 'defaultProcessFilters').and.returnValue(fakeProcessCloudFilters); + + await service.resetProcessFilterToDefaults('mock-appName', changedFilter).toPromise(); + + expect(updatePreferenceSpy).toHaveBeenCalledWith('mock-appName', 'process-filters-mock-appName-mock-username', fakeProcessCloudFilters); + }); }); diff --git a/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts b/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts index fa81bf3986..4728f4cd6a 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts +++ b/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts @@ -143,7 +143,7 @@ export class ProcessFilterCloudService { }), map((filters: ProcessFilterCloudModel[]) => filters.filter((filter: ProcessFilterCloudModel) => filter.id === id)[0]), catchError((err) => this.handleProcessError(err)) - ); + ); } /** @@ -241,6 +241,21 @@ export class ProcessFilterCloudService { return defaultFilters.findIndex((filter) => filterName === filter.name) !== -1; } + /** + * Reset the process filters to the default configuration if it exists and stores it. + * If there is no default configuration for the process cloud filter with the provided filter name, + * then it changes nothing but stores the current values of the filter + * + * @param appName Name of the target app + * @param filter The process filter to be restored to defaults + * @returns Observable of process filters details + */ + resetProcessFilterToDefaults(appName: string, filter: ProcessFilterCloudModel): Observable { + const defaultFilter = this.defaultProcessFilters(appName).find(defaultFilterDefinition => defaultFilterDefinition.name === filter.name) || filter; + defaultFilter.id = filter.id; + return this.updateFilter(defaultFilter); + } + /** * Checks user preference are empty or not *