-
{{ 'TASK_FILTERS.MESSAGES.NONE' | translate }}
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 754196fdf5..e487dc46d8 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
@@ -32,6 +32,7 @@ describe('ActivitiTaskList', () => {
let taskList: ActivitiTaskList;
+ /*
let fakeGlobalFilter = {
size: 2, total: 2, start: 0,
data: [
@@ -45,6 +46,7 @@ describe('ActivitiTaskList', () => {
}
]
};
+ */
let fakeGlobalTask = {
size: 1, total: 12, start: 0,
@@ -64,27 +66,49 @@ describe('ActivitiTaskList', () => {
]
};
+ /*
+
let fakeErrorTaskList = {
error: 'wrong request'
};
-
- let fakeGlobalFilterPromise = new Promise(function (resolve, reject) {
- resolve(fakeGlobalFilter);
- });
+ */
let fakeGlobalTaskPromise = new Promise(function (resolve, reject) {
resolve(fakeGlobalTask);
});
+ /*
+
+ let fakeGlobalFilterPromise = new Promise(function (resolve, reject) {
+ resolve(fakeGlobalFilter);
+ });
+
let fakeErrorTaskPromise = new Promise(function (resolve, reject) {
reject(fakeErrorTaskList);
- });
+ });*/
beforeEach(() => {
let activitiSerevice = new ActivitiTaskListService(null, null);
taskList = new ActivitiTaskList(null, null, activitiSerevice);
});
+ it('should return the task list when the taskFilter is passed', (done) => {
+ spyOn(taskList.activiti, 'getTasks').and.returnValue(Observable.fromPromise(fakeGlobalTaskPromise));
+ // spyOn(taskList.activiti, 'getTaskListFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise));
+ taskList.taskFilter = new FilterModel('name', false, 'icon', '', 'open', 'fake-assignee');
+
+ taskList.onSuccess.subscribe( () => {
+ expect(taskList.tasks).toBeDefined();
+ expect(taskList.tasks.getRows().length).toEqual(2);
+ expect(taskList.tasks.getRows()[0].getValue('name')).toEqual('fake-long-name-fake-long-name-fake-long-name-fak50...');
+ expect(taskList.tasks.getRows()[1].getValue('name')).toEqual('Nameless task');
+ done();
+ });
+
+ taskList.ngOnInit();
+ });
+
+ /*
it('should return the default filters', (done) => {
spyOn(taskList.activiti, 'getTaskListFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise));
taskList.ngOnInit();
@@ -156,5 +180,6 @@ describe('ActivitiTaskList', () => {
done();
});
});
+ */
});
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 73f243e8ed..e7a84dd43f 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
@@ -20,8 +20,6 @@ import { AlfrescoTranslationService, AlfrescoAuthenticationService, AlfrescoPipe
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 { Observer } from 'rxjs/Observer';
-import { Observable } from 'rxjs/Observable';
declare let componentHandler: any;
declare let __moduleName: string;
@@ -38,20 +36,28 @@ declare let __moduleName: string;
export class ActivitiTaskList implements OnInit {
@Input()
- data: DataTableAdapter;
+ taskFilter: FilterModel;
+
+ @Input()
+ schemaColumn: any[] = [
+ {type: 'text', key: 'id', title: 'Id'},
+ {type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true},
+ {type: 'text', key: 'formKey', title: 'Form Key', sortable: true},
+ {type: 'text', key: 'created', title: 'Created', sortable: true}
+ ];
@Output()
rowClick: EventEmitter
= new EventEmitter();
- private filterObserver: Observer;
+ @Output()
+ onSuccess: EventEmitter = new EventEmitter();
- filter$: Observable;
+ data: DataTableAdapter;
tasks: ObjectDataTableAdapter;
- currentFilter: FilterModel;
+
currentTaskId: string;
- filtersList: Observable;
/**
* Constructor
* @param auth
@@ -60,7 +66,6 @@ export class ActivitiTaskList implements OnInit {
constructor(private auth: AlfrescoAuthenticationService,
private translate: AlfrescoTranslationService,
public activiti: ActivitiTaskListService) {
- this.filter$ = new Observable(observer => this.filterObserver = observer).share();
if (translate) {
translate.addTranslationFolder('node_modules/ng2-activiti-tasklist');
@@ -68,40 +73,47 @@ export class ActivitiTaskList implements OnInit {
}
ngOnInit() {
- this.filtersList = this.activiti.getTaskListFilters().map(res => (res.data));
+ this.data = new ObjectDataTableAdapter(
+ [],
+ this.schemaColumn
+ );
- this.filter$.subscribe((filter: FilterModel) => {
- this.activiti.getTasks(filter).subscribe(
- (res) => {
- this.loadTasks(res.data);
- }, (err) => {
- console.error(err);
- });
- });
+ if (this.taskFilter) {
+ this.load(this.taskFilter);
+ }
+ }
+
+ public load(filter: FilterModel) {
+ this.activiti.getTasks(filter).subscribe(
+ (res) => {
+ this.renderTasks(res.data);
+ this.onSuccess.emit('Task List loaded');
+ }, (err) => {
+ console.error(err);
+ });
}
/**
* The method call the adapter data table component for render the task list
* @param tasks
*/
- private loadTasks(tasks: any[]) {
+ private renderTasks(tasks: any[]) {
tasks = this.optimizeTaskName(tasks);
this.tasks = new ObjectDataTableAdapter(tasks, this.data.getColumns());
}
/**
- * Pass the selected filter as next
- * @param filter
+ * Check if the tasks list is empty
+ * @returns {ObjectDataTableAdapter|boolean}
*/
- public selectFilter(filter: FilterModel) {
- this.currentFilter = filter;
- this.filterObserver.next(filter);
- }
-
isTaskListEmpty(): boolean {
return this.tasks && this.tasks.getRows().length === 0;
}
+ /**
+ * Emit the event rowClick passing the current task id when the row is clicked
+ * @param event
+ */
onRowClick(event: DataRowEvent) {
let item = event;
this.currentTaskId = item.value.getValue('id');
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 5aa422c1a3..c7c4053d4a 100644
--- a/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts
+++ b/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts
@@ -29,11 +29,11 @@ export class FilterModel {
icon: string;
filter: FilterParamsModel;
- constructor(name: string, recent: boolean, icon: string, state: string, assignment: string) {
+ constructor(name: string, recent: boolean, icon: string, query: string, state: string, assignment: string) {
this.name = name;
this.recent = recent;
this.icon = icon;
- this.filter = new FilterParamsModel(name, state, assignment);
+ this.filter = new FilterParamsModel(query, state, assignment);
}
}
@@ -49,8 +49,8 @@ export class FilterParamsModel {
state: string;
assignment: string;
- constructor(name: string, state: string, assignment: string) {
- this.name = name;
+ constructor(query: string, state: string, assignment: string) {
+ this.name = query;
this.state = state;
this.assignment = assignment;
}
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 159fbf8b98..0a52b56b39 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
@@ -23,7 +23,7 @@ import { HTTP_PROVIDERS } from '@angular/http';
declare let AlfrescoApi: any;
declare let jasmine: any;
-describe('AlfrescoUploadService', () => {
+describe('ActivitiTaskListService', () => {
let service, options: any;
options = {
@@ -72,11 +72,9 @@ describe('AlfrescoUploadService', () => {
let filters = service.getTaskListFilters();
filters.subscribe(res => {
expect(res).toBeDefined();
- expect(res.size).toEqual(2);
- expect(res.total).toEqual(2);
- expect(res.data.length).toEqual(2);
- expect(res.data[0].name).toEqual('FakeInvolvedTasks');
- expect(res.data[1].name).toEqual('FakeMyTasks');
+ expect(res.length).toEqual(2);
+ expect(res[0].name).toEqual('FakeInvolvedTasks');
+ expect(res[1].name).toEqual('FakeMyTasks');
done();
});
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 eb9ba7ea3d..96f5f08eda 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
@@ -37,8 +37,15 @@ export class ActivitiTaskListService {
*/
getTaskListFilters(): Observable {
return Observable.fromPromise(this.callApiTaskFilters())
- .map((res: Response) => {
- return res.json();
+ .map(res => res.json())
+ .map((response: any) => {
+ let filters: FilterModel[] = [];
+ response.data.forEach((filter) => {
+ let filterModel = new FilterModel(filter.name, filter.recent, filter.icon,
+ filter.filter.name, filter.filter.state, filter.filter.assignment);
+ filters.push(filterModel);
+ });
+ return filters;
})
.catch(this.handleError);
}
@@ -52,7 +59,7 @@ export class ActivitiTaskListService {
// data.filterId = filter.id;
// data.filter = filter.filter;
data = filter.filter;
- data.text = filter.filter.name;
+ // data.text = filter.filter.name;
data = JSON.stringify(data);
@@ -87,17 +94,20 @@ export class ActivitiTaskListService {
.catch(this.handleError);
}
- addTaskComment(id: string, message: string): Observable {
+ addTaskComment(id: string, message: string): Observable {
return Observable.fromPromise(this.callApiAddTaskComment(id, message))
.map(res => res.json())
- .map((response: any) => {
- let comments: Comment[] = [];
- response.data.forEach((comment) => {
- let user = new User(
- comment.createdBy.id, comment.createdBy.email, comment.createdBy.firstName, comment.createdBy.lastName);
- comments.push(new Comment(comment.id, comment.message, comment.created, user));
- });
- return comments;
+ .map((response: Comment) => {
+ return new Comment(response.id, response.message, response.created, response.createdBy);
+ })
+ .catch(this.handleError);
+ }
+
+ addTask(task: TaskDetailsModel): Observable {
+ return Observable.fromPromise(this.callApiAddTask(task))
+ .map(res => res.json())
+ .map((response: TaskDetailsModel) => {
+ return new TaskDetailsModel(response);
})
.catch(this.handleError);
}
@@ -185,6 +195,19 @@ export class ActivitiTaskListService {
.post(url, body, options).toPromise();
}
+ private callApiAddTask(task: TaskDetailsModel) {
+ let url = `${this.basePath}/api/enterprise/tasks/${task.parentTaskId}/checklist`;
+ let headers = new Headers({
+ 'Content-Type': 'application/json',
+ 'Cache-Control': 'no-cache'
+ });
+ let body = JSON.stringify(task);
+ let options = new RequestOptions({headers: headers});
+
+ return this.http
+ .post(url, body, options).toPromise();
+ }
+
private callApiTaskChecklist(id: string) {
let url = `${this.basePath}/api/enterprise/tasks/${id}/checklist`;
let headers = new Headers({