diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.html b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.html index 4f932db173..9dbfa195b6 100644 --- a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.html +++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.html @@ -2,7 +2,7 @@
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 46f8c24000..bea68053ea 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 @@ -26,7 +26,7 @@ import { ActivitiTaskList } from './activiti-tasklist.component'; import { ActivitiTaskListService } from '../services/activiti-tasklist.service'; import { UserTaskFilterRepresentationModel } from '../models/filter.model'; import { Observable } from 'rxjs/Rx'; -import { ObjectDataRow, DataRowEvent } from 'ng2-alfresco-datatable'; +import { ObjectDataRow, DataRowEvent, ObjectDataTableAdapter } from 'ng2-alfresco-datatable'; describe('ActivitiTaskList', () => { @@ -79,23 +79,26 @@ describe('ActivitiTaskList', () => { it('should use the default schemaColumn as default', () => { taskList.ngOnInit(); - expect(taskList.schemaColumn).toBeDefined(); - expect(taskList.schemaColumn.length).toEqual(4); + expect(taskList.data.getColumns()).toBeDefined(); + expect(taskList.data.getColumns().length).toEqual(4); }); it('should use the schemaColumn passed in input', () => { - taskList.schemaColumn = [ - {type: 'text', key: 'fake-id', title: 'Name'} - ]; + taskList.data = new ObjectDataTableAdapter( + [], + [ + {type: 'text', key: 'fake-id', title: 'Name'} + ] + ); taskList.ngOnInit(); - expect(taskList.schemaColumn).toBeDefined(); - expect(taskList.schemaColumn.length).toEqual(1); + expect(taskList.data.getColumns()).toBeDefined(); + expect(taskList.data.getColumns().length).toEqual(1); }); it('should return an empty task list when the taskFilter is not passed', () => { taskList.ngOnInit(); - expect(taskList.tasks).toBeUndefined(); + expect(taskList.data).toBeDefined(); expect(taskList.isTaskListEmpty()).toBeTruthy(); }); @@ -106,11 +109,11 @@ describe('ActivitiTaskList', () => { taskList.onSuccess.subscribe( (res) => { expect(res).toBeDefined(); - expect(taskList.tasks).toBeDefined(); + expect(taskList.data).toBeDefined(); expect(taskList.isTaskListEmpty()).not.toBeTruthy(); - 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'); + expect(taskList.data.getRows().length).toEqual(2); + expect(taskList.data.getRows()[0].getValue('name')).toEqual('fake-long-name-fake-long-name-fake-long-name-fak50...'); + expect(taskList.data.getRows()[1].getValue('name')).toEqual('Nameless task'); 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 73126c33e7..ae8da9b896 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 @@ -17,7 +17,7 @@ import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core'; import { AlfrescoTranslationService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; -import { ALFRESCO_DATATABLE_DIRECTIVES, ObjectDataTableAdapter, DataTableAdapter, DataRowEvent } from 'ng2-alfresco-datatable'; +import { ALFRESCO_DATATABLE_DIRECTIVES, ObjectDataTableAdapter, DataTableAdapter, DataRowEvent, ObjectDataRow } from 'ng2-alfresco-datatable'; import { ActivitiTaskListService } from './../services/activiti-tasklist.service'; import { UserTaskFilterRepresentationModel, TaskQueryRequestRepresentationModel } from '../models/filter.model'; @@ -38,12 +38,7 @@ export class ActivitiTaskList implements OnInit, OnChanges { taskFilter: UserTaskFilterRepresentationModel; @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} - ]; + data: DataTableAdapter; @Output() rowClick: EventEmitter = new EventEmitter(); @@ -54,12 +49,15 @@ export class ActivitiTaskList implements OnInit, OnChanges { @Output() onError: EventEmitter = new EventEmitter(); - data: DataTableAdapter; - - tasks: ObjectDataTableAdapter; - currentTaskId: string; + private defaultSchemaColumn: 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} + ]; + /** * Constructor * @param auth @@ -76,10 +74,12 @@ export class ActivitiTaskList implements OnInit, OnChanges { } ngOnInit() { - this.data = new ObjectDataTableAdapter( - [], - this.schemaColumn - ); + if (!this.data) { + this.data = new ObjectDataTableAdapter( + [], + this.defaultSchemaColumn + ); + } if (this.taskFilter) { let requestNode = this.convertTaskUserToTaskQuery(this.taskFilter); @@ -102,7 +102,8 @@ export class ActivitiTaskList implements OnInit, OnChanges { requestNode.size = res.total; this.activiti.getTasks(requestNode).subscribe( (response) => { - this.renderTasks(response.data); + let taskRow = this.createDataRow(response.data); + this.renderTasks(taskRow); this.selectFirstTask(); this.onSuccess.emit(response); }, (error) => { @@ -115,13 +116,31 @@ export class ActivitiTaskList implements OnInit, OnChanges { }); } + /** + * Create an array of ObjectDataRow + * @param tasks + * @returns {ObjectDataRow[]} + */ + private createDataRow(tasks: any[]): ObjectDataRow[] { + let taskRows: ObjectDataRow[] = []; + tasks.forEach((row) => { + taskRows.push(new ObjectDataRow({ + id: row.id, + name: row.name, + created: row.created + })); + }); + return taskRows; + } + + /** * The method call the adapter data table component for render the task list * @param tasks */ private renderTasks(tasks: any[]) { tasks = this.optimizeTaskName(tasks); - this.tasks = new ObjectDataTableAdapter(tasks, this.data.getColumns()); + this.data.setRows(tasks); } /** @@ -129,7 +148,7 @@ export class ActivitiTaskList implements OnInit, OnChanges { */ private selectFirstTask() { if (!this.isTaskListEmpty()) { - this.currentTaskId = this.tasks.getRows()[0].getValue('id'); + this.currentTaskId = this.data.getRows()[0].getValue('id'); } else { this.currentTaskId = null; } @@ -148,7 +167,7 @@ export class ActivitiTaskList implements OnInit, OnChanges { * @returns {ObjectDataTableAdapter|boolean} */ isTaskListEmpty(): boolean { - return this.tasks === undefined || (this.tasks && this.tasks.getRows() && this.tasks.getRows().length === 0); + return this.data === undefined || (this.data && this.data.getRows() && this.data.getRows().length === 0); } /** @@ -168,9 +187,9 @@ export class ActivitiTaskList implements OnInit, OnChanges { */ private optimizeTaskName(tasks: any[]) { tasks = tasks.map(t => { - t.name = t.name || 'Nameless task'; - if (t.name.length > 50) { - t.name = t.name.substring(0, 50) + '...'; + t.obj.name = t.obj.name || 'Nameless task'; + if (t.obj.name.length > 50) { + t.obj.name = t.obj.name.substring(0, 50) + '...'; } return t; }); diff --git a/ng2-components/ng2-alfresco-datatable/src/components/datatable/datatable.component.css b/ng2-components/ng2-alfresco-datatable/src/components/datatable/datatable.component.css index 5fce123381..edc97ce169 100644 --- a/ng2-components/ng2-alfresco-datatable/src/components/datatable/datatable.component.css +++ b/ng2-components/ng2-alfresco-datatable/src/components/datatable/datatable.component.css @@ -87,6 +87,10 @@ border: 0; } +.hidden { + display: none; +} + /* small desktop */ @media all and (max-width: 1200px) {}