From 22da6c2c57c213987378671174c889805dea8e17 Mon Sep 17 00:00:00 2001 From: davidcanonieto Date: Tue, 26 Jan 2021 19:15:30 +0100 Subject: [PATCH] [ACA-4258] Add Task Filter Counters (#6556) * [ACA-4258] Add Task Filter Counters * Fix unit test --- docs/docassets/images/task-filter-counter.png | Bin 0 -> 25234 bytes .../task-filters-cloud.component.md | 6 +++ .../base-task-filters-cloud.component.html | 6 ++- .../base-task-filters-cloud.component.scss | 33 ++++++++++---- .../base-task-filters-cloud.component.ts | 4 +- ...rvice-task-filters-cloud.component.spec.ts | 2 +- .../task-filters-cloud.component.spec.ts | 20 ++++++++- .../task-filters-cloud.component.ts | 12 ++++- .../mock/task-filters-cloud.mock.ts | 6 ++- .../task-filters/models/filter-cloud.model.ts | 2 + .../services/task-filter-cloud.service.ts | 41 +++++++++++++++--- 11 files changed, 109 insertions(+), 23 deletions(-) create mode 100644 docs/docassets/images/task-filter-counter.png diff --git a/docs/docassets/images/task-filter-counter.png b/docs/docassets/images/task-filter-counter.png new file mode 100644 index 0000000000000000000000000000000000000000..80999e2e558af15f100d34fe769b91810cac6fd0 GIT binary patch literal 25234 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 OI`y -
+
+ + {{ counters$[filter.key] | async }} +
diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.scss b/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.scss index 7d7ddee13e..bf7d7fc6f1 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.scss +++ b/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.scss @@ -2,28 +2,45 @@ $primary: map-get($theme, primary); .adf { - &-filters__entry { + &-task-filters__entry { + display: flex; padding: 12px 0 !important; height: 24px; width: 100%; cursor: pointer; font-size: 14px !important; font-weight: bold; - opacity: 0.54; + opacity: 1; .adf-full-width { display: flex; width: 100%; } - .adf-filter-action-button .adf-filter-action-button__label { - padding-left: 20px; - margin: 0 8px !important; + .adf-filter-action-button { + opacity: 0.54; + padding: 16px; + + .adf-filter-action-button__label { + padding-left: 20px; + margin: 0 8px !important; + } } - } - &-filters__entry { - &.adf-active, + + .adf-filter-action-button__counter { + opacity: 0.54; + padding-left: 10px; + padding-top: 6px; + } + &:hover { + color: mat-color($primary); + .adf-filter-action-button__counter, .adf-filter-action-button { + opacity: 1; + } + } + + .adf-active { color: mat-color($primary); opacity: 1; } diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.ts index 7b4fd646a1..f0d7ecbe52 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.ts @@ -16,7 +16,7 @@ */ import { EventEmitter, Input, Output, OnDestroy, Directive } from '@angular/core'; -import { Subject } from 'rxjs'; +import { Observable, Subject } from 'rxjs'; import { FilterParamsModel } from '../models/filter-cloud.model'; @Directive() @@ -45,6 +45,8 @@ export abstract class BaseTaskFiltersCloudComponent implements OnDestroy { @Output() error: EventEmitter = new EventEmitter(); + counters$: {[key: string]: Observable} = {}; + protected onDestroy$ = new Subject(); ngOnDestroy() { diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/service-task-filters-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/service-task-filters-cloud.component.spec.ts index 4c20e80ed4..39152e72c0 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/components/service-task-filters-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/task/task-filters/components/service-task-filters-cloud.component.spec.ts @@ -111,7 +111,7 @@ describe('ServiceTaskFiltersCloudComponent', () => { component.showIcons = true; fixture.whenStable().then(() => { fixture.detectChanges(); - const filters = fixture.debugElement.queryAll(By.css('.adf-filters__entry')); + const filters = fixture.debugElement.queryAll(By.css('.adf-task-filters__entry')); expect(component.filters.length).toBe(3); expect(filters.length).toBe(3); expect(filters[0].nativeElement.innerText).toContain('FakeServiceTasks'); diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.spec.ts index 6900a14316..c1a406fa34 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.spec.ts @@ -18,7 +18,7 @@ import { SimpleChange } from '@angular/core'; import { ComponentFixture, TestBed, async } from '@angular/core/testing'; import { setupTestBed } from '@alfresco/adf-core'; -import { from, Observable } from 'rxjs'; +import { from, Observable, of } from 'rxjs'; import { TASK_FILTERS_SERVICE_TOKEN } from '../../../services/cloud-token.service'; import { LocalPreferenceCloudService } from '../../../services/local-preference-cloud.service'; import { TaskFilterCloudService } from '../services/task-filter-cloud.service'; @@ -68,6 +68,7 @@ describe('TaskFiltersCloudComponent', () => { component = fixture.componentInstance; taskFilterService = TestBed.inject(TaskFilterCloudService); + spyOn(taskFilterService, 'getTaskFilterCounter').and.returnValue(of(11)); }); it('should attach specific icon for each filter if hasIcon is true', async(() => { @@ -111,7 +112,7 @@ describe('TaskFiltersCloudComponent', () => { component.showIcons = true; fixture.whenStable().then(() => { fixture.detectChanges(); - const filters = fixture.debugElement.queryAll(By.css('.adf-filters__entry')); + const filters = fixture.debugElement.queryAll(By.css('.adf-task-filters__entry')); expect(component.filters.length).toBe(3); expect(filters.length).toBe(3); expect(filters[0].nativeElement.innerText).toContain('FakeInvolvedTasks'); @@ -363,4 +364,19 @@ describe('TaskFiltersCloudComponent', () => { component.selectFilter(filter); expect(component.currentFilter).toBe(fakeGlobalFilter[0]); }); + + it('should display filter counter if property set to true', async(() => { + spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(fakeGlobalFilterObservable); + const change = new SimpleChange(undefined, 'my-app-1', true); + component.ngOnChanges({'appName': change}); + fixture.detectChanges(); + component.showIcons = true; + fixture.whenStable().then(() => { + fixture.detectChanges(); + const filterCounters = fixture.debugElement.queryAll(By.css('.adf-filter-action-button__counter')); + expect(component.filters.length).toBe(3); + expect(filterCounters.length).toBe(1); + expect(filterCounters[0].nativeElement.innerText).toContain('11'); + }); + })); }); diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts index eec4fe45dd..b4845bed6a 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts @@ -40,10 +40,11 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp filters$: Observable; filters: TaskFilterCloudModel[] = []; currentFilter: TaskFilterCloudModel; + counters = {}; constructor(private taskFilterCloudService: TaskFilterCloudService, private translationService: TranslationService) { - super(); + super(); } ngOnInit() { @@ -71,6 +72,7 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp this.resetFilter(); this.filters = Object.assign([], res); this.selectFilterAndEmit(this.filterParam); + this.initFilterCounters(); this.success.emit(res); }, (err: any) => { @@ -79,6 +81,14 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp ); } + initFilterCounters() { + this.filters.forEach((filter) => { + if (filter.showCounter) { + this.counters$[filter.key] = this.taskFilterCloudService.getTaskFilterCounter(filter); + } + }); + } + public selectFilter(paramFilter: FilterParamsModel) { if (paramFilter) { this.currentFilter = this.filters.find((filter, index) => diff --git a/lib/process-services-cloud/src/lib/task/task-filters/mock/task-filters-cloud.mock.ts b/lib/process-services-cloud/src/lib/task/task-filters/mock/task-filters-cloud.mock.ts index eb073819d5..e97b6f760b 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/mock/task-filters-cloud.mock.ts +++ b/lib/process-services-cloud/src/lib/task/task-filters/mock/task-filters-cloud.mock.ts @@ -24,7 +24,8 @@ export const fakeGlobalFilter = [ icon: 'adjust', id: '10', status: 'open', - assignee: 'fake-involved' + assignee: 'fake-involved', + showCounter: true }), new TaskFilterCloudModel({ name: 'FakeMyTasks1', @@ -32,7 +33,8 @@ export const fakeGlobalFilter = [ icon: 'done', id: '11', status: 'open', - assignee: 'fake-assignee' + assignee: 'fake-assignee', + showCounter: false }), new TaskFilterCloudModel({ name: 'FakeMyTasks2', diff --git a/lib/process-services-cloud/src/lib/task/task-filters/models/filter-cloud.model.ts b/lib/process-services-cloud/src/lib/task/task-filters/models/filter-cloud.model.ts index 128f8b6dad..932a5e1ec2 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/models/filter-cloud.model.ts +++ b/lib/process-services-cloud/src/lib/task/task-filters/models/filter-cloud.model.ts @@ -51,6 +51,7 @@ export class TaskFilterCloudModel { assignmentType: AssignmentType; completedDate: Date; completedBy: IdentityUserModel; + showCounter: boolean; private _completedFrom: string; private _completedTo: string; @@ -97,6 +98,7 @@ export class TaskFilterCloudModel { this.createdFrom = obj._createdFrom || null; this.createdTo = obj._createdTo || null; this.candidateGroups = obj.candidateGroups || null; + this.showCounter = obj.showCounter || false; } } 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 da2ed40748..65e09222fa 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 @@ -15,26 +15,30 @@ * limitations under the License. */ -import { IdentityUserService } from '@alfresco/adf-core'; +import { AlfrescoApiService, AppConfigService, IdentityUserService } from '@alfresco/adf-core'; import { Injectable, Inject } from '@angular/core'; -import { Observable, of, BehaviorSubject } from 'rxjs'; +import { Observable, of, BehaviorSubject, throwError } from 'rxjs'; import { TaskFilterCloudModel } from '../models/filter-cloud.model'; import { switchMap, map } from 'rxjs/operators'; +import { BaseCloudService } from '../../../services/base-cloud.service'; import { PreferenceCloudServiceInterface } from '../../../services/preference-cloud.interface'; import { TASK_FILTERS_SERVICE_TOKEN } from '../../../services/cloud-token.service'; +import { TaskCloudNodePaging } from '../../task-list/models/task-cloud.model'; @Injectable({ providedIn: 'root' }) -export class TaskFilterCloudService { +export class TaskFilterCloudService extends BaseCloudService { private filtersSubject: BehaviorSubject; filters$: Observable; constructor( private identityUserService: IdentityUserService, @Inject(TASK_FILTERS_SERVICE_TOKEN) - public preferenceService: PreferenceCloudServiceInterface - ) { + public preferenceService: PreferenceCloudServiceInterface, + apiService: AlfrescoApiService, + appConfigService: AppConfigService) { + super(apiService, appConfigService); this.filtersSubject = new BehaviorSubject([]); this.filters$ = this.filtersSubject.asObservable(); } @@ -219,6 +223,27 @@ export class TaskFilterCloudService { return defaultFilters.findIndex((filter) => filterName === filter.name) !== -1; } + /** + * Finds a task using an object with optional query properties. + * @param requestNode Query object + * @returns Task information + */ + getTaskFilterCounter(taskFilter: TaskFilterCloudModel): Observable { + if (taskFilter.appName || taskFilter.appName === '') { + const queryUrl = `${this.getBasePath(taskFilter.appName)}/query/v1/tasks`; + const queryParams = { + assignee: taskFilter.assignee, + status: taskFilter.status, + appName: taskFilter.appName + }; + return this.get(queryUrl, queryParams).pipe( + map((tasks) => tasks.list.pagination.totalItems) + ); + } else { + return throwError('Appname not configured'); + } + } + /** * Calls update preference api to update task filter * @param appName Name of the target app @@ -264,7 +289,8 @@ export class TaskFilterCloudService { status: 'ASSIGNED', assignee: this.identityUserService.getCurrentUserInfo().username, sort: 'createdDate', - order: 'DESC' + order: 'DESC', + showCounter: true }), new TaskFilterCloudModel({ name: 'ADF_CLOUD_TASK_FILTERS.QUEUED_TASKS', @@ -274,7 +300,8 @@ export class TaskFilterCloudService { status: 'CREATED', assignee: '', sort: 'createdDate', - order: 'DESC' + order: 'DESC', + showCounter: true }), new TaskFilterCloudModel({ name: 'ADF_CLOUD_TASK_FILTERS.COMPLETED_TASKS',