diff --git a/ng2-components/ng2-activiti-processlist/src/assets/activiti-process.service.mock.ts b/ng2-components/ng2-activiti-processlist/src/assets/activiti-process.service.mock.ts index 007020bf7a..5c16a53f14 100644 --- a/ng2-components/ng2-activiti-processlist/src/assets/activiti-process.service.mock.ts +++ b/ng2-components/ng2-activiti-processlist/src/assets/activiti-process.service.mock.ts @@ -18,17 +18,17 @@ import { AppDefinitionRepresentationModel, Comment, - FilterRepresentationModel, TaskDetailsModel, User } from 'ng2-activiti-tasklist'; -import { ProcessDefinitionRepresentation } from '../models/index'; +import { ProcessDefinitionRepresentation, FilterProcessRepresentationModel } from '../models/index'; export var fakeFilters = { size: 1, total: 1, start: 0, - data: [new FilterRepresentationModel({ + data: [new FilterProcessRepresentationModel({ 'name': 'Running', 'appId': '22', + 'id': '333', 'recent': true, 'icon': 'glyphicon-random', 'filter': {'sort': 'created-desc', 'name': '', 'state': 'running'} diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.spec.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.spec.ts index d483a0cccd..6b58843749 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.spec.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.spec.ts @@ -20,7 +20,7 @@ import { Observable } from 'rxjs/Rx'; import { LogServiceMock } from 'ng2-alfresco-core'; import { ActivitiProcessFilters } from './activiti-filters.component'; import { ActivitiProcessService } from '../services/activiti-process.service'; -import { FilterRepresentationModel } from 'ng2-activiti-tasklist'; +import { FilterProcessRepresentationModel } from '../models/filter-process.model'; describe('ActivitiFilters', () => { @@ -29,8 +29,8 @@ describe('ActivitiFilters', () => { let logService: LogServiceMock; let fakeGlobalFilter = []; - fakeGlobalFilter.push(new FilterRepresentationModel({name: 'FakeInvolvedTasks', filter: { state: 'open', assignment: 'fake-involved'}})); - fakeGlobalFilter.push(new FilterRepresentationModel({name: 'FakeMyTasks', filter: { state: 'open', assignment: 'fake-assignee'}})); + fakeGlobalFilter.push(new FilterProcessRepresentationModel({name: 'FakeInvolvedTasks', filter: { state: 'open', assignment: 'fake-involved'}})); + fakeGlobalFilter.push(new FilterProcessRepresentationModel({name: 'FakeMyTasks', filter: { state: 'open', assignment: 'fake-assignee'}})); let fakeGlobalFilterPromise = new Promise(function (resolve, reject) { resolve(fakeGlobalFilter); @@ -121,9 +121,9 @@ describe('ActivitiFilters', () => { }); it('should emit an event when a filter is selected', (done) => { - let currentFilter = new FilterRepresentationModel({filter: { state: 'open', assignment: 'fake-involved'}}); + let currentFilter = new FilterProcessRepresentationModel({filter: { state: 'open', assignment: 'fake-involved'}}); - filterList.filterClick.subscribe((filter: FilterRepresentationModel) => { + filterList.filterClick.subscribe((filter: FilterProcessRepresentationModel) => { expect(filter).toBeDefined(); expect(filter).toEqual(currentFilter); expect(filterList.currentFilter).toEqual(currentFilter); @@ -164,7 +164,7 @@ describe('ActivitiFilters', () => { }); it('should return the current filter after one is selected', () => { - let filter = new FilterRepresentationModel({name: 'FakeMyTasks', filter: { state: 'open', assignment: 'fake-assignee'}}); + let filter = new FilterProcessRepresentationModel({name: 'FakeMyTasks', filter: { state: 'open', assignment: 'fake-assignee'}}); expect(filterList.currentFilter).toBeUndefined(); filterList.selectFilter(filter); expect(filterList.getCurrentFilter()).toBe(filter); diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.ts index b43e2ba78d..96ed76ce60 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.ts @@ -160,7 +160,7 @@ export class ActivitiProcessFilters implements OnInit, OnChanges { /** * Return the current task - * @returns {FilterRepresentationModel} + * @returns {FilterProcessRepresentationModel} */ getCurrentFilter(): FilterProcessRepresentationModel { return this.currentFilter; diff --git a/ng2-components/ng2-activiti-processlist/src/models/filter-process.model.ts b/ng2-components/ng2-activiti-processlist/src/models/filter-process.model.ts index 1dcb551476..af4d9b8fb0 100644 --- a/ng2-components/ng2-activiti-processlist/src/models/filter-process.model.ts +++ b/ng2-components/ng2-activiti-processlist/src/models/filter-process.model.ts @@ -23,7 +23,7 @@ * @returns {FilterProcessRepresentationModel} . */ export class FilterProcessRepresentationModel { - id: number; + id: string; appId: string; name: string; recent: boolean; @@ -32,6 +32,7 @@ export class FilterProcessRepresentationModel { index: number; constructor(obj?: any) { + this.id = obj && obj.id || null; this.appId = obj && obj.appId || null; this.name = obj && obj.name || null; this.recent = obj && obj.recent || false; diff --git a/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.spec.ts b/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.spec.ts index cd2efd5ca8..ed4b0123a1 100644 --- a/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.spec.ts +++ b/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.spec.ts @@ -18,7 +18,6 @@ import { TestBed } from '@angular/core/testing'; import { async } from '@angular/core/testing'; import { CoreModule, AlfrescoApiService } from 'ng2-alfresco-core'; -import { FilterRepresentationModel } from 'ng2-activiti-tasklist'; import { AlfrescoApi } from 'alfresco-js-api'; import { fakeFilters, @@ -581,7 +580,7 @@ describe('ActivitiProcessService', () => { createFilter = spyOn(alfrescoApi.activiti.userFiltersApi, 'createUserProcessInstanceFilter') .and - .callFake((filter: FilterRepresentationModel) => Promise.resolve(filter)); + .callFake((filter: FilterProcessRepresentationModel) => Promise.resolve(filter)); }); describe('get filters', () => { @@ -596,6 +595,32 @@ describe('ActivitiProcessService', () => { expect(getFilters).toHaveBeenCalledWith({appId: 226}); }); + it('should return the task filter by id', (done) => { + service.getProcessFilterById('333').subscribe( + (res: FilterProcessRepresentationModel) => { + expect(res).toBeDefined(); + expect(res.id).toEqual('333'); + expect(res.name).toEqual('Running'); + expect(res.filter.sort).toEqual('created-desc'); + expect(res.filter.state).toEqual('running'); + done(); + } + ); + }); + + it('should return the task filter by name', (done) => { + service.getProcessFilterByName('Running').subscribe( + (res: FilterProcessRepresentationModel) => { + expect(res).toBeDefined(); + expect(res.id).toEqual('333'); + expect(res.name).toEqual('Running'); + expect(res.filter.sort).toEqual('created-desc'); + expect(res.filter.state).toEqual('running'); + done(); + } + ); + }); + it('should return the non-empty filter list that is returned by the API', async(() => { service.getProcessFilters(null).subscribe( (res) => { @@ -640,7 +665,7 @@ describe('ActivitiProcessService', () => { }); it('should return the created filter', async(() => { - service.addFilter(filter).subscribe((createdFilter: FilterRepresentationModel) => { + service.addFilter(filter).subscribe((createdFilter: FilterProcessRepresentationModel) => { expect(createdFilter).toBe(filter); }); })); diff --git a/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts b/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts index a2b8ece5f6..0da95cd609 100644 --- a/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts +++ b/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts @@ -70,10 +70,34 @@ export class ActivitiProcessService { .catch(err => this.handleError(err)); } + /** + * Retrieve the process filter by id + * @param processId - string - The id of the filter + * @returns {Observable} + */ + getProcessFilterById(processId: string, appId?: string): Observable { + return Observable.fromPromise(this.callApiGetUserProcessInstanceFilters(appId)) + .map((response: any) => { + return response.data.find(filter => filter.id === processId); + }).catch(err => this.handleError(err)); + } + + /** + * Retrieve the process filter by name + * @param processName - string - The name of the filter + * @returns {Observable} + */ + getProcessFilterByName(processName: string, appId?: string): Observable { + return Observable.fromPromise(this.callApiGetUserProcessInstanceFilters(appId)) + .map((response: any) => { + return response.data.find(filter => filter.name === processName); + }).catch(err => this.handleError(err)); + } + /** * Create and return the default filters * @param appId - * @returns {FilterRepresentationModel[]} + * @returns {FilterProcessRepresentationModel[]} */ public createDefaultFilters(appId: number): Observable { let runnintFilter = this.getRunningFilterInstance(appId); @@ -294,6 +318,14 @@ export class ActivitiProcessService { return this.apiService.getInstance().activiti.userFiltersApi.createUserProcessInstanceFilter(filter); } + callApiProcessFilters(appId?: string) { + if (appId) { + return this.apiService.getInstance().activiti.userFiltersApi.getUserProcessInstanceFilters({ appId: appId }); + } else { + return this.apiService.getInstance().activiti.userFiltersApi.getUserProcessInstanceFilters(); + } + } + private extractData(res: any) { return res.data || {}; } diff --git a/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts b/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts index 7d56ba2299..1de4733fc3 100644 --- a/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts +++ b/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts @@ -54,7 +54,7 @@ export class AppDefinitionRepresentationModel { * @returns {FilterRepresentationModel} . */ export class FilterRepresentationModel { - id: number; + id: string; appId: string; name: string; recent: boolean; @@ -64,6 +64,7 @@ export class FilterRepresentationModel { landingTaskId: string; constructor(obj?: any) { + this.id = obj && obj.id || null; this.appId = obj && obj.appId || null; this.name = obj && obj.name || null; this.recent = obj && obj.recent || false;