diff --git a/lib/process-services-cloud/src/lib/i18n/en.json b/lib/process-services-cloud/src/lib/i18n/en.json
index 9788bd521a..3cd22b0914 100644
--- a/lib/process-services-cloud/src/lib/i18n/en.json
+++ b/lib/process-services-cloud/src/lib/i18n/en.json
@@ -178,7 +178,8 @@
"TOOL_TIP": {
"SAVE": "Save filter",
"SAVE_AS": "Save filter as",
- "DELETE": "Delete filter"
+ "DELETE": "Delete filter",
+ "RESTORE":"Restore filter"
},
"LABEL": {
"APP_NAME": "ApplicationName",
diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.html b/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.html
index 9a990dc473..f1c2f7213b 100644
--- a/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.html
+++ b/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.html
@@ -13,7 +13,7 @@
matTooltip="{{ filterAction.tooltip | translate}}"
[attr.data-automation-id]="'adf-filter-action-' + filterAction.actionType"
[disabled]="isDisabledAction(filterAction)"
- (click)="executeFilterActions(filterAction)">
+ (click)="executeFilterActions($event, filterAction)">
diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.ts
index c232d89b5f..a956059588 100644
--- a/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.ts
+++ b/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.ts
@@ -16,13 +16,13 @@
*/
import { OnChanges, SimpleChanges, OnInit, OnDestroy, Directive, Input, Output, EventEmitter } from '@angular/core';
-import { AssignmentType, FilterOptions, TaskFilterAction, TaskFilterProperties, TaskStatusFilter } from '../../models/filter-cloud.model';
+import { AssignmentType, FilterOptions, TaskFilterAction, TaskFilterCloudModel, TaskFilterProperties, TaskStatusFilter } from '../../models/filter-cloud.model';
import { TaskCloudService } from './../../../services/task-cloud.service';
import { AppsProcessCloudService } from './../../../../app/services/apps-process-cloud.service';
import { DateCloudFilterType, DateRangeFilter } from '../../../../models/date-cloud-filter.model';
import moment, { Moment } from 'moment';
import { AbstractControl, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
-import { debounceTime, filter, finalize, switchMap, takeUntil } from 'rxjs/operators';
+import { debounceTime, filter, finalize, switchMap, takeUntil, tap } from 'rxjs/operators';
import { Observable, Subject } from 'rxjs';
import { DateAdapter } from '@angular/material/core';
import { TranslationService, UserPreferencesService, UserPreferenceValues } from '@alfresco/adf-core';
@@ -31,6 +31,7 @@ import { MatDialog } from '@angular/material/dialog';
import { IdentityUserModel } from '../../../../people/models/identity-user.model';
import { IdentityGroupModel } from '../../../../group/models/identity-group.model';
import { MatSelectChange } from '@angular/material/select';
+import { TaskFilterCloudService } from '../../services/task-filter-cloud.service';
/* eslint-disable @typescript-eslint/naming-convention */
@@ -46,6 +47,8 @@ export abstract class BaseEditTaskFilterCloudComponent implements OnInit, OnC
public static ACTION_SAVE = 'save';
public static ACTION_SAVE_AS = 'saveAs';
public static ACTION_DELETE = 'delete';
+ public static ACTION_SAVE_DEFAULT = 'saveDefaultFilter';
+ public static ACTION_RESTORE = 'restoreDefaultFilter';
public static APP_RUNNING_STATUS: string = 'RUNNING';
public static APPLICATION_NAME: string = 'appName';
public static PROCESS_DEFINITION_NAME: string = 'processDefinitionName';
@@ -117,7 +120,7 @@ export abstract class BaseEditTaskFilterCloudComponent implements OnInit, OnC
label: 'ADF_CLOUD_TASK_FILTERS.STATUS.ALL'
};
- taskFilter: T;
+ taskFilter: TaskFilterCloudModel;
changedTaskFilter: T;
/** Emitted when a task filter property changes. */
@@ -134,7 +137,8 @@ export abstract class BaseEditTaskFilterCloudComponent implements OnInit, OnC
protected appsProcessCloudService: AppsProcessCloudService,
protected taskCloudService: TaskCloudService,
protected dialog: MatDialog,
- protected translateService: TranslationService) {
+ protected translateService: TranslationService,
+ protected taskFilterCloudService: TaskFilterCloudService) {
}
ngOnInit() {
@@ -172,6 +176,16 @@ export abstract class BaseEditTaskFilterCloudComponent implements OnInit, OnC
actionType: BaseEditTaskFilterCloudComponent.ACTION_DELETE,
icon: 'delete',
tooltip: 'ADF_CLOUD_EDIT_TASK_FILTER.TOOL_TIP.DELETE'
+ },
+ {
+ actionType: BaseEditTaskFilterCloudComponent.ACTION_SAVE_DEFAULT,
+ icon: 'adf:save',
+ tooltip: 'ADF_CLOUD_EDIT_TASK_FILTER.TOOL_TIP.SAVE'
+ },
+ {
+ actionType: BaseEditTaskFilterCloudComponent.ACTION_RESTORE,
+ icon: 'settings_backup_restore',
+ tooltip: 'ADF_CLOUD_EDIT_TASK_FILTER.TOOL_TIP.RESTORE'
}
];
}
@@ -221,14 +235,19 @@ export abstract class BaseEditTaskFilterCloudComponent implements OnInit, OnC
return name.replace(regExt, '-');
}
- executeFilterActions(action: TaskFilterAction): void {
+ executeFilterActions(event: Event, action: TaskFilterAction): void {
if (action.actionType === BaseEditTaskFilterCloudComponent.ACTION_SAVE) {
this.save(action);
} else if (action.actionType === BaseEditTaskFilterCloudComponent.ACTION_SAVE_AS) {
this.saveAs(action);
} else if (action.actionType === BaseEditTaskFilterCloudComponent.ACTION_DELETE) {
this.delete(action);
+ } else if (action.actionType === BaseEditTaskFilterCloudComponent.ACTION_SAVE_DEFAULT) {
+ this.save(action);
+ } else if (action.actionType === BaseEditTaskFilterCloudComponent.ACTION_RESTORE) {
+ this.reset(action);
}
+ event.stopPropagation();
}
getRunningApplications() {
@@ -520,6 +539,16 @@ export abstract class BaseEditTaskFilterCloudComponent implements OnInit, OnC
});
}
+ reset(resetAction: TaskFilterAction) {
+ this.taskFilterCloudService.resetTaskFilterToDefaults(this.appName, this.taskFilter).pipe(
+ tap((filters: TaskFilterCloudModel[]) => {
+ resetAction.filter = filters.find(defaultFilter => defaultFilter.name === this.taskFilter.name) || this.taskFilter;
+ this.action.emit(resetAction);
+ }),
+ switchMap(() => this.restoreDefaultTaskFilters()))
+ .subscribe(() => { });
+ }
+
checkMandatoryFilterProperties() {
if (this.filterProperties === undefined || this.filterProperties.length === 0) {
this.filterProperties = this.getDefaultFilterProperties();
@@ -541,6 +570,6 @@ export abstract class BaseEditTaskFilterCloudComponent implements OnInit, OnC
protected abstract restoreDefaultTaskFilters(): Observable;
protected abstract addFilter(filterToAdd: T): Observable;
- protected abstract deleteFilter(filterToDelete: T): Observable;
+ protected abstract deleteFilter(filterToDelete: TaskFilterCloudModel): Observable;
protected abstract updateFilter(filterToUpdate: T): Observable;
}
diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/edit-task-filter-cloud.component.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/edit-task-filter-cloud.component.ts
index 077612ed16..499b954811 100644
--- a/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/edit-task-filter-cloud.component.ts
+++ b/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/edit-task-filter-cloud.component.ts
@@ -42,12 +42,12 @@ export class EditTaskFilterCloudComponent extends BaseEditTaskFilterCloudCompone
formBuilder: UntypedFormBuilder,
dialog: MatDialog,
translateService: TranslationService,
- private taskFilterCloudService: TaskFilterCloudService,
+ taskFilterCloudService: TaskFilterCloudService,
dateAdapter: DateAdapter,
userPreferencesService: UserPreferencesService,
appsProcessCloudService: AppsProcessCloudService,
taskCloudService: TaskCloudService) {
- super(formBuilder, dateAdapter, userPreferencesService, appsProcessCloudService, taskCloudService, dialog, translateService);
+ super(formBuilder, dateAdapter, userPreferencesService, appsProcessCloudService, taskCloudService, dialog, translateService, taskFilterCloudService);
}
assignNewFilter(model: TaskFilterCloudModel) {
diff --git a/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts b/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts
index de4768e16a..4742d54cd3 100644
--- a/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts
+++ b/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts
@@ -369,4 +369,19 @@ export class TaskFilterCloudService extends BaseCloudService {
return this.notificationCloudService.makeGQLQuery(appName, TASK_EVENT_SUBSCRIPTION_QUERY)
.pipe(map((events: any) => events.data.engineEvents));
}
+
+ /**
+ * Reset the task filters to the default configuration if it exists and stores it.
+ * If there is no default configuration for the task 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 task filter to be restored to defaults
+ * @returns Observable of task filters details
+ */
+ resetTaskFilterToDefaults(appName: string, filter: TaskFilterCloudModel): Observable {
+ const defaultFilter = this.defaultTaskFilters(appName).find(defaultFilterDefinition => defaultFilterDefinition.name === filter.name) || filter;
+ defaultFilter.id = filter.id;
+ return this.updateFilter(defaultFilter);
+ }
}