Views
The views
property defines a group of table configurations to display on the List screen. Views are pre-configured groups of properties that specify which criteria are included on the Txn query (sort and filters).
Here are some recommendations to consider when configuring a view.
- When filtering on multiple submission properties, the parent mapping attribute's filter must be defined as
multiselect
. - Limit the view label to 20-25 characters to avoid formatting issues. Longer labels may be truncated.
- Avoid duplicating properties in views as this will cause unexpected results.
Properties
Property | Description |
---|---|
expandedInfo | string (CurrentSpaceViewExpandedInfo)Display a custom card inside an expandable table row on the List screen. To learn more, see expandedInfo. |
readOnly | boolean (CurrentSpaceReadOnly)Determines whether nested table rows on the List screen are clickable. To learn more, see readOnly. |
For a full list of supported properties, see API Reference.
expandedInfo
The expandedInfo
property is used to display nested information in a custom card inside expandable table rows on the List screen. The property value is a single mapping specified in the global config. The mapping must have type: 'table'
or type: 'list'
.
The following example demonstrates how to use expandedInfo
, where $applicantValidation
is an apporpriate mapping defined in the global config.
views: [
{
label: 'All Outstanding',
properties: ['$appId', '$appStatus', '$appCreated', '$primaryName', '$assigned', '$product'],
sortOrder: 'asc',
sortBy: '$assigned',
expandedInfo: '$applicantValidation'
},
],
readOnly
readOnly
is a boolean property that controls whether nested table rows on the List screen are clickable. When a clickable row is clicked, Workspaces navigates to the Details screen showing the first txn from the nested table. If readOnly
is false
, nested table rows will be clickable. Set readOnly
to true
to make nested table rows non-clickable.
Add readOnly
to a mapping that is used in the views configuration as the value of the expandedInfo
property. The mapping must have type: 'table'
.
info
On mobile layout, readonly
has no effect. Selecting a row in the item list opens a sidesheet that shows the parent row details for the item list along with a sub-table that contains the sub-tasks within the application. Tapping the Go To Detail Screen button navigates to the application's first transaction. Alternatively, tapping any individual transaction displayed under the Transactions table navigates to the selected transaction on the Details screen.
The following example demonstrates how to use readOnly
to configure non-clickable rows on a mapping that's used to enable nested information on the List screen.
$completedMessages: {
label: 'Completed Actions',
icon: 'priority',
type: 'table',
readOnly: true,
dataSource: ["initial.properties['CompletedMessages']"],
properties: [
{
label: 'Date',
dataIndex: 'date',
type: 'date',
},
{
label: 'Message',
dataIndex: 'message',
type: 'text',
},
],
},
Example
The following example shows how to configure views with default sort and filter criteria.
{
"formName": "DAO - Manual Review",
"formUrl": "http://localhost:3000",
"formStatus": "Assigned",
"trackingCode": "AWQAVZA",
"groupName": " Manual Review",
"formDataMap": {
"PrimaryName": "Dali Mohamed"
},
"job": {
"currentAction": "Handle Submission",
"currentStep": "Fraud Review",
"jobRefNumber": "4629QWP",
"jobKey": "17c25feaa1a48565aabc6f0ab0be3839",
"name": "Deposit Account Opening",
"status": "In Progress",
"timeCreated": "2019-03-15T08:55:14+11:00",
"timeLastModified": "2019-03-15T15:57:36+11:00"
},
"comments": [],
"fileAttachments": [],
"receiptUrl": null,
"submitKey": "toxcb11a30812257de476a0abd3575f8",
"timeCreated": "2019-03-29T13:41:20+11:00",
"availableActions": ["assign"],
"timeUserLastModified": "2019-03-29T15:40:35+11:00",
"userLoginName": "[email protected]"
}
import { ConfigGlobal } from '@transact-open-ux/workspaces/dist/types';
export const globalConfig = ({ date }: any): ConfigGlobal => ({
...
mappings: {
$primaryName: {
label: 'Name',
dataIndex: ['properties["PrimaryName"]', 'formDataMap["PrimaryName"]'],
type: 'text',
filter: {
type: 'input',
},
},
$assigned: {
label: 'Assigned to',
icon: 'Assignee',
dataIndex: 'userLoginName',
type: 'text',
sorter: true,
filter: {
type: 'multiselect',
options: ['[email protected]', '[email protected]']
},
},
$product: {
label: 'Product',
dataIndex: ['job.name', 'formName'],
type: 'text',
filter: {
type: 'select',
options: [
'DAO - Manual Review',
'Review of deposit account opening',
'Review of loan application',
],
},
},
$appId: {
label: 'App ID',
icon: 'AppId',
dataIndex: ['job.jobRefNumber', 'trackingCode'],
type: 'text',
filter: {
type: 'input',
},
},
$appStatus: {
label: 'App status',
icon: 'AppStatus',
dataIndex: 'job.status',
type: 'text',
sorter: true,
filter: {
type: 'multiselect',
options: ['Saved', 'Opened', 'Abandoned'],
},
},
$appCreated: {
label: 'App created',
icon: 'AppCreated',
dataIndex: 'job.timeCreated',
type: 'date',
format: 'relative',
sorter: true,
},
},
...
});
export default globalConfig;
import { ConfigCurrentSpace } from '@transact-open-ux/workspaces/dist/types';
export const processConfig = ({ date }: any): ConfigCurrentSpace => ({
...
views: [
...
{
label: 'All Outstanding',
properties: [
'$appId',
'$appStatus',
'$appCreated',
'$primaryName',
'$assigned',
'$product',
],
sortOrder: 'asc',
sortBy: '$assigned',
},
{
label: 'Opened last week',
groupNames: ['Manual Review'],
properties: [
'$appId',
'$appStatus',
'$appCreated',
'$primaryName',
'$assigned',
'$product',
],
filterBy: {
$product: 'All',
$appStatus: ['Opened', 'None'],
$appCreated: [date('1 week ago'), date('today')]
},
sortBy: '$appCreated',
permissions: {
type: 'group',
value: ['Fraud Review'],
},
},
...
],
...
});
export default processConfig;
note
Don't specify an array for filterBy
value attributes unless the filter type supports multiple values like multiselect
or daterangepicker
.