[ACA-3626] Cloud Task - completed date filter (#6185)

* completedDate task filter

* translation key

* update TaskFilterCloudModel

* update TaskQueryCloudRequestModel

* add completed date inputs

* update TaskQueryCloudRequestModel request params

* update tests
This commit is contained in:
Cilibiu Bogdan
2020-09-30 00:29:28 +03:00
committed by GitHub
parent 06f57a605b
commit f2f1cb4187
6 changed files with 123 additions and 2 deletions

View File

@@ -160,7 +160,8 @@
"DUE_DATE": "DueDate",
"SORT": "Sort",
"START_DATE": "StartDate",
"COMPLETED_BY": "Completed By"
"COMPLETED_BY": "Completed By",
"COMPLETED_DATE": "CompletedDate"
},
"DIALOG": {
"TITLE": "Save filter as",

View File

@@ -528,6 +528,64 @@ describe('EditTaskFilterCloudComponent', () => {
});
component.onFilterChange();
});
it('should set the correct completed date range when date range option is changed', (done) => {
component.appName = 'fake';
component.filterProperties = ['appName', 'processInstanceId', 'priority', 'completedDateRange'];
const taskFilterIdChange = new SimpleChange(undefined, 'mock-task-filter-id', true);
component.ngOnChanges({ 'id': taskFilterIdChange });
fixture.detectChanges();
const startedDateTypeControl: AbstractControl = component.editTaskFilterForm.get('completedDateType');
startedDateTypeControl.setValue(DateCloudFilterType.TODAY);
const dateFilter = {
startFrom: moment().startOf('day').toDate(),
startTo: moment().endOf('day').toDate()
};
component.filterChange.subscribe(() => {
expect(component.changedTaskFilter.completedFrom).toEqual(dateFilter.startFrom.toISOString());
expect(component.changedTaskFilter.completedTo).toEqual(dateFilter.startTo.toISOString());
done();
});
component.onFilterChange();
});
it('should update form on date range when completed value is updated', (done) => {
component.appName = 'fake';
component.filterProperties = ['appName', 'processInstanceId', 'priority', 'completedDateRange'];
const taskFilterIdChange = new SimpleChange(undefined, 'mock-task-filter-id', true);
component.ngOnChanges({ 'id': taskFilterIdChange });
fixture.detectChanges();
const dateFilter = {
startDate: moment().startOf('day').toDate(),
endDate: moment().endOf('day').toDate()
};
const startedDateTypeControl: AbstractControl = component.editTaskFilterForm.get('completedDateType');
startedDateTypeControl.setValue(DateCloudFilterType.RANGE);
component.onDateRangeFilterChanged(dateFilter, {
key: 'completedDateType',
label: '',
type: 'date-range',
value: '',
attributes: {
dateType: 'completedDateType',
from: '_completedFrom',
to: '_completedTo'
}
});
fixture.detectChanges();
component.filterChange.subscribe(() => {
expect(component.changedTaskFilter.completedFrom).toEqual(dateFilter.startDate.toISOString());
expect(component.changedTaskFilter.completedTo).toEqual(dateFilter.endDate.toISOString());
done();
});
component.onFilterChange();
});
});
describe('sort properties', () => {

View File

@@ -328,6 +328,17 @@ export class EditTaskFilterCloudComponent extends BaseEditTaskFilterCloudCompone
DateCloudFilterType.NEXT_7_DAYS,
DateCloudFilterType.RANGE
]
}),
new TaskFilterProperties({
label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.COMPLETED_DATE',
type: 'date-range',
key: 'completedDateRange',
attributes: { dateType: 'completedDateType', from: '_completedFrom', to: '_completedTo'},
value: {
completedDateType: this.taskFilter.completedDateType || null,
_completedFrom: this.taskFilter.completedFrom || null,
_completedTo: this.taskFilter.completedTo || null
}
})
];
}

View File

@@ -45,7 +45,11 @@ export class TaskFilterCloudModel {
lastModifiedFrom: Date;
lastModifiedTo: Date;
completedBy: string;
completedDateType: DateCloudFilterType;
completedDate: Date;
private _completedFrom: string;
private _completedTo: string;
private _dueDateFrom: string;
private _dueDateTo: string;
private dateRangeFilterService = new DateRangeFilterService();
@@ -79,6 +83,10 @@ export class TaskFilterCloudModel {
this.lastModifiedFrom = obj.lastModifiedFrom || null;
this.lastModifiedTo = obj.lastModifiedTo || null;
this.completedBy = obj.completedBy || null;
this.completedDateType = obj.completedDateType || null;
this.completedFrom = obj._completedFrom || null;
this.completedTo = obj._completedTo || null;
this.completedDate = obj.completedDate || null;
}
}
@@ -104,6 +112,28 @@ export class TaskFilterCloudModel {
return this.getEndDate(this.dueDateType);
}
set completedFrom(completedFrom: string) {
this._completedFrom = completedFrom;
}
set completedTo(completedTo: string) {
this._completedTo = completedTo;
}
get completedFrom(): string {
if (this.isDateRangeType(this.completedDateType)) {
return this._completedFrom;
}
return this.getStartDate(this.completedDateType);
}
get completedTo(): string {
if (this.isDateRangeType(this.completedDateType)) {
return this._completedTo;
}
return this.getEndDate(this.completedDateType);
}
private getStartDate(key: DateCloudFilterType) {
return this.dateRangeFilterService.getDateRange(key).startDate?.toISOString();
}

View File

@@ -107,6 +107,18 @@ export class TaskListCloudComponent extends BaseTaskListCloudComponent {
@Input()
standalone: boolean = false;
/** Filter the tasks. Display only tasks with completedDate equal to the supplied date. */
@Input()
completedDate: string = '';
/** Filter the tasks. Display only tasks with completedFrom equal to the supplied date. */
@Input()
completedFrom: string = '';
/** Filter the tasks. Display only tasks with completedTo equal to the supplied date. */
@Input()
completedTo: string = '';
constructor(private taskListCloudService: TaskListCloudService,
appConfigService: AppConfigService,
userPreferences: UserPreferencesService) {
@@ -150,7 +162,10 @@ export class TaskListCloudComponent extends BaseTaskListCloudComponent {
skipCount: this.skipCount,
sorting: this.sorting,
standalone: this.standalone,
completedBy: this.completedBy
completedBy: this.completedBy,
completedFrom: this.completedFrom,
completedTo: this.completedTo,
completedDate: this.completedDate
};
return new TaskQueryCloudRequestModel(requestNode);
}

View File

@@ -43,6 +43,9 @@ export class TaskQueryCloudRequestModel {
maxItems: number;
skipCount: number;
sorting?: TaskListCloudSortingModel[];
completedDate?: Date;
completedFrom?: string;
completedTo?: string;
constructor(obj?: any) {
if (obj) {
@@ -71,6 +74,9 @@ export class TaskQueryCloudRequestModel {
this.maxItems = obj.maxItems;
this.skipCount = obj.skipCount;
this.sorting = obj.sorting;
this.completedFrom = obj.completedFrom;
this.completedTo = obj.completedTo;
this.completedDate = obj.completedDate;
}
}
}