diff --git a/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts b/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts
index 66b05625f9..bbf1446184 100644
--- a/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts
+++ b/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts
@@ -82,7 +82,7 @@ export class ActivitiDemoComponent implements AfterViewChecked {
onTaskFilterClick(event: any) {
this.taskFilter = event;
- this.activititasklist.load(this.taskFilter);
+ this.activititasklist.load(this.taskFilter.filter);
}
onProcessFilterClick(event: any) {
diff --git a/ng2-components/ng2-activiti-tasklist/README.md b/ng2-components/ng2-activiti-tasklist/README.md
index e6a5be262c..87995cf4ea 100644
--- a/ng2-components/ng2-activiti-tasklist/README.md
+++ b/ng2-components/ng2-activiti-tasklist/README.md
@@ -50,7 +50,7 @@ Also make sure you include these dependencies in your `index.html` file:
## Basic usage example Activiti Task List
The component shows the list of all the tasks filter by the
-FilterModel passed in input.
+FilterParamModel passed in input.
```html
```
@@ -62,25 +62,19 @@ clicked
#### Options
-**taskFilter**: { FilterModel } required) FilterModel object that
+**taskFilter**: { FilterParamModel } required) FilterParamModel object that
is passed to the task list API to filter the task list.
Example:
```json
{
- "id": 4,
- "name": "Involved Tasks",
- "recent": false,
- "icon": "glyphicon-align-left",
- "filter": {
- "appDefinitionId": "1",
- "processDefinitionId": "1533",
- "sort": "created-desc",
- "name": "",
- "state": "open",
- "assignment": "involved",
- "page": "0",
- "size": "25"
- }
+ "appDefinitionId": "1",
+ "processDefinitionId": "1533",
+ "sort": "created-desc",
+ "text": "",
+ "state": "open",
+ "assignment": "involved",
+ "page": "0",
+ "size": "25"
}
```
**schemaColumn**: { any[] } optional) JSON object that represent
diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts
index b8374faf83..184e25d791 100644
--- a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts
+++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts
@@ -34,7 +34,7 @@ describe('ActivitiTaskList', () => {
let taskList: ActivitiTaskList;
let fakeGlobalTask = {
- size: 1, total: 12, start: 0,
+ size: 2, total: 2, start: 0,
data: [
{
id: 14, name: 'fake-long-name-fake-long-name-fake-long-name-fak50-long-name', description: null, category: null,
@@ -51,10 +51,19 @@ describe('ActivitiTaskList', () => {
]
};
+ let fakeGlobalTotalTasks = {
+ size: 2, total: 2, start: 0,
+ data: []
+ };
+
let fakeGlobalTaskPromise = new Promise(function (resolve, reject) {
resolve(fakeGlobalTask);
});
+ let fakeGlobalTotalTasksPromise = new Promise(function (resolve, reject) {
+ resolve(fakeGlobalTotalTasks);
+ });
+
let fakeErrorTaskList = {
error: 'wrong request'
};
@@ -91,6 +100,7 @@ describe('ActivitiTaskList', () => {
});
it('should return the filtered task list when the taskFilter is passed', (done) => {
+ spyOn(taskList.activiti, 'getTotalTasks').and.returnValue(Observable.fromPromise(fakeGlobalTotalTasksPromise));
spyOn(taskList.activiti, 'getTasks').and.returnValue(Observable.fromPromise(fakeGlobalTaskPromise));
taskList.taskFilter = new FilterModel('name', false, 'icon', '', 'open', 'fake-assignee');
@@ -108,7 +118,7 @@ describe('ActivitiTaskList', () => {
});
it('should throw an exception when the response is wrong', (done) => {
- spyOn(taskList.activiti, 'getTasks').and.returnValue(Observable.fromPromise(fakeErrorTaskPromise));
+ spyOn(taskList.activiti, 'getTotalTasks').and.returnValue(Observable.fromPromise(fakeErrorTaskPromise));
taskList.taskFilter = new FilterModel('name', false, 'icon', '', 'open', 'fake-assignee');
taskList.onError.subscribe( (err) => {
diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts
index 848c215aa3..cee3700c62 100644
--- a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts
+++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts
@@ -19,7 +19,7 @@ import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';
import { AlfrescoTranslationService, AlfrescoAuthenticationService, AlfrescoPipeTranslate } from 'ng2-alfresco-core';
import { ALFRESCO_DATATABLE_DIRECTIVES, ObjectDataTableAdapter, DataTableAdapter, DataRowEvent } from 'ng2-alfresco-datatable';
import { ActivitiTaskListService } from './../services/activiti-tasklist.service';
-import { FilterModel } from '../models/filter.model';
+import { FilterModel, FilterParamsModel } from '../models/filter.model';
declare let componentHandler: any;
declare let __moduleName: string;
@@ -84,15 +84,22 @@ export class ActivitiTaskList implements OnInit {
);
if (this.taskFilter) {
- this.load(this.taskFilter);
+ this.load(this.taskFilter.filter);
}
}
- public load(filter: FilterModel) {
- this.activiti.getTasks(filter).subscribe(
+ public load(filterParam: FilterParamsModel) {
+ this.activiti.getTotalTasks(filterParam).subscribe(
(res) => {
- this.renderTasks(res.data);
- this.onSuccess.emit(res);
+ filterParam.size = res.total;
+ this.activiti.getTasks(filterParam).subscribe(
+ (response) => {
+ this.renderTasks(response.data);
+ this.onSuccess.emit(response);
+ }, (error) => {
+ console.error(error);
+ this.onError.emit(error);
+ });
}, (err) => {
console.error(err);
this.onError.emit(err);
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 22acd2523b..846559408e 100644
--- a/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts
+++ b/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts
@@ -33,7 +33,7 @@ export class FilterModel {
this.name = name;
this.recent = recent;
this.icon = icon;
- this.filter = new FilterParamsModel(query, state, assignment, appDefinitionId);
+ this.filter = new FilterParamsModel(assignment, state, query, appDefinitionId);
}
}
@@ -45,15 +45,25 @@ export class FilterModel {
* @returns {FilterModel} .
*/
export class FilterParamsModel {
- name: string;
- state: string;
- assignment: string;
appDefinitionId: string;
+ processInstanceId: string;
+ processDefinitionId: string;
+ text: string;
+ assignment: string;
+ state: string;
+ sort: string;
+ page: number = 0;
+ size: number = 25;
- constructor(query: string, state: string, assignment: string, appDefinitionId?: string) {
- this.name = query;
- this.state = state;
- this.assignment = assignment;
+ constructor(assignment: string, state: string, text: string, appDefinitionId?: string, processInstanceId?: string,
+ processDefinitionId?: string, page?: number, size?: number) {
this.appDefinitionId = appDefinitionId;
+ this.processInstanceId = processInstanceId;
+ this.processDefinitionId = processDefinitionId;
+ this.text = text;
+ this.assignment = assignment;
+ this.state = state;
+ this.page = page;
+ this.size = size;
}
}
diff --git a/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.spec.ts b/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.spec.ts
index 8684988f3a..d0368efa84 100644
--- a/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.spec.ts
+++ b/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.spec.ts
@@ -42,8 +42,7 @@ describe('ActivitiTaskListService', () => {
};
let fakeFilter = {
- page: 2, filterId: 2, appDefinitionId: null,
- filter: {sort: 'created-desc', name: '', state: 'open', assignment: 'fake-assignee'}
+ sort: 'created-desc', text: '', state: 'open', assignment: 'fake-assignee'
};
let fakeUser = {id: 1, email: 'fake-email@dom.com', firstName: 'firstName', lastName: 'lastName'};
@@ -130,7 +129,7 @@ describe('ActivitiTaskListService', () => {
it('should return the task list filtered', (done) => {
service.getTasks(fakeFilter).subscribe(
- res => {
+ res => {
expect(res).toBeDefined();
expect(res.size).toEqual(1);
expect(res.total).toEqual(1);
@@ -302,4 +301,22 @@ describe('ActivitiTaskListService', () => {
});
});
+ it('should return the total number of tasks', (done) => {
+ service.getTotalTasks(fakeFilter).subscribe(
+ res => {
+ expect(res).toBeDefined();
+ expect(res.size).toEqual(1);
+ expect(res.total).toEqual(1);
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeTaskList)
+ });
+ });
+
});
+
diff --git a/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.ts b/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.ts
index 5b9fb5afb0..94625760fb 100644
--- a/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.ts
+++ b/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.ts
@@ -59,11 +59,11 @@ export class ActivitiTaskListService {
/**
* Retrive all the tasks filtered by filterModel
- * @param filter - FilterModel
+ * @param filter - FilterParamsModel
* @returns {any}
*/
- getTasks(filter: FilterModel): Observable {
- return Observable.fromPromise(this.callApiTasksFiltered(filter.filter))
+ getTasks(filter: FilterParamsModel): Observable {
+ return Observable.fromPromise(this.callApiTasksFiltered(filter))
.map((res: any) => {
return res;
}).catch(this.handleError);
@@ -156,6 +156,20 @@ export class ActivitiTaskListService {
.map(res => res);
}
+
+ /**
+ * Return the total number of the tasks by filter
+ * @param filter - FilterParamsModel
+ * @returns {any}
+ */
+ public getTotalTasks(filter: FilterParamsModel): Observable {
+ filter.size = 0;
+ return Observable.fromPromise(this.callApiTasksFiltered(filter))
+ .map((res: any) => {
+ return res;
+ }).catch(this.handleError);
+ }
+
private callApiTasksFiltered(filter: FilterParamsModel) {
return this.authService.getAlfrescoApi().activiti.taskApi.listTasks(filter);
}