Merge pull request #1396 from Alfresco/dev-wabson-1307

Fix sorting of processlist list items
This commit is contained in:
Mario Romano
2017-01-06 09:57:08 +00:00
committed by GitHub
3 changed files with 39 additions and 8 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -17,8 +17,8 @@
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 { ObjectDataTableAdapter, DataTableAdapter, DataRowEvent, ObjectDataRow, DataSorting } from 'ng2-alfresco-datatable';
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) => {
@@ -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
*/
@@ -226,10 +242,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);
}
}