From b0a949409625ed3bf5668aa3130f83c82d1698c8 Mon Sep 17 00:00:00 2001 From: mauriziovitale84 Date: Thu, 14 Jul 2016 17:49:30 +0100 Subject: [PATCH] Add new activiti api tasklist --- .../components/tasks/tasks-demo.component.ts | 2 +- .../components/activiti-tasklist.component.ts | 23 +++++-- .../src/services/activiti-tasklist.service.ts | 69 ++++++++++++++++++- 3 files changed, 84 insertions(+), 10 deletions(-) diff --git a/demo-shell-ng2/app/components/tasks/tasks-demo.component.ts b/demo-shell-ng2/app/components/tasks/tasks-demo.component.ts index 862e5ad7c7..2ff3f17503 100644 --- a/demo-shell-ng2/app/components/tasks/tasks-demo.component.ts +++ b/demo-shell-ng2/app/components/tasks/tasks-demo.component.ts @@ -17,7 +17,7 @@ import { Component, OnInit } from '@angular/core'; import { ActivitiTaskList } from 'ng2-alfresco-activiti-tasklist'; -import { DataColumn, ObjectDataTableAdapter, ObjectDataColumn } from 'ng2-alfresco-datatable'; +import { ObjectDataTableAdapter, ObjectDataColumn } from 'ng2-alfresco-datatable'; @Component({ selector: 'tasks-demo', diff --git a/ng2-components/ng2-alfresco-activiti-tasklist/src/components/activiti-tasklist.component.ts b/ng2-components/ng2-alfresco-activiti-tasklist/src/components/activiti-tasklist.component.ts index e998bf5cdc..05db69546c 100644 --- a/ng2-components/ng2-alfresco-activiti-tasklist/src/components/activiti-tasklist.component.ts +++ b/ng2-components/ng2-alfresco-activiti-tasklist/src/components/activiti-tasklist.component.ts @@ -29,7 +29,7 @@ declare let __moduleName: string; moduleId: __moduleName, templateUrl: './activiti-tasklist.component.html', directives: [ALFRESCO_DATATABLE_DIRECTIVES], - providers: [ ActivitiTaskListService ] + providers: [ActivitiTaskListService] }) export class ActivitiTaskList { @@ -37,7 +37,10 @@ export class ActivitiTaskList { tasks: ObjectDataTableAdapter; @Input() - data: DataTableAdapter; + data: DataTableAdapter; + + @Input() + assignment: string; /** * Constructor @@ -51,10 +54,18 @@ export class ActivitiTaskList { translate.addTranslationFolder('node_modules/ng2-alfresco-activiti-tasklist'); if (auth.isLoggedIn('BPM')) { - activiti.getTasks().subscribe((res) => { - let tasks = res.data || []; - console.log(tasks); - this.loadTasks(tasks); + activiti.getTaskListFilters().subscribe((resFilter) => { + let tasksListFilter = resFilter.data || []; + if (tasksListFilter.length === 0) { + activiti.createMyTaskFilter().subscribe(() => { + console.log('Default filters created'); + }); + activiti.getTasks(this.assignment).subscribe((res) => { + let tasks = res.data || []; + console.log(tasks); + this.loadTasks(tasks); + }); + } }); } else { console.error('User unauthorized'); diff --git a/ng2-components/ng2-alfresco-activiti-tasklist/src/services/activiti-tasklist.service.ts b/ng2-components/ng2-alfresco-activiti-tasklist/src/services/activiti-tasklist.service.ts index 674ed1dcf3..b98bfae039 100644 --- a/ng2-components/ng2-alfresco-activiti-tasklist/src/services/activiti-tasklist.service.ts +++ b/ng2-components/ng2-alfresco-activiti-tasklist/src/services/activiti-tasklist.service.ts @@ -24,23 +24,86 @@ export class ActivitiTaskListService { constructor(private http: Http) {} + getTaskListFilters() { + let url = 'http://localhost:9999/activiti-app/app/rest/filters/tasks'; + let headers = new Headers({ + 'Content-Type': 'application/json', + 'Cache-Control': 'no-cache' + }); + let options = new RequestOptions({ headers: headers }); + + return this.http + .get(url, options) + .map((res: Response) => res.json()) + .catch(this.handleError); + } + + createMyTaskFilter() { + let data = JSON.stringify({ + 'name': 'My Tasks', + 'index': 1, + 'icon': 'glyphicon-inbox', + 'filter': { + 'name': '', + 'sort': 'created-desc', + 'state': 'open', + 'assignment': 'assignee' + }, + 'appId': null + }); + return this.callApiCreateFilter(data); + } + /** * Retrive all the tasks created in activiti * @returns {any} */ - getTasks(): Observable { - // emulate filter value + getTasks(assignment: string = 'assignee'): Observable { + let data = JSON.stringify({ + 'page': 0, + 'filterId': 1, + 'filter': { + 'name': '', + 'sort': 'created-desc', + 'state': 'open', + 'assignment': assignment + }, + 'appDefinitionId': null + }); + return this.callApiFilterTasks(data); + } + + getInvolvedTasks(): Observable { let data = JSON.stringify({ 'page': 0, 'filterId': 3, 'filter': { - 'sort': 'created-desc', 'name': '', + 'sort': 'created-desc', 'state': 'open', 'assignment': 'involved' }, 'appDefinitionId': null }); + return this.callApiFilterTasks(data); + } + + private callApiCreateFilter(data: Object): Observable { + + let url = 'http://localhost:9999/activiti-app/app/rest/filters/tasks'; + let headers = new Headers({ + 'Content-Type': 'application/json', + 'Cache-Control': 'no-cache' + }); + let options = new RequestOptions({ headers: headers }); + + return this.http + .post(url, data, options) + .map((res: Response) => res.json()) + .catch(this.handleError); + } + + private callApiFilterTasks(data: Object): Observable { let url = 'http://localhost:9999/activiti-app/app/rest/filter/tasks'; let headers = new Headers({