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
*