From e376d2f66a06b14c660686ffd9a2baf38bd96d36 Mon Sep 17 00:00:00 2001 From: Silviu Popa Date: Tue, 20 Apr 2021 15:48:45 +0300 Subject: [PATCH] [ACA-3700] - add suspended date filter (#6886) * [ACA-3700] - add suspended date filter * fix process list filtering Co-authored-by: Silviu Constantin Popa --- .../src/lib/i18n/en.json | 1 + ...dit-process-filter-cloud.component.spec.ts | 15 ++++++++++ .../edit-process-filter-cloud.component.ts | 11 ++++++++ .../models/process-filter-cloud.model.ts | 28 +++++++++++++++++++ .../process-list-cloud.component.ts | 10 +++++++ .../process-cloud-query-request.model.ts | 4 +++ 6 files changed, 69 insertions(+) diff --git a/lib/process-services-cloud/src/lib/i18n/en.json b/lib/process-services-cloud/src/lib/i18n/en.json index f17fcebff0..f4563a2a65 100644 --- a/lib/process-services-cloud/src/lib/i18n/en.json +++ b/lib/process-services-cloud/src/lib/i18n/en.json @@ -248,6 +248,7 @@ "PROCESS_NAME": "Process Name", "APP_VERSION": "AppVersion", "STARTED_DATE": "Started Date", + "SUSPENDED_DATE": "Suspended Date", "STARTED_BY": "Started by", "COMPLETED_DATE": "Completed Date", "DATE_RANGE": { 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 2517ac4aaa..b2d377c262 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 @@ -400,6 +400,21 @@ describe('EditProcessFilterCloudComponent', () => { }); }); + it('should get form attributes for suspendedData', async() => { + fixture.detectChanges(); + component.filterProperties = ['appName', 'suspendedDateRange']; + fixture.detectChanges(); + const processFilterIdChange = new SimpleChange(null, 'mock-process-filter-id', true); + component.ngOnChanges({ 'id': processFilterIdChange }); + fixture.detectChanges(); + fixture.whenStable().then(() => { + fixture.detectChanges(); + expect(component.editProcessFilterForm.get('_suspendedFrom')).toBeDefined(); + expect(component.editProcessFilterForm.get('_suspendedTo')).toBeDefined(); + expect(component.editProcessFilterForm.get('suspendedDateType')).toBeDefined(); + }); + }); + it('should able to build a editProcessFilter form with default properties if input is empty', async(() => { fixture.detectChanges(); component.filterProperties = []; 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 6ae810578e..1097da3588 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 @@ -777,6 +777,17 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes _startFrom: filterModel.startFrom || null, _startTo: filterModel.startTo || null } + }, + { + label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.SUSPENDED_DATE', + type: 'date-range', + key: 'suspendedDateRange', + attributes: { dateType: 'suspendedDateType', from: '_suspendedFrom', to: '_suspendedTo'}, + value: { + suspendedDateType: filterModel.suspendedDateType || null, + _startFrom: filterModel.suspendedFrom || null, + _startTo: filterModel.suspendedTo || null + } } ]; } diff --git a/lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts b/lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts index 55108859b8..011e02ff01 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts +++ b/lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts @@ -44,12 +44,15 @@ export class ProcessFilterCloudModel { startedDate: Date; completedDateType: DateCloudFilterType; startedDateType: DateCloudFilterType; + suspendedDateType: DateCloudFilterType; completedDate: Date; private _completedFrom: string; private _completedTo: string; private _startFrom: string; private _startTo: string; + private _suspendedFrom: string; + private _suspendedTo: string; constructor(obj?: any) { if (obj) { @@ -82,9 +85,12 @@ export class ProcessFilterCloudModel { this.startTo = obj._startTo || null; this.completedDateType = obj.completedDateType || null; this.startedDateType = obj.startedDateType || null; + this.suspendedDateType = obj.suspendedDateType || null; this.completedFrom = obj._completedFrom || null; this.completedTo = obj._completedTo || null; this.completedDate = obj.completedDate || null; + this._suspendedFrom = obj._suspendedFrom || null; + this._suspendedTo = obj._suspendedTo || null; } } @@ -132,6 +138,28 @@ export class ProcessFilterCloudModel { return this.getEndDate(this.startedDateType); } + set suspendedFrom(suspendedFrom: string) { + this._suspendedFrom = suspendedFrom; + } + + set suspendedTo(suspendedTo: string) { + this._suspendedTo = suspendedTo; + } + + get suspendedFrom(): string { + if (this.isDateRangeType(this.suspendedDateType)) { + return this._suspendedFrom; + } + return this.getEndDate(this.suspendedDateType); + } + + get suspendedTo(): string { + if (this.isDateRangeType(this.suspendedDateType)) { + return this._suspendedTo; + } + return this.getEndDate(this.suspendedDateType); + } + private getStartDate(key: DateCloudFilterType) { return this.dateRangeFilterService.getDateRange(key).startDate; } diff --git a/lib/process-services-cloud/src/lib/process/process-list/components/process-list-cloud.component.ts b/lib/process-services-cloud/src/lib/process/process-list/components/process-list-cloud.component.ts index 326c44890d..e1c65d630e 100644 --- a/lib/process-services-cloud/src/lib/process/process-list/components/process-list-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/process/process-list/components/process-list-cloud.component.ts @@ -110,6 +110,14 @@ export class ProcessListCloudComponent extends DataTableSchema implements OnChan @Input() completedDate: string = ''; + /** Filter the processes. Display only process with suspendedFrom equal to the supplied date. */ + @Input() + suspendedFrom: string = ''; + + /** Filter the processes. Display only process with suspendedTo equal to the supplied date. */ + @Input() + suspendedTo: string = ''; + /** * Row selection mode. Can be "none", "single" or "multiple". * For multiple mode, you can use Cmd (macOS) or Ctrl (Win) modifier @@ -341,6 +349,8 @@ export class ProcessListCloudComponent extends DataTableSchema implements OnChan startTo: this.startTo, completedFrom: this.completedFrom, completedTo: this.completedTo, + suspendedFrom: this.suspendedFrom, + suspendedTo: this.suspendedTo, completedDate: this.completedDate, sorting: this.sorting }; diff --git a/lib/process-services-cloud/src/lib/process/process-list/models/process-cloud-query-request.model.ts b/lib/process-services-cloud/src/lib/process/process-list/models/process-cloud-query-request.model.ts index 521b831ff5..55c0572c04 100644 --- a/lib/process-services-cloud/src/lib/process/process-list/models/process-cloud-query-request.model.ts +++ b/lib/process-services-cloud/src/lib/process/process-list/models/process-cloud-query-request.model.ts @@ -36,6 +36,8 @@ export class ProcessQueryCloudRequestModel { startTo?: string; completedFrom?: string; completedTo?: string; + suspendedFrom?: string; + suspendedTo?: string; completedDate?: string; maxItems: number; skipCount: number; @@ -60,6 +62,8 @@ export class ProcessQueryCloudRequestModel { this.startTo = obj.startTo; this.completedFrom = obj.completedFrom; this.completedTo = obj.completedTo; + this.suspendedFrom = obj.suspendedFrom; + this.suspendedTo = obj.suspendedTo; this.completedDate = obj.completedDate; this.maxItems = obj.maxItems; this.skipCount = obj.skipCount;