From 94f11a1aaedcdf7475b4e95ef9004b997778c44f Mon Sep 17 00:00:00 2001 From: Will Abson Date: Wed, 4 Jan 2017 19:49:24 +0000 Subject: [PATCH 1/3] Set default sorting of processes based on started date Refs #1307 --- .../app/components/activiti/activiti-demo.component.ts | 1 + 1 file changed, 1 insertion(+) 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 98125b3730..b2fec92f42 100644 --- a/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts +++ b/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts @@ -122,6 +122,7 @@ export class ActivitiDemoComponent implements AfterViewInit { {type: 'text', key: 'started', title: 'Started', cssClass: 'hidden', sortable: true} ] ); + this.dataProcesses.setSorting(new DataSorting('started', 'desc')); // Uncomment this line to replace all 'text' field editors with custom component // formRenderingService.setComponentTypeResolver('text', () => CustomEditorComponent, true); From 099c32c6672c30d5b7ce57bc85244c29b52dfdda Mon Sep 17 00:00:00 2001 From: Will Abson Date: Thu, 5 Jan 2017 09:28:11 +0000 Subject: [PATCH 2/3] Use correct process-related typings for processlist filters Refs #1307 --- .../src/components/activiti-processlist.component.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts index d28f74b386..6235124060 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts @@ -18,7 +18,7 @@ import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core'; import { AlfrescoTranslationService } from 'ng2-alfresco-core'; import { ObjectDataTableAdapter, DataTableAdapter, DataRowEvent, ObjectDataRow } from 'ng2-alfresco-datatable'; -import { TaskQueryRequestRepresentationModel } from 'ng2-activiti-tasklist'; +import { ProcessFilterRequestRepresentation } from '../models/process-instance-filter.model'; import { ProcessInstance } from '../models/process-instance.model'; import { ActivitiProcessService } from '../services/activiti-process.service'; @@ -46,7 +46,7 @@ export class ActivitiProcessInstanceListComponent implements OnInit, OnChanges { @Input() name: string; - requestNode: TaskQueryRequestRepresentationModel; + requestNode: ProcessFilterRequestRepresentation; @Input() data: DataTableAdapter; @@ -130,7 +130,7 @@ export class ActivitiProcessInstanceListComponent implements OnInit, OnChanges { ); } - private load(requestNode: TaskQueryRequestRepresentationModel) { + private load(requestNode: ProcessFilterRequestRepresentation) { this.processService.getProcessInstances(requestNode) .subscribe( (response) => { @@ -226,10 +226,9 @@ export class ActivitiProcessInstanceListComponent implements OnInit, OnChanges { let requestNode = { appDefinitionId: this.appId, processDefinitionKey: this.processDefinitionKey, - text: this.name, state: this.state, sort: this.sort }; - return new TaskQueryRequestRepresentationModel(requestNode); + return new ProcessFilterRequestRepresentation(requestNode); } } From 086c789d4d757a83caa42d9a48765aa481ec6cab Mon Sep 17 00:00:00 2001 From: Will Abson Date: Thu, 5 Jan 2017 12:04:03 +0000 Subject: [PATCH 3/3] Fix sorting of processlist to match that specified by filter Refs #1307 --- .../activiti-processlist.component.spec.ts | 19 +++++++++++++++++-- .../activiti-processlist.component.ts | 18 +++++++++++++++++- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.spec.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.spec.ts index 73582b1454..ca90dba508 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.spec.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.spec.ts @@ -21,7 +21,7 @@ import { Observable } from 'rxjs/Rx'; import { ActivitiProcessInstanceListComponent } from './activiti-processlist.component'; import { AlfrescoTranslationService, CoreModule } from 'ng2-alfresco-core'; -import { DataTableModule, ObjectDataRow, DataRowEvent, ObjectDataTableAdapter } from 'ng2-alfresco-datatable'; +import { DataTableModule, ObjectDataRow, DataRowEvent, ObjectDataTableAdapter, DataSorting } from 'ng2-alfresco-datatable'; import { TranslationMock } from './../assets/translation.service.mock'; import { ProcessInstance } from '../models/process-instance.model'; @@ -275,7 +275,7 @@ describe('ActivitiProcessInstanceListComponent', () => { }); it('should reload the list when the sort parameter changes', (done) => { - const sort = 'desc'; + const sort = 'created-desc'; let change = new SimpleChange(null, sort); component.onSuccess.subscribe((res) => { @@ -290,6 +290,21 @@ describe('ActivitiProcessInstanceListComponent', () => { component.ngOnChanges({'sort': change}); }); + it('should sort the list when the sort parameter changes', (done) => { + const sort = 'created-asc'; + let change = new SimpleChange(null, sort); + let sortSpy = spyOn(component.data, 'setSorting'); + + component.onSuccess.subscribe((res) => { + expect(res).toBeDefined(); + expect(sortSpy).toHaveBeenCalledWith(new DataSorting('started', 'asc')); + done(); + }); + + component.sort = sort; + component.ngOnChanges({'sort': change}); + }); + it('should reload the process list when the name parameter changes', (done) => { const name = 'FakeTaskName'; let change = new SimpleChange(null, name); diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts index 6235124060..c7d83635bb 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts @@ -17,7 +17,7 @@ import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core'; import { AlfrescoTranslationService } from 'ng2-alfresco-core'; -import { ObjectDataTableAdapter, DataTableAdapter, DataRowEvent, ObjectDataRow } from 'ng2-alfresco-datatable'; +import { ObjectDataTableAdapter, DataTableAdapter, DataRowEvent, ObjectDataRow, DataSorting } from 'ng2-alfresco-datatable'; import { ProcessFilterRequestRepresentation } from '../models/process-instance-filter.model'; import { ProcessInstance } from '../models/process-instance.model'; @@ -168,9 +168,25 @@ export class ActivitiProcessInstanceListComponent implements OnInit, OnChanges { */ private renderInstances(instances: any[]) { instances = this.optimizeNames(instances); + this.setDatatableSorting(); this.data.setRows(instances); } + /** + * Sort the datatable rows based on current value of 'sort' property + */ + private setDatatableSorting() { + if (!this.sort) { + return; + } + let sortingParams: string[] = this.sort.split('-'); + if (sortingParams.length === 2) { + let sortColumn = sortingParams[0] === 'created' ? 'started' : sortingParams[0]; + let sortOrder = sortingParams[1]; + this.data.setSorting(new DataSorting(sortColumn, sortOrder)); + } + } + /** * Select the first instance of a list if present */