# Activiti Task List Component for Angular 2

travis
    Status travis
    Status Coverage Status npm downloads license alfresco component angular 2 typescript node version

Displays lists of process instances both active and completed, using any defined process filter, and render details of any chosen instance. ## Prerequisites Before you start using this development framework, make sure you have installed all required software and done all the necessary configuration [prerequisites](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md). ## Install Follow the 3 steps below: 1. Npm ```sh npm install ng2-activiti-tasklist --save ``` 2. Html Include these dependencies in your index.html page: ```html ``` 3. SystemJs Add the following components to your systemjs.config.js file: - ng2-translate - alfresco-js-api - ng2-alfresco-core - ng2-activiti-form - ng2-alfresco-datatable - ng2-activiti-tasklist Please refer to the following example file: [systemjs.config.js](demo/systemjs .config.js) . ## Basic usage example Activiti Task List The component shows the list of all the tasks filter by the FilterParamRepresentationModel passed in input. ```html ``` Usage example of this component : **main.ts** ```ts import { NgModule, Component } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { FilterRepresentationModel, ActivitiTaskListModule } from 'ng2-activiti-tasklist'; import { CoreModule } from 'ng2-alfresco-core'; import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; import { ObjectDataTableAdapter, DataSorting } from 'ng2-alfresco-datatable'; @Component({ selector: 'alfresco-app-demo', template: `` }) class MyDemoApp { dataTasks: ObjectDataTableAdapter; filterRepresentationModel: FilterRepresentationModel; constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { settingsService.bpmHost = 'http://localhost:9999'; this.authService.login('admin', 'admin').subscribe( ticket => { console.log(ticket); }, error => { console.log(error); }); this.dataTasks = new ObjectDataTableAdapter([], [ {type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true}, {type: 'text', key: 'started', title: 'Started', cssClass: 'hidden', sortable: true} ] ); this.dataTasks.setSorting(new DataSorting('started', 'desc')); this.filterRepresentationModel = new FilterRepresentationModel({ appId: '3003', filter: { processDefinitionKey: null, assignment: 'involved', name: null, state: 'running', sort: 'created-desc' } }); } } @NgModule({ imports: [ BrowserModule, CoreModule.forRoot(), ActivitiTaskListModule.forRoot() ], declarations: [MyDemoApp], bootstrap: [MyDemoApp] }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule); ``` #### Events | Name | Description | | --- | --- | | `onSuccess` | The event is emitted when the task list is loaded | | `rowClick` | The event is emitted when the task in the list is clicked | #### Options | Name | Description | | --- | --- | | `taskFilter` | { FilterParamRepresentationModel } required) FilterParamRepresentationModel object that is passed to the task list API to filter the task list. | Example: ```json { appId: '3003', filter:{ processDefinitionKey: null, name:null, assignment: 'involved', state:'running', sort: 'created-desc' } } ``` | Name | Description | | --- | --- | | `schemaColumn` | { any[] } optional) JSON object that represent the number and the type of the columns that you want show | Example: ```json [ {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} ] ``` ## Basic usage example Activiti Task Details The component shows the details of the task id passed in input ```html ``` #### Events | Name | Description | | --- | --- | | `formLoaded` | Invoked when form is loaded or reloaded. | | `formSaved` | Invoked when form is submitted with `Save` or custom outcomes. | | `formCompleted` | Invoked when form is submitted with `Complete` outcome. | | `executeOutcome` | Invoked when any outcome is executed, default behaviour can be prevented via `event.preventDefault()` | | `onError` | Invoked at any error | #### Options | Name | Type | Required | Description | | --- | --- | --- | --- | | `taskId` | {string} | required | The id of the task details that we are asking for. | | `showNextTask` | {boolean} | optional | Automatically render the next one, when the task is completed. | | `showFormTitle` | {boolean} | optional | Toggle rendering of the form title. | | `readOnlyForm` | {boolean} | optional | Toggle readonly state of the form. Enforces all form widgets render readonly if enabled. | | `showFormRefreshButton` | {boolean} | optional | Toggle rendering of the `Refresh` button. | | `showFormSaveButton` | {boolean} | optional | Toggle rendering of the `Save` outcome button. | | `showFormCompleteButton` | {boolean} | optional | Toggle rendering of the Form `Complete` outcome button | ### Custom 'empty Activiti Task Details' template By default the Activiti Task Details provides the following message for the empty task details: 'No Tasks' This can be changed by adding the following custom html template: ```html ``` ## Basic usage example Activiti Filter The component shows all the available filters. ```html ``` #### Events | Name | Description | | --- | --- | | `filterClick` | The event is emitted when the filter in the list is clicked | #### Options No options ## Build from sources Alternatively you can build component from sources with the following commands: ```sh npm install npm run build ``` ### Build the files and keep watching for changes ```sh $ npm run build:w ``` ## Running unit tests ```sh npm test ``` ### Running unit tests in browser ```sh npm test-browser ``` This task rebuilds all the code, runs tslint, license checks and other quality check tools before performing unit testing. ### Code coverage ```sh npm run coverage ``` ## Demo If you want have a demo of how the component works, please check the demo folder : ```sh cd demo npm install npm start ``` ## NPM scripts | Command | Description | | --- | --- | | npm run build | Build component | | npm run build:w | Build component and keep watching the changes | | npm run test | Run unit tests in the console | | npm run test-browser | Run unit tests in the browser | npm run coverage | Run unit tests and display code coverage report | ## License [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE)