Merge branch 'development' into dev-denys-1152

This commit is contained in:
Denys Vuika
2017-01-06 10:03:40 +00:00
committed by GitHub
6 changed files with 72 additions and 11 deletions

View File

@@ -21,7 +21,7 @@ import { Observable } from 'rxjs/Rx';
import { ActivitiProcessInstanceListComponent } from './activiti-processlist.component';
import { AlfrescoTranslateService, 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,9 +17,9 @@
import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';
import { AlfrescoTranslateService } from 'ng2-alfresco-core';
import { ObjectDataTableAdapter, DataTableAdapter, DataRowEvent, ObjectDataRow } from 'ng2-alfresco-datatable';
import { ObjectDataTableAdapter, DataTableAdapter, DataRowEvent, ObjectDataRow, DataSorting } 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) => {
@@ -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);
}
}

View File

@@ -329,6 +329,30 @@ The component shows all the available filters.
No options
## Basic usage example Activiti Checklist
The component shows the checklist task functionality.
```html
<activiti-checklist></activiti-checklist>
```
#### Options
| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `taskId` | {string} | required | The id of the parent task which sub tasks are attached on. |
| `readOnlyForm` | {boolean} | optional | Toggle readonly state of the form. Enforces all form widgets render readonly if enabled. |
| `assignee` | {string} | required | The assignee id where the subtasks are assigned to. |
## Basic usage example Activiti Checklist
The component shows all the available filters.
```html
<activiti-checklist [readOnly]="false" [taskId]="taskId" [assignee]="taskAssignee.id" #activitichecklist></activiti-checklist>
```
## Build from sources
Alternatively you can build component from sources with the following commands:

View File

@@ -38,6 +38,9 @@ export class ActivitiChecklist implements OnInit, OnChanges {
@Input()
readOnly: boolean = false;
@Input()
assignee: string;
@ViewChild('dialog')
dialog: any;
@@ -105,7 +108,11 @@ export class ActivitiChecklist implements OnInit, OnChanges {
}
public add() {
let newTask = new TaskDetailsModel({name: this.taskName, parentTaskId: this.taskId, assignee: {id: '1'}});
let newTask = new TaskDetailsModel({
name: this.taskName,
parentTaskId: this.taskId,
assignee: { id: this.assignee }
});
this.activitiTaskList.addTask(newTask).subscribe(
(res: TaskDetailsModel) => {
this.checklist.push(res);
@@ -114,7 +121,6 @@ export class ActivitiChecklist implements OnInit, OnChanges {
this.logService.error(err);
}
);
this.cancel();
}

View File

@@ -23,7 +23,7 @@
#activiticomments></activiti-comments>
</div>
<div class="mdl-cell mdl-cell--4-col">
<activiti-checklist [readOnly]="readOnlyForm" [taskId]="taskDetails.id"
<activiti-checklist [readOnly]="readOnlyForm" [taskId]="taskDetails.id" [assignee]="taskDetails?.assignee?.id"
#activitichecklist></activiti-checklist>
</div>
</div>