From baa0d6da302bc4a19e54a5b70a07ab313b6a1596 Mon Sep 17 00:00:00 2001 From: dhrn <14145706+dhrn@users.noreply.github.com> Date: Fri, 18 Oct 2019 04:31:52 +0530 Subject: [PATCH] [ADF-4947] Array type supported in data table columns (#5165) * [WIP] [ADF-4947] Array type supported in data table columns * * removed resolver for aria label * * process services feature added * * fixed docs --- .../datatable/datatable.component.html | 7 +- .../datatable/datatable.component.ts | 117 ++++++++++++++++-- docs/README.md | 1 + docs/core/components/datatable.component.md | 68 ++++++++++ .../notification-history.component.md | 2 +- docs/core/models/bpm-user.model.md | 2 +- docs/core/models/ecm-user.model.md | 2 +- docs/core/services/bpm-user.service.md | 2 +- docs/core/services/ecm-user.service.md | 2 +- docs/core/services/identity-group.service.md | 36 +++--- docs/core/services/identity-role.service.md | 2 +- docs/core/services/identity-user.service.md | 68 +++++----- docs/core/services/notification.service.md | 17 +-- .../images/custom-data-table-resolver.png | Bin 0 -> 12451 bytes .../analytics-generator.component.md | 4 +- .../analytics-report-list.component.md | 4 +- .../components/analytics.component.md | 2 +- docs/insights/components/diagram.component.md | 2 +- docs/insights/components/widget.component.md | 2 +- .../components/group-cloud.component.md | 6 +- .../components/people-cloud.component.md | 6 +- .../pipes/group-initial.pipe.md | 2 +- .../components/process-list.component.md | 1 + .../datatable/datatable-cell.component.ts | 6 +- .../datatable/datatable.component.html | 7 +- .../datatable/datatable.component.ts | 7 ++ .../datatable/json-cell.component.ts | 4 +- .../datatable/location-cell.component.ts | 3 +- lib/core/datatable/data/datatable-adapter.ts | 2 +- .../data/object-datatable-adapter.ts | 6 +- .../process/process-instances-list.mock.ts | 14 ++- .../components/process-list.component.html | 1 + .../components/process-list.component.spec.ts | 33 ++++- .../components/process-list.component.ts | 11 +- 34 files changed, 350 insertions(+), 99 deletions(-) create mode 100644 docs/docassets/images/custom-data-table-resolver.png diff --git a/demo-shell/src/app/components/datatable/datatable.component.html b/demo-shell/src/app/components/datatable/datatable.component.html index 39f3fa192b..79a907948d 100644 --- a/demo-shell/src/app/components/datatable/datatable.component.html +++ b/demo-shell/src/app/components/datatable/datatable.component.html @@ -18,6 +18,7 @@ [selectionMode]="selectionMode" [multiselect]="multiselect" [actions]="true" + [resolverFn]="resolver" rowStyleClass="custom-row-style" (showRowActionsMenu)="onShowRowActionsMenu($event)" (executeRowAction)="onExecuteRowAction($event)"> @@ -28,7 +29,11 @@ - + + + + {{value | json }} + --> diff --git a/demo-shell/src/app/components/datatable/datatable.component.ts b/demo-shell/src/app/components/datatable/datatable.component.ts index 5caab6e513..751287cd03 100644 --- a/demo-shell/src/app/components/datatable/datatable.component.ts +++ b/demo-shell/src/app/components/datatable/datatable.component.ts @@ -16,8 +16,16 @@ */ import { Component, Input } from '@angular/core'; -import { DataColumn, DataRow } from '@alfresco/adf-core'; -import { DataCellEvent, DataRowActionEvent, DataSorting, ObjectDataColumn, ObjectDataRow, ObjectDataTableAdapter } from '@alfresco/adf-core'; +import { + DataCellEvent, + DataColumn, + DataRow, + DataRowActionEvent, + DataSorting, + ObjectDataColumn, + ObjectDataRow, + ObjectDataTableAdapter +} from '@alfresco/adf-core'; export class FilteredDataAdapter extends ObjectDataTableAdapter { @@ -75,6 +83,20 @@ export class DataTableComponent { this.reset(); } + resolver(row: DataRow, col: DataColumn): any { + const value = row.getValue(col.key); + if (col.key === 'users') { + return (value || []).map(user => `${user.firstName} ${user.lastName}`).toString(); + } + + if (col.key === 'status') { + const users = row.getValue('users'); + return (value || []).map((status, index) => ({ 'name': `${users[index].firstName} ${users[index].lastName}`, status })); + } + + return value; + } + /* spellchecker: disable */ reset() { this.data = new FilteredDataAdapter( @@ -90,7 +112,21 @@ export class DataTableComponent { createdOn: new Date(2016, 6, 2, 15, 8, 1), createdBy: this._createdBy, icon: 'material-icons://folder_open', - json: null + json: null, + users: [ + { + firstName: 'Super', + lastName: 'Man' + }, + { + firstName: 'Iron', + lastName: 'Man' + } + ], + status: [ + 'I am here to save the world.. By world means AMERICA', + 'That nobody is John Wick…' + ] }, { id: 2, @@ -98,7 +134,21 @@ export class DataTableComponent { createdOn: new Date(2016, 6, 2, 15, 8, 2), createdBy: this._createdBy, icon: 'material-icons://accessibility', - json: null + json: null, + users: [ + { + firstName: 'Mister', + lastName: 'Bean' + }, + { + firstName: 'Doctor', + lastName: 'Strange' + } + ], + status: [ + 'I am here to save the world.. By world means AMERICA', + 'That nobody is John Wick…' + ] }, { id: 3, @@ -106,7 +156,21 @@ export class DataTableComponent { createdOn: new Date(2016, 6, 2, 15, 8, 3), createdBy: this._createdBy, icon: 'material-icons://alarm', - json: null + json: null, + users: [ + { + firstName: 'Thunder', + lastName: 'Thor' + }, + { + firstName: 'Marvel', + lastName: 'Avenger' + } + ], + status: [ + 'I am here to save the world.. By world means AMERICA', + 'That nobody is John Wick…' + ] }, { id: 4, @@ -120,10 +184,45 @@ export class DataTableComponent { createdOn: new Date(2016, 6, 2, 15, 8, 4), createdBy: { name: 'Felipe', - lastname: 'Melo' + lastName: 'Melo' }, icon: 'material-icons://alarm' - } + }, + users: [ + { + firstName: 'Spider', + lastName: 'Man' + }, + { + firstName: '17', + lastName: 'Again' + } + ], + status: [ + 'I am here to save the world.. By world means AMERICA', + 'That nobody is John Wick…' + ] + }, + { + id: 5, + name: 'I am using custom resolver', + createdOn: new Date(2016, 6, 2, 15, 8, 4), + createdBy: this._createdBy, + icon: 'material-icons://person_outline', + users: [ + { + firstName: 'Captain', + lastName: 'America' + }, + { + firstName: 'John', + lastName: 'Wick' + } + ], + status: [ + 'I am here to save the world.. By world means AMERICA', + 'That nobody is John Wick…' + ] } ], [ @@ -132,7 +231,9 @@ export class DataTableComponent { { type: 'date', key: 'createdOn', title: 'Created On', sortable: true, cssClass: 'adf-ellipsis-cell adf-expand-cell-2' }, { type: 'text', key: 'name', title: 'Name', cssClass: 'adf-ellipsis-cell', sortable: true }, { type: 'text', key: 'createdBy.name', title: 'Created By', sortable: true, cssClass: ''}, - { type: 'json', key: 'json', title: 'Json', cssClass: 'adf-expand-cell-2'} + { type: 'json', key: 'json', title: 'Json', cssClass: 'adf-expand-cell-2'}, + { type: 'text', key: 'users', title: 'Users', cssClass: 'adf-expand-cell-2'}, + { type: 'json', key: 'status', title: 'Status', cssClass: 'adf-expand-cell-2'} ] ); diff --git a/docs/README.md b/docs/README.md index 336d01fb5e..6419436280 100644 --- a/docs/README.md +++ b/docs/README.md @@ -209,6 +209,7 @@ for more information about installing and using the source code. | [Form service](core/services/form.service.md) | Implements Process Services form methods | [Source](../lib/core/form/services/form.service.ts) | | [Highlight Transform service](core/services/highlight-transform.service.md) | Adds HTML to a string to highlight chosen sections. | [Source](../lib/core/services/highlight-transform.service.ts) | | [Identity Group service](core/services/identity-group.service.md) | Performs CRUD operations on identity groups. | [Source](../lib/core/userinfo/services/identity-group.service.ts) | +| [Identity role service](core/services/identity-role.service.md) | Provides APIs for working with the Roles in Identity Services. | [Source](../lib/core/userinfo/services/identity-role.service.ts) | | [Identity user service](core/services/identity-user.service.md) | Gets OAuth2 personal details and roles for users and performs CRUD operations on identity users. | [Source](../lib/core/userinfo/services/identity-user.service.ts) | | [JWT helper service](core/services/jwt-helper.service.md) | Decodes a JSON Web Token (JWT) to a JavaScript object. | [Source](../lib/core/services/jwt-helper.service.ts) | | [Log Service](core/services/log.service.md) | Provides log functionality. | [Source](../lib/core/services/log.service.ts) | diff --git a/docs/core/components/datatable.component.md b/docs/core/components/datatable.component.md index 8def0c4c8b..2919a34eef 100644 --- a/docs/core/components/datatable.component.md +++ b/docs/core/components/datatable.component.md @@ -354,6 +354,7 @@ Learm more about styling your datatable: [Customizing the component's styles](#c | loading | `boolean` | false | Flag that indicates if the datatable is in loading state and needs to show the loading template (see the docs to learn how to configure a loading template). | | multiselect | `boolean` | false | Toggles multiple row selection, which renders checkboxes at the beginning of each row. | | noPermission | `boolean` | false | Flag that indicates if the datatable should show the "no permission" template. | +| resolverFn | `Function` | | Custom resolver function which is used to parse dynamic column objects. see [Resolver Function](#resolver-function)| | rowMenuCacheEnabled | `boolean` | true | Should the items for the row actions menu be cached for reuse after they are loaded the first time? | | rowStyle | `string` | | The inline style to apply to every row. See [NgStyle](https://angular.io/docs/ts/latest/api/common/index/NgStyle-directive.html) docs for more details and usage examples. | | rowStyleClass | `string` | "" | The CSS class to apply to every row. | @@ -754,6 +755,73 @@ Once set up, the sticky header behaves as shown in the image below: ![](../../docassets/images/datatable-sticky-header.png) +## Resolver Function + +If you have a table with complex object, you might want to parse it before to display. you can do this using following steps. + +# what is resolver +Resolver is a pure function which gets executed on each row and columns. + +# purpose +It helps to parse the complex object in the data table. + +# example +Assume we want to merge two properties and show them in a text format + +```json + { + name: 'I am using custom resolver', + users: [ + { + firstName: 'Captain', + lastName: 'America' + }, + { + firstName: 'John', + lastName: 'Wick' + } + ], + status: [ + 'I am here to save the world.. By world means AMERICA', + 'That nobody is John Wick…' + ] + } +``` + + +here is the sample resolver which merge the users property and status and it will show in one column + +```javascript + resolver(row: DataRow, col: DataColumn): any { + const value = row.getValue(col.key); + + // Desired parsing logic + if (col.key === 'status') { + const users = row.getValue('users'); + return (value || []).map((status, index) => `name - ${users[index].firstName} ${users[index].lastName} status: ${status}` ).toString(); + } + + return value; + } +``` + +```html + + + + + + + +``` + + ![](../../docassets/images/custom-data-table-resolver.png) + + + + ## See also - [Data column component](data-column.component.md) diff --git a/docs/core/components/notification-history.component.md b/docs/core/components/notification-history.component.md index f94c0b92be..ed9263396b 100644 --- a/docs/core/components/notification-history.component.md +++ b/docs/core/components/notification-history.component.md @@ -5,7 +5,7 @@ Status: Experimental Last reviewed: 2019-06-05 --- -# [Notification History component](../../../lib/core/notification-history/notification-history.component.ts "Defined in notification-history.component.ts") +# [Notification History component](../../../lib/core/notifications/components/notification-history.component.ts "Defined in notification-history.component.ts") This component is in the current status just an experimental component. The main purpose of the [Notification history component](../../core/components/notification-history.component.md) is list all the notification received in the current session. They will disappear from the list after the refresh. diff --git a/docs/core/models/bpm-user.model.md b/docs/core/models/bpm-user.model.md index d3a0c57839..3b3412fdd6 100644 --- a/docs/core/models/bpm-user.model.md +++ b/docs/core/models/bpm-user.model.md @@ -4,7 +4,7 @@ Added: v2.0.0 Status: Active --- -# [Bpm User model](../../../lib/core/userinfo/models/bpm-user.model.ts "Defined in bpm-user.model.ts") +# [Bpm User model](../../../lib/core/models/bpm-user.model.ts "Defined in bpm-user.model.ts") Contains information about a Process Services user. diff --git a/docs/core/models/ecm-user.model.md b/docs/core/models/ecm-user.model.md index 8d87dbe90a..032b007065 100644 --- a/docs/core/models/ecm-user.model.md +++ b/docs/core/models/ecm-user.model.md @@ -4,7 +4,7 @@ Added: v2.0.0 Status: Active --- -# [Ecm User model](../../../lib/core/userinfo/models/ecm-user.model.ts "Defined in ecm-user.model.ts") +# [Ecm User model](../../../lib/core/models/ecm-user.model.ts "Defined in ecm-user.model.ts") Contains information about a Content Services user. diff --git a/docs/core/services/bpm-user.service.md b/docs/core/services/bpm-user.service.md index c580f4e9cc..3c622dc385 100644 --- a/docs/core/services/bpm-user.service.md +++ b/docs/core/services/bpm-user.service.md @@ -5,7 +5,7 @@ Status: Active Last reviewed: 2018-11-19 --- -# [Bpm User service](../../../lib/core/userinfo/services/bpm-user.service.ts "Defined in bpm-user.service.ts") +# [Bpm User service](../../../lib/core/services/bpm-user.service.ts "Defined in bpm-user.service.ts") Gets information about the current Process Services user. diff --git a/docs/core/services/ecm-user.service.md b/docs/core/services/ecm-user.service.md index ddbb175f81..d579ab010d 100644 --- a/docs/core/services/ecm-user.service.md +++ b/docs/core/services/ecm-user.service.md @@ -5,7 +5,7 @@ Status: Active Last reviewed: 2018-11-19 --- -# [Ecm User service](../../../lib/core/userinfo/services/ecm-user.service.ts "Defined in ecm-user.service.ts") +# [Ecm User service](../../../lib/core/services/ecm-user.service.ts "Defined in ecm-user.service.ts") Gets information about a Content Services user. diff --git a/docs/core/services/identity-group.service.md b/docs/core/services/identity-group.service.md index 2c13202652..63c5007012 100644 --- a/docs/core/services/identity-group.service.md +++ b/docs/core/services/identity-group.service.md @@ -5,7 +5,7 @@ Status: Active Last reviewed: 2019-07-13 --- -# [Identity Group service](../../../lib/core/userinfo/services/identity-group.service.ts "Defined in identity-group.service.ts") +# [Identity Group service](../../../lib/core/services/identity-group.service.ts "Defined in identity-group.service.ts") Performs CRUD operations on identity groups. @@ -29,45 +29,45 @@ Performs CRUD operations on identity groups. - _groupId:_ `string` - Id of the target group - _roleNames:_ `string[]` - Array of role names - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - True if the group has one or more of the roles, false otherwise -- **createGroup**(newGroup: [`IdentityGroupModel`](../../../lib/core/userinfo/models/identity-group.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)``
+- **createGroup**(newGroup: [`IdentityGroupModel`](../../../lib/core/models/identity-group.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)``
Creates new group. - - _newGroup:_ [`IdentityGroupModel`](../../../lib/core/userinfo/models/identity-group.model.ts) - Object of containing the new group details. + - _newGroup:_ [`IdentityGroupModel`](../../../lib/core/models/identity-group.model.ts) - Object of containing the new group details. - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - Empty response when the group created. - **deleteGroup**(groupId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)``
Deletes Group. - _groupId:_ `string` - Id of the group. - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - Empty response when the group deleted. -- **findGroupsByName**(searchParams: [`IdentityGroupSearchParam`](../../../lib/core/userinfo/models/identity-group.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)``
+- **findGroupsByName**(searchParams: [`IdentityGroupSearchParam`](../../../lib/core/models/identity-group.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)``
Finds groups filtered by name. - - _searchParams:_ [`IdentityGroupSearchParam`](../../../lib/core/userinfo/models/identity-group.model.ts) - Object containing the name filter string + - _searchParams:_ [`IdentityGroupSearchParam`](../../../lib/core/models/identity-group.model.ts) - Object containing the name filter string - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - List of group information - **getClientIdByApplicationName**(applicationName: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)``
Gets the client Id using the app name. - _applicationName:_ `string` - Name of the app - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - client Id string -- **getClientRoles**(groupId: `string`, clientId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]>`
+- **getClientRoles**(groupId: `string`, clientId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]>`
Gets client roles. - _groupId:_ `string` - Id of the target group - _clientId:_ `string` - Id of the client - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]>` - List of roles -- **getGroupRoles**(groupId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]>`
+ - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]>` - List of roles +- **getGroupRoles**(groupId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]>`
Gets details for a specified group. - _groupId:_ `string` - Id of the target group - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]>` - Group details -- **getGroups**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupModel`](../../../lib/core/userinfo/models/identity-group.model.ts)`[]>`
+ - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]>` - Group details +- **getGroups**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupModel`](../../../lib/core/models/identity-group.model.ts)`[]>`
Gets all groups. - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupModel`](../../../lib/core/userinfo/models/identity-group.model.ts)`[]>` - Array of group information objects -- **getTotalGroupsCount**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupCountModel`](../../../lib/core/userinfo/models/identity-group.model.ts)`>`
+ - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupModel`](../../../lib/core/models/identity-group.model.ts)`[]>` - Array of group information objects +- **getTotalGroupsCount**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupCountModel`](../../../lib/core/models/identity-group.model.ts)`>`
Gets groups total count. - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupCountModel`](../../../lib/core/userinfo/models/identity-group.model.ts)`>` - Number of groups count. -- **queryGroups**(requestQuery: [`IdentityGroupQueryCloudRequestModel`](../../../lib/core/userinfo/models/identity-group.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupQueryResponse`](../../../lib/core/userinfo/models/identity-group.model.ts)`>`
+ - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupCountModel`](../../../lib/core/models/identity-group.model.ts)`>` - Number of groups count. +- **queryGroups**(requestQuery: [`IdentityGroupQueryCloudRequestModel`](../../../lib/core/models/identity-group.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupQueryResponse`](../../../lib/core/models/identity-group.model.ts)`>`
Queries groups. - - _requestQuery:_ [`IdentityGroupQueryCloudRequestModel`](../../../lib/core/userinfo/models/identity-group.model.ts) - - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupQueryResponse`](../../../lib/core/userinfo/models/identity-group.model.ts)`>` - Array of user information objects -- **updateGroup**(groupId: `string`, updatedGroup: [`IdentityGroupModel`](../../../lib/core/userinfo/models/identity-group.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)``
+ - _requestQuery:_ [`IdentityGroupQueryCloudRequestModel`](../../../lib/core/models/identity-group.model.ts) - + - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupQueryResponse`](../../../lib/core/models/identity-group.model.ts)`>` - Array of user information objects +- **updateGroup**(groupId: `string`, updatedGroup: [`IdentityGroupModel`](../../../lib/core/models/identity-group.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)``
Updates group details. - _groupId:_ `string` - Id of the targeted group. - - _updatedGroup:_ [`IdentityGroupModel`](../../../lib/core/userinfo/models/identity-group.model.ts) - Object of containing the group details + - _updatedGroup:_ [`IdentityGroupModel`](../../../lib/core/models/identity-group.model.ts) - Object of containing the group details - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - Empty response when the group updated. ## See also diff --git a/docs/core/services/identity-role.service.md b/docs/core/services/identity-role.service.md index ee06820863..1c2736959b 100644 --- a/docs/core/services/identity-role.service.md +++ b/docs/core/services/identity-role.service.md @@ -5,6 +5,6 @@ Status: Active Last reviewed: 2019-09-24 --- -# [Identity role service](../../../lib/core/userinfo/services/identity-role.service.ts "Defined in identity-role.service.ts") +# [Identity role service](../../../lib/core/services/identity-role.service.ts "Defined in identity-role.service.ts") Provides APIs for working with the Roles in Identity Services. diff --git a/docs/core/services/identity-user.service.md b/docs/core/services/identity-user.service.md index 6ae1fbce41..9f97b94935 100644 --- a/docs/core/services/identity-user.service.md +++ b/docs/core/services/identity-user.service.md @@ -5,7 +5,7 @@ Status: Active Last reviewed: 2019-07-12 --- -# [Identity user service](../../../lib/core/userinfo/services/identity-user.service.ts "Defined in identity-user.service.ts") +# [Identity user service](../../../lib/core/services/identity-user.service.ts "Defined in identity-user.service.ts") Gets OAuth2 personal details and roles for users and performs CRUD operations on identity users. @@ -13,15 +13,15 @@ Gets OAuth2 personal details and roles for users and performs CRUD operations on ### Methods -- **assignRoles**(userId: `string`, roles: [`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]`): [`Observable`](http://reactivex.io/documentation/observable.html)``
+- **assignRoles**(userId: `string`, roles: [`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]`): [`Observable`](http://reactivex.io/documentation/observable.html)``
Assigns roles to the user. - _userId:_ `string` - Id of the user. - - _roles:_ [`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]` - Array of roles. + - _roles:_ [`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]` - Array of roles. - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - Empty response when the role assigned. -- **changePassword**(userId: `string`, newPassword: [`IdentityUserPasswordModel`](../../../lib/core/userinfo/models/identity-user.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)``
+- **changePassword**(userId: `string`, newPassword: [`IdentityUserPasswordModel`](../../../lib/core/services/identity-user.service.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)``
Changes user password. - _userId:_ `string` - Id of the user. - - _newPassword:_ [`IdentityUserPasswordModel`](../../../lib/core/userinfo/models/identity-user.model.ts) - + - _newPassword:_ [`IdentityUserPasswordModel`](../../../lib/core/services/identity-user.service.ts) - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - Empty response when the password changed. - **checkUserHasAnyApplicationRole**(userId: `string`, applicationName: `string`, roleNames: `string[]`): [`Observable`](http://reactivex.io/documentation/observable.html)``
Checks if a user has any application role. @@ -50,9 +50,9 @@ Gets OAuth2 personal details and roles for users and performs CRUD operations on - _userId:_ `string` - ID of the target user - _roleNames:_ `string[]` - Array of roles to check for - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - True if the user has one of the roles, false otherwise -- **createUser**(newUser: [`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)``
+- **createUser**(newUser: [`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)``
Creates new user. - - _newUser:_ [`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts) - Object containing the new user details. + - _newUser:_ [`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts) - Object containing the new user details. - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - Empty response when the user created. - **deleteUser**(userId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)``
Deletes User. @@ -74,14 +74,14 @@ Gets OAuth2 personal details and roles for users and performs CRUD operations on Find users based on search input. - _search:_ `string` - Search query string - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - List of users -- **getAssignedRoles**(userId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]>`
+- **getAssignedRoles**(userId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]>`
Gets assigned roles. - _userId:_ `string` - Id of the user. - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]>` - Array of assigned roles information objects -- **getAvailableRoles**(userId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]>`
+ - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]>` - Array of assigned roles information objects +- **getAvailableRoles**(userId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]>`
Gets available roles - _userId:_ `string` - Id of the user. - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]>` - Array of available roles information objects + - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]>` - Array of available roles information objects - **getClientIdByApplicationName**(applicationName: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)``
Gets the client ID for an application. - _applicationName:_ `string` - Name of the application @@ -91,57 +91,57 @@ Gets OAuth2 personal details and roles for users and performs CRUD operations on - _userId:_ `string` - ID of the target user - _clientId:_ `string` - ID of the client app - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - List of client roles -- **getCurrentUserInfo**(): [`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts)
+- **getCurrentUserInfo**(): [`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts)
Gets the name and other basic details of the current user. - - **Returns** [`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts) - The user's details -- **getEffectiveRoles**(userId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]>`
+ - **Returns** [`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts) - The user's details +- **getEffectiveRoles**(userId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]>`
Gets effective roles. - _userId:_ `string` - Id of the user. - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]>` - Array of composite roles information objects -- **getInvolvedGroups**(userId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupModel`](../../../lib/core/userinfo/models/identity-group.model.ts)`[]>`
+ - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]>` - Array of composite roles information objects +- **getInvolvedGroups**(userId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupModel`](../../../lib/core/models/identity-group.model.ts)`[]>`
Gets involved groups. - _userId:_ `string` - Id of the user. - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupModel`](../../../lib/core/userinfo/models/identity-group.model.ts)`[]>` - Array of involved groups information objects. + - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityGroupModel`](../../../lib/core/models/identity-group.model.ts)`[]>` - Array of involved groups information objects. - **getTotalUsersCount**(): [`Observable`](http://reactivex.io/documentation/observable.html)``
Gets users total count. - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - Number of users count. -- **getUserRoles**(userId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]>`
+- **getUserRoles**(userId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]>`
Gets a list of roles for a user. - _userId:_ `string` - ID of the user - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]>` - Array of role info objects -- **getUsers**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts)`[]>`
+ - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]>` - Array of role info objects +- **getUsers**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts)`[]>`
Gets details for all users. - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts)`[]>` - Array of user info objects -- **getUsersByRolesWithCurrentUser**(roleNames: `string[]`): [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<`[`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts)`[]>`
+ - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts)`[]>` - Array of user info objects +- **getUsersByRolesWithCurrentUser**(roleNames: `string[]`): [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<`[`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts)`[]>`
Gets an array of users (including the current user) who have any of the roles in the supplied list. - _roleNames:_ `string[]` - List of role names to look for - - **Returns** [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<`[`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts)`[]>` - Array of user info objects -- **getUsersByRolesWithoutCurrentUser**(roleNames: `string[]`): [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<`[`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts)`[]>`
+ - **Returns** [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<`[`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts)`[]>` - Array of user info objects +- **getUsersByRolesWithoutCurrentUser**(roleNames: `string[]`): [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<`[`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts)`[]>`
Gets an array of users (not including the current user) who have any of the roles in the supplied list. - _roleNames:_ `string[]` - List of role names to look for - - **Returns** [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<`[`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts)`[]>` - Array of user info objects -- **joinGroup**(joinGroupRequest: [`IdentityJoinGroupRequestModel`](../../../lib/core/userinfo/models/identity-user.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)``
+ - **Returns** [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<`[`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts)`[]>` - Array of user info objects +- **joinGroup**(joinGroupRequest: [`IdentityJoinGroupRequestModel`](../../../lib/core/services/identity-user.service.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)``
Joins group. - - _joinGroupRequest:_ [`IdentityJoinGroupRequestModel`](../../../lib/core/userinfo/models/identity-user.model.ts) - Details of join group request (IdentityJoinGroupRequestModel). + - _joinGroupRequest:_ [`IdentityJoinGroupRequestModel`](../../../lib/core/services/identity-user.service.ts) - Details of join group request (IdentityJoinGroupRequestModel). - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - Empty response when the user joined the group. - **leaveGroup**(userId: `any`, groupId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)``
Leaves group. - _userId:_ `any` - Id of the user. - _groupId:_ `string` - Id of the group. - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - Empty response when the user left the group. -- **queryUsers**(requestQuery: [`IdentityUserQueryCloudRequestModel`](../../../lib/core/userinfo/models/identity-user.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityUserQueryResponse`](../../../lib/core/userinfo/models/identity-user.model.ts)`>`
+- **queryUsers**(requestQuery: [`IdentityUserQueryCloudRequestModel`](../../../lib/core/services/identity-user.service.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityUserQueryResponse`](../../../lib/core/services/identity-user.service.ts)`>`
Gets details for all users. - - _requestQuery:_ [`IdentityUserQueryCloudRequestModel`](../../../lib/core/userinfo/models/identity-user.model.ts) - - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityUserQueryResponse`](../../../lib/core/userinfo/models/identity-user.model.ts)`>` - Array of user information objects. -- **removeRoles**(userId: `string`, removedRoles: [`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]`): [`Observable`](http://reactivex.io/documentation/observable.html)``
+ - _requestQuery:_ [`IdentityUserQueryCloudRequestModel`](../../../lib/core/services/identity-user.service.ts) - + - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`IdentityUserQueryResponse`](../../../lib/core/services/identity-user.service.ts)`>` - Array of user information objects. +- **removeRoles**(userId: `string`, removedRoles: [`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]`): [`Observable`](http://reactivex.io/documentation/observable.html)``
Removes assigned roles. - _userId:_ `string` - Id of the user. - - _removedRoles:_ [`IdentityRoleModel`](../../../lib/core/userinfo/models/identity-role.model.ts)`[]` - + - _removedRoles:_ [`IdentityRoleModel`](../../../lib/core/models/identity-role.model.ts)`[]` - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - Empty response when the role removed. -- **updateUser**(userId: `string`, updatedUser: [`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)``
+- **updateUser**(userId: `string`, updatedUser: [`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)``
Updates user details. - _userId:_ `string` - Id of the user. - - _updatedUser:_ [`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts) - Object containing the user details. + - _updatedUser:_ [`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts) - Object containing the user details. - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`` - Empty response when the user updated. ## See also diff --git a/docs/core/services/notification.service.md b/docs/core/services/notification.service.md index c8f90ec853..c8c15efc63 100644 --- a/docs/core/services/notification.service.md +++ b/docs/core/services/notification.service.md @@ -5,7 +5,7 @@ Status: Active Last reviewed: 2018-06-08 --- -# [Notification Service](../../../lib/core/services/notification.service.ts "Defined in notification.service.ts") +# [Notification Service](../../../lib/core/notifications/services/notification.service.ts "Defined in notification.service.ts") Shows a notification message with optional feedback. @@ -17,33 +17,36 @@ Shows a notification message with optional feedback. - **dismissSnackMessageAction**()
dismiss the notification snackbar -- **openSnackMessage**(message: `string`, config?: `number|MatSnackBarConfig`, translationArgs?: `any`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)``
+- **openSnackMessage**(message: `string`, config?: `number|MatSnackBarConfig`, interpolateArgs?: `any`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)``
Opens a SnackBar notification to show a message. - _message:_ `string` - The message (or resource key) to show. - _config:_ `number|MatSnackBarConfig` - (Optional) Time before notification disappears after being shown or MatSnackBarConfig object - - _translationArgs:_ `any` - (Optional) The interpolation parameters to add for the translation + - _interpolateArgs:_ `any` - (Optional) The interpolation parameters to add for the translation - **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`` - Information/control object for the SnackBar -- **openSnackMessageAction**(message: `string`, action: `string`, config?: `number|MatSnackBarConfig`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)``
+- **openSnackMessageAction**(message: `string`, action: `string`, config?: `number|MatSnackBarConfig`, interpolateArgs?: `any`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)``
Opens a SnackBar notification with a message and a response button. - _message:_ `string` - The message (or resource key) to show. - _action:_ `string` - Caption for the response button - _config:_ `number|MatSnackBarConfig` - (Optional) Time before notification disappears after being shown or MatSnackBarConfig object + - _interpolateArgs:_ `any` - (Optional) The interpolation parameters to add for the translation - **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`` - Information/control object for the SnackBar -- **showError**(message: `string`, action?: `string`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)``
+- **showError**(message: `string`, action?: `string`, interpolateArgs?: `any`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)``
Rase error message - _message:_ `string` - Text message or translation key for the message. - _action:_ `string` - (Optional) Action name + - _interpolateArgs:_ `any` - (Optional) The interpolation parameters to add for the translation - **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`` - - **showInfo**(message: `string`, action?: `string`, interpolateArgs?: `any`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)``
Rase info message - _message:_ `string` - Text message or translation key for the message. - _action:_ `string` - (Optional) Action name - - _interpolateArgs:_ `any` - (Optional) + - _interpolateArgs:_ `any` - (Optional) The interpolation parameters to add for the translation - **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`` - -- **showWarning**(message: `string`, action?: `string`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)``
+- **showWarning**(message: `string`, action?: `string`, interpolateArgs?: `any`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)``
Rase warning message - _message:_ `string` - Text message or translation key for the message. - _action:_ `string` - (Optional) Action name + - _interpolateArgs:_ `any` - (Optional) The interpolation parameters to add for the translation - **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`` - ## Details diff --git a/docs/docassets/images/custom-data-table-resolver.png b/docs/docassets/images/custom-data-table-resolver.png new file mode 100644 index 0000000000000000000000000000000000000000..978b5b16d819f8854ab274c6d9d7372733ad4ddb GIT binary patch literal 12451 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 Zr?7|Z=0zi8YCoqzLseS^uJrQn{{bKCeQf{$ literal 0 HcmV?d00001 diff --git a/docs/insights/components/analytics-generator.component.md b/docs/insights/components/analytics-generator.component.md index 7b05b473ba..5ee21b9698 100644 --- a/docs/insights/components/analytics-generator.component.md +++ b/docs/insights/components/analytics-generator.component.md @@ -4,7 +4,7 @@ Added: v2.0.0 Status: Active --- -# [Analytics Generator Component](../../../lib/insights/analytics-process/components/analytics-generator.component.ts "Defined in analytics-generator.component.ts") +# [Analytics Generator Component](../../../lib/insights/src/lib/analytics-process/components/analytics-generator.component.ts "Defined in analytics-generator.component.ts") Generates and shows charts @@ -24,7 +24,7 @@ Generates and shows charts | Name | Type | Default value | Description | | ---- | ---- | ------------- | ----------- | | reportId | `number` | | | -| reportParamQuery | [`ReportQuery`](../../../lib/insights/diagram/models/report/reportQuery.model.ts) | undefined | | +| reportParamQuery | [`ReportQuery`](../../../lib/insights/src/lib/diagram/models/report/reportQuery.model.ts) | undefined | | ### Events diff --git a/docs/insights/components/analytics-report-list.component.md b/docs/insights/components/analytics-report-list.component.md index 6c8104b726..53c8847df5 100644 --- a/docs/insights/components/analytics-report-list.component.md +++ b/docs/insights/components/analytics-report-list.component.md @@ -4,7 +4,7 @@ Added: v2.0.0 Status: Active --- -# [APS Analytics List Component](../../../lib/insights/analytics-process/components/analytics-report-list.component.ts "Defined in analytics-report-list.component.ts") +# [APS Analytics List Component](../../../lib/insights/src/lib/analytics-process/components/analytics-report-list.component.ts "Defined in analytics-report-list.component.ts") Shows a list of all available reports @@ -31,5 +31,5 @@ Shows a list of all available reports | Name | Type | Description | | ---- | ---- | ----------- | | error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<>` | | -| reportClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ReportParametersModel`](../../../lib/insights/diagram/models/report/reportParameters.model.ts)`>` | | +| reportClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ReportParametersModel`](../../../lib/insights/src/lib/diagram/models/report/reportParameters.model.ts)`>` | | | success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<>` | | diff --git a/docs/insights/components/analytics.component.md b/docs/insights/components/analytics.component.md index 2914fc6536..6f9c30bfe7 100644 --- a/docs/insights/components/analytics.component.md +++ b/docs/insights/components/analytics.component.md @@ -4,7 +4,7 @@ Added: v2.0.0 Status: Active --- -# [APS Analytics Component](../../../lib/insights/analytics-process/components/analytics.component.ts "Defined in analytics.component.ts") +# [APS Analytics Component](../../../lib/insights/src/lib/analytics-process/components/analytics.component.ts "Defined in analytics.component.ts") Shows the charts related to the reportId passed as input diff --git a/docs/insights/components/diagram.component.md b/docs/insights/components/diagram.component.md index 495e4f8463..2eae4c65f7 100644 --- a/docs/insights/components/diagram.component.md +++ b/docs/insights/components/diagram.component.md @@ -4,7 +4,7 @@ Added: v2.0.0 Status: Active --- -# [Diagram Component](../../../lib/insights/diagram/components/diagram.component.ts "Defined in diagram.component.ts") +# [Diagram Component](../../../lib/insights/src/lib/diagram/components/diagram.component.ts "Defined in diagram.component.ts") Displays process diagrams. diff --git a/docs/insights/components/widget.component.md b/docs/insights/components/widget.component.md index 90700735bb..8345e59047 100644 --- a/docs/insights/components/widget.component.md +++ b/docs/insights/components/widget.component.md @@ -5,7 +5,7 @@ Status: Active Last reviewed: 2018-03-29 --- -# [Widget component](../../../lib/insights/analytics-process/components/widgets/widget.component.ts "Defined in widget.component.ts") +# [Widget component](../../../lib/insights/src/lib/analytics-process/components/widgets/widget.component.ts "Defined in widget.component.ts") Base class for standard and custom widget classes. diff --git a/docs/process-services-cloud/components/group-cloud.component.md b/docs/process-services-cloud/components/group-cloud.component.md index 5c960c09fb..b54169f1a9 100644 --- a/docs/process-services-cloud/components/group-cloud.component.md +++ b/docs/process-services-cloud/components/group-cloud.component.md @@ -28,7 +28,7 @@ Searches Groups. | ---- | ---- | ------------- | ----------- | | appName | `string` | | Name of the application. If specified this shows the users who have access to the app. | | mode | `string` | | User selection mode (single/multiple). | -| preSelectGroups | [`IdentityGroupModel`](../../../lib/core/userinfo/models/identity-group.model.ts)`[]` | \[] | Array of users to be pre-selected. This pre-selects all users in multi selection mode and only the first user of the array in single selection mode. | +| preSelectGroups | [`IdentityGroupModel`](../../../lib/core/models/identity-group.model.ts)`[]` | \[] | Array of users to be pre-selected. This pre-selects all users in multi selection mode and only the first user of the array in single selection mode. | | roles | `string[]` | \[] | Role names of the groups to be listed. | | searchGroupsControl | `FormControl` | new FormControl() | FormControl to search the group | | title | `string` | | Title of the field | @@ -37,8 +37,8 @@ Searches Groups. | Name | Type | Description | | ---- | ---- | ----------- | -| removeGroup | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`IdentityGroupModel`](../../../lib/core/userinfo/models/identity-group.model.ts)`>` | Emitted when a group is removed. | -| selectGroup | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`IdentityGroupModel`](../../../lib/core/userinfo/models/identity-group.model.ts)`>` | Emitted when a group is selected. | +| removeGroup | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`IdentityGroupModel`](../../../lib/core/models/identity-group.model.ts)`>` | Emitted when a group is removed. | +| selectGroup | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`IdentityGroupModel`](../../../lib/core/models/identity-group.model.ts)`>` | Emitted when a group is selected. | ## Details diff --git a/docs/process-services-cloud/components/people-cloud.component.md b/docs/process-services-cloud/components/people-cloud.component.md index c3cb17eb9f..4bd69cdedc 100644 --- a/docs/process-services-cloud/components/people-cloud.component.md +++ b/docs/process-services-cloud/components/people-cloud.component.md @@ -26,7 +26,7 @@ Allows one or more users to be selected (with auto-suggestion) based on the inpu | ---- | ---- | ------------- | ----------- | | appName | `string` | | Name of the application. If specified, this shows the users who have access to the app. | | mode | `string` | | User selection mode (single/multiple). | -| preSelectUsers | [`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts)`[]` | | Array of users to be pre-selected. All users in the array are pre-selected in multi selection mode, but only the first user is pre-selected in single selection mode. Mandatory properties are: id, email, username | +| preSelectUsers | [`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts)`[]` | | Array of users to be pre-selected. All users in the array are pre-selected in multi selection mode, but only the first user is pre-selected in single selection mode. Mandatory properties are: id, email, username | | roles | `string[]` | | Role names of the users to be listed. | | searchUserCtrl | `FormControl` | new FormControl() | FormControl to search the user | | title | `string` | | Placeholder translation key | @@ -36,6 +36,6 @@ Allows one or more users to be selected (with auto-suggestion) based on the inpu | Name | Type | Description | | ---- | ---- | ----------- | -| removeUser | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts)`>` | Emitted when a selected user is removed in multi selection mode. | -| selectUser | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts)`>` | Emitted when a user is selected. | +| removeUser | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts)`>` | Emitted when a selected user is removed in multi selection mode. | +| selectUser | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts)`>` | Emitted when a user is selected. | | warning | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`` | Emitted when an warning occurs. | diff --git a/docs/process-services-cloud/pipes/group-initial.pipe.md b/docs/process-services-cloud/pipes/group-initial.pipe.md index e8772ea872..8c54fc61d7 100644 --- a/docs/process-services-cloud/pipes/group-initial.pipe.md +++ b/docs/process-services-cloud/pipes/group-initial.pipe.md @@ -23,7 +23,7 @@ Extracts the initial character from a group name. ## Details -This pipe takes a [`IdentityGroupModel`](../../../lib/core/userinfo/models/identity-group.model.ts) +This pipe takes a [`IdentityGroupModel`](../../../lib/core/models/identity-group.model.ts) object as its parameter and extracts the initial character from the `name` property. The initial is a handy way to identify the group in lists and other situations where there is limited screen space available. diff --git a/docs/process-services/components/process-list.component.md b/docs/process-services/components/process-list.component.md index dd75296209..0fdd807518 100644 --- a/docs/process-services/components/process-list.component.md +++ b/docs/process-services/components/process-list.component.md @@ -58,6 +58,7 @@ when the process list is empty: | presetColumn | `string` | | Custom preset column schema in JSON format. | | processDefinitionId | `string` | | The Definition Id of the process. | | processInstanceId | `number \| string` | | The id of the process instance. | +| resolverFn | `Function` | | Resolver function is used to show dynamic complex column objects see the [docs](../../core/interfaces/datatable-adapter.interface.md) to learn how to configure a resolverFn. | | selectFirstRow | `boolean` | true | Toggles default selection of the first row | | selectionMode | `string` | "single" | Row selection mode. Can be none, `single` or `multiple`. For `multiple` mode, you can use Cmd (macOS) or Ctrl (Win) modifier key to toggle selection for multiple rows. | | size | `number` | | The number of processes to fetch in each page. | diff --git a/lib/core/datatable/components/datatable/datatable-cell.component.ts b/lib/core/datatable/components/datatable/datatable-cell.component.ts index aa866091a8..819362e631 100644 --- a/lib/core/datatable/components/datatable/datatable-cell.component.ts +++ b/lib/core/datatable/components/datatable/datatable-cell.component.ts @@ -77,6 +77,10 @@ export class DataTableCellComponent implements OnInit, OnDestroy { @Input() tooltip: string; + /** Custom resolver function which is used to parse dynamic column objects */ + @Input() + resolverFn: (row: DataRow, col: DataColumn) => any = null; + protected onDestroy$ = new Subject(); constructor(protected alfrescoApiService: AlfrescoApiService) {} @@ -98,7 +102,7 @@ export class DataTableCellComponent implements OnInit, OnDestroy { protected updateValue() { if (this.column && this.column.key && this.row && this.data) { - const value = this.data.getValue(this.row, this.column); + const value = this.data.getValue(this.row, this.column, this.resolverFn); this.value$.next(value); diff --git a/lib/core/datatable/components/datatable/datatable.component.html b/lib/core/datatable/components/datatable/datatable.component.html index 6d8ebdad09..657980cf44 100644 --- a/lib/core/datatable/components/datatable/datatable.component.html +++ b/lib/core/datatable/components/datatable/datatable.component.html @@ -141,6 +141,7 @@ [data]="data" [column]="col" [row]="row" + [resolverFn]="resolverFn" [tooltip]="getCellTooltip(row, col)"> @@ -150,6 +151,7 @@ [data]="data" [column]="col" [row]="row" + [resolverFn]="resolverFn" [tooltip]="getCellTooltip(row, col)"> @@ -159,6 +161,7 @@ [data]="data" [column]="col" [row]="row" + [resolverFn]="resolverFn" [tooltip]="getCellTooltip(row, col)"> @@ -169,6 +172,7 @@ [data]="data" [column]="col" [row]="row" + [resolverFn]="resolverFn" [tooltip]="getCellTooltip(row, col)"> @@ -177,6 +181,7 @@ [editable]="col.editable" [data]="data" [column]="col" + [resolverFn]="resolverFn" [row]="row"> @@ -189,7 +194,7 @@
+ [ngTemplateOutletContext]="{ $implicit: { data: data, row: row, col: col }, value: data.getValue(row, col, resolverFn) }">
diff --git a/lib/core/datatable/components/datatable/datatable.component.ts b/lib/core/datatable/components/datatable/datatable.component.ts index d863dea578..cbb7ffff13 100644 --- a/lib/core/datatable/components/datatable/datatable.component.ts +++ b/lib/core/datatable/components/datatable/datatable.component.ts @@ -161,6 +161,13 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck, @Input() rowMenuCacheEnabled = true; + /** + * Custom resolver function which is used to parse dynamic column objects + * see the docs to learn how to configure a resolverFn. + */ + @Input() + resolverFn: (row: DataRow, col: DataColumn) => any = null; + noContentTemplate: TemplateRef; noPermissionTemplate: TemplateRef; loadingTemplate: TemplateRef; diff --git a/lib/core/datatable/components/datatable/json-cell.component.ts b/lib/core/datatable/components/datatable/json-cell.component.ts index 785823fd95..f6faf7093f 100644 --- a/lib/core/datatable/components/datatable/json-cell.component.ts +++ b/lib/core/datatable/components/datatable/json-cell.component.ts @@ -52,12 +52,12 @@ export class JsonCellComponent extends DataTableCellComponent implements OnInit ngOnInit() { if (this.column && this.column.key && this.row && this.data) { - this.value$.next(this.data.getValue(this.row, this.column)); + this.value$.next(this.data.getValue(this.row, this.column, this.resolverFn)); } } view() { - const rawValue: string | object = this.data.getValue(this.row, this.column); + const rawValue: string | object = this.data.getValue(this.row, this.column, this.resolverFn); const value = typeof rawValue === 'object' ? JSON.stringify(rawValue || {}, null, 2) : rawValue; diff --git a/lib/core/datatable/components/datatable/location-cell.component.ts b/lib/core/datatable/components/datatable/location-cell.component.ts index bd37d216ee..4105344618 100644 --- a/lib/core/datatable/components/datatable/location-cell.component.ts +++ b/lib/core/datatable/components/datatable/location-cell.component.ts @@ -52,7 +52,8 @@ export class LocationCellComponent extends DataTableCellComponent implements OnI if (this.column && this.column.key && this.row && this.data) { const path: PathInfoEntity = this.data.getValue( this.row, - this.column + this.column, + this.resolverFn ); if (path && path.name && path.elements) { diff --git a/lib/core/datatable/data/datatable-adapter.ts b/lib/core/datatable/data/datatable-adapter.ts index 698f31160d..b1719baac7 100644 --- a/lib/core/datatable/data/datatable-adapter.ts +++ b/lib/core/datatable/data/datatable-adapter.ts @@ -28,7 +28,7 @@ export interface DataTableAdapter { setRows(rows: Array): void; getColumns(): Array; setColumns(columns: Array): void; - getValue(row: DataRow, col: DataColumn): any; + getValue(row: DataRow, col: DataColumn, resolverFn?: (row: DataRow, col: DataColumn) => any): any; getSorting(): DataSorting; setSorting(sorting: DataSorting): void; sort(key?: string, direction?: string): void; diff --git a/lib/core/datatable/data/object-datatable-adapter.ts b/lib/core/datatable/data/object-datatable-adapter.ts index a34042a045..7c0e036d80 100644 --- a/lib/core/datatable/data/object-datatable-adapter.ts +++ b/lib/core/datatable/data/object-datatable-adapter.ts @@ -99,7 +99,7 @@ export class ObjectDataTableAdapter implements DataTableAdapter { this._columns = columns || []; } - getValue(row: DataRow, col: DataColumn): any { + getValue(row: DataRow, col: DataColumn, resolver?: (row: DataRow, col: DataColumn) => any ): any { if (!row) { throw new Error('Row not found'); } @@ -107,6 +107,10 @@ export class ObjectDataTableAdapter implements DataTableAdapter { throw new Error('Column not found'); } + if (resolver) { + return resolver(row, col); + } + const value = row.getValue(col.key); if (col.type === 'icon') { diff --git a/lib/process-services/src/lib/mock/process/process-instances-list.mock.ts b/lib/process-services/src/lib/mock/process/process-instances-list.mock.ts index 6032f8fe99..d409197cee 100644 --- a/lib/process-services/src/lib/mock/process/process-instances-list.mock.ts +++ b/lib/process-services/src/lib/mock/process/process-instances-list.mock.ts @@ -45,7 +45,12 @@ export let fakeProcessInstance = { graphicalNotationDefined: true, startFormDefined: false, suspended: false, - variables: [] + variables: [ + { + name: 'initiator', + value: 'fake-user-1' + } + ] }, { id: '2', @@ -70,7 +75,12 @@ export let fakeProcessInstance = { graphicalNotationDefined: true, startFormDefined: false, suspended: false, - variables: [] + variables: [ + { + name: 'initiator', + value: 'fake-user-2' + } + ] } ] }; diff --git a/lib/process-services/src/lib/process-list/components/process-list.component.html b/lib/process-services/src/lib/process-list/components/process-list.component.html index 92542adc9c..a5240f6ecb 100644 --- a/lib/process-services/src/lib/process-list/components/process-list.component.html +++ b/lib/process-services/src/lib/process-list/components/process-list.component.html @@ -6,6 +6,7 @@ [loading]="isLoading" [selectionMode]="selectionMode" [multiselect]="multiselect" + [resolverFn]="resolverFn" (rowClick)="onRowClick($event)" (row-keyup)="onRowKeyUp($event)"> diff --git a/lib/process-services/src/lib/process-list/components/process-list.component.spec.ts b/lib/process-services/src/lib/process-list/components/process-list.component.spec.ts index 026d60771e..64141937d3 100644 --- a/lib/process-services/src/lib/process-list/components/process-list.component.spec.ts +++ b/lib/process-services/src/lib/process-list/components/process-list.component.spec.ts @@ -22,7 +22,7 @@ import { By } from '@angular/platform-browser'; import { ProcessInstanceListComponent } from './process-list.component'; -import { AppConfigService, setupTestBed, CoreModule, DataTableModule } from '@alfresco/adf-core'; +import { AppConfigService, setupTestBed, CoreModule, DataTableModule, DataRow, DataColumn } from '@alfresco/adf-core'; import { DataRowEvent, ObjectDataRow, ObjectDataTableAdapter } from '@alfresco/adf-core'; import { fakeProcessInstance, fakeProcessInstancesWithNoName, fakeProcessInstancesEmpty } from '../../mock'; @@ -38,6 +38,13 @@ describe('ProcessInstanceListComponent', () => { let service: ProcessService; let getProcessInstancesSpy: jasmine.Spy; let appConfig: AppConfigService; + const resolverfn = (row: DataRow, col: DataColumn) => { + const value = row.getValue(col.key); + if (col.key === 'variables') { + return (value || []).map((processVar) => `${processVar.name} - ${processVar.value}`).toString(); + } + return value; + }; setupTestBed({ imports: [ @@ -271,6 +278,30 @@ describe('ProcessInstanceListComponent', () => { }); })); + it('should show custom resolved value in the column', async(() => { + appConfig.config['adf-process-list'] = { + 'presets': { + 'fakeProcessCustomSchema': [ + { + 'key': 'variables', + 'type': 'text', + 'title': 'Variables' + } + ] + } + }; + component.presetColumn = 'fakeProcessCustomSchema'; + component.resolverFn = resolverfn; + component.reload(); + + fixture.whenStable().then(() => { + fixture.detectChanges(); + const customColumn = fixture.debugElement.queryAll(By.css('[title="Variables"] adf-datatable-cell')); + expect(customColumn[0].nativeElement.innerText).toEqual('initiator - fake-user-1'); + expect(customColumn[1].nativeElement.innerText).toEqual('initiator - fake-user-2'); + }); + })); + describe('component changes', () => { beforeEach(() => { diff --git a/lib/process-services/src/lib/process-list/components/process-list.component.ts b/lib/process-services/src/lib/process-list/components/process-list.component.ts index fc5b1ccb6d..5f075bd000 100644 --- a/lib/process-services/src/lib/process-list/components/process-list.component.ts +++ b/lib/process-services/src/lib/process-list/components/process-list.component.ts @@ -20,7 +20,9 @@ import { DataRowEvent, DataTableAdapter, CustomEmptyContentTemplateDirective, - CustomLoadingContentTemplateDirective + CustomLoadingContentTemplateDirective, + DataRow, + DataColumn } from '@alfresco/adf-core'; import { AppConfigService, @@ -112,6 +114,13 @@ export class ProcessInstanceListComponent extends DataTableSchema implements On @Input() selectFirstRow: boolean = true; + /** + * Resolver function is used to show dynamic complex column objects + * see the docs to learn how to configure a resolverFn. + */ + @Input() + resolverFn: (row: DataRow, col: DataColumn) => any = null; + /** Emitted when a row in the process list is clicked. */ @Output() rowClick: EventEmitter = new EventEmitter();