Floor Plan Components Configuration
This section explains on how to configure each component within the floor plan payload. Each floor plan template supports different components, for more details refer the Developer Guide for each template.
Quick Search
Used to display quick search on the page or tab
Supports search on string and integer type properties including reference types and arrays.
For an array or object and reference type of properties, it is necessary to specify the exact attribute (nested property) on which the search is performed.
Optional Component
Available for:
-
Search Object - List View
-
Search Object - Table View
-
View and Edit Object - List
-
Tab component within View and Edit Object - Recursive
Use cases:
-
Add additional properties from the resource to the quick search
-
Add custom created dynamic fields to the quick search
For detailed description refer the quick search component
Example 1
Existing Quick search component for premium schedules Search Object - List View page:
"quickSearch": { "properties": [ { "name": "code", "sequence": 1 } ] }
Example 2
Adding additional string properties from the resource to the quick search, that is, amountInterpretation
"quickSearch": { "properties": [{ "name": "code", "sequence": 1 }, { "name": "amountInterpretation", "sequence": 2 } ] }
Example 3
Configuring quick search for a reference type property using nested properties, that is, adding search on schedule definition code.
"quickSearch": { "properties": [{ "name": "code", "sequence": 1 }, { "name": "scheduleDefinition", "sequence": 2, "properties": [{ "name": "code" "sequence": 1 } ] } ] }
Advanced Search
Advanced Search provides the ability to have multiple search criteria.
Displayed as a hyperlink that displays the advanced search dialog
Supports search on string (enums, boolean), integer, date, date time, referenced type properties.
Optional Component
Available for:
-
Search Object - List View
-
Search Object - Table View
-
View and Edit Object - List
-
Tab component within View and Edit Object - Recursive
Use cases:
-
Add additional properties from the resource to the advanced search
-
Add custom created dynamic fields to the advanced search
For detailed description refer the advanced search component
Example 1
Create an advanced search on resource properties - code string), amountInterpretation(string) and a single value non-time valid dynamic field, that is, customField.
"advancedSearch": { "properties": [{ "name": "code", "sequence": 1 }, { "name": "amountInterpretation", "sequence": 2 }, { "name": "customField", "sequence": 3 } ] }
Example 2
Create an advanced search on a reference type property with a filter, that is, scheduleDefinition.
"advancedSearch": { "properties": [{ "name": "code", "sequence": 1 }, { "name": "scheduleDefinition", "refType": { "type": "scheduledefinitions", "filter": "type.eq("P").or.type.eq("T")" }, "sequence": 2 } ] }
refType type refers to predefined LOV floor plan. |
Auto Fetch
Can be used to perform default search on page load, that is, auto fetch records.
Boolean property, that is, can be set to true or false.
Optional Component
Available for:
-
Search Object - List View
-
Search Object - Table View
-
View and Edit Object - List
Use cases:
-
Enable or Disable auto fetch for a search or table page
Pre-Filter
A pre-filter limits the results on a search page. Only the results that meet the condition in the pre-filter are displayed.
The pre-filter is added to all the quick and advanced searches as 'and' condition.
The pre-filter is an optional component, defined after actions.
The filter conditions can be set using HTTP Query API grammar
Available for:
-
Search Object - List View
-
Search Object - Table View
-
View and Edit Object - List
Use cases:
-
Have a UI page that only returns search results that apply to a custom search criteria.
Example: Applying a pre-filter to display only active dynamic logic
Sort
Used to control the order in which the results are displayed.
Sort component consists of:
Default sort
-
When specified, the list resource is sorted based on the properties and order as defined by the default criteria
-
The sequence property of each default criterion determines the order in which properties are considered for sorting
Criteria
-
Used to override the default sort criteria, that is, giving user the ability to re-order the results based on the selected 'sort' criteria
-
The criteria are shown in a drop-down, by default no property is selected as first pick. When a user selects a criteria, first the results are sorted ascending based on the selected sort criteria
Optional Component
Available for:
-
Search Object - List View
-
Search Object - Table View
-
View and Edit Object - List
-
Tab component within View and Edit Object - Recursive
Use cases:
-
Add additional 'sort' criterion on a page
-
Change default sorting order
For detailed description refer the sort component
Example
Configuring default sort on code with additional sort criteria on code, descr and active properties
"sort": { "criteria": { "properties": [{ "name": "code", "sequence": 1 }, { "name": "descr", "sequence": 2 }, { "name": "active", "sequence": 3 } ] }, "default": [{ "sequence": 1, "sortOrder": "asc", "properties": [{ "name": "code", "sequence": 1 } ] } ] }
Filter
Filter criteria is defined to give users option to further filter the search results.
A filter entry is used to restrict the search query, not to compose a new query, that is, if the user already provided an entry in the simple or advanced search, this input is retained and extended with the filter input.
Optional component
Available for:
-
Search Object - Table View
-
View and Edit Object - List
Use cases:
-
Adding new or additional filters on a page
For detailed description refer the filter component
Example
Configuring filters on Exchanges page, that is, adding filters for exchange status, integration type(reference property) and creation date(between) filters.
"filters": { "properties": [{ "name": "exchangeStatus", "sequence": 1, "displayType": "checkbox" }, { "name": "integration", "sequence": 2, "properties": [{ "name": "type", "displayType": "checkbox" } ] }, { "name": "creationDate", "sequence": 3, "operator": "between" } ] }
Labels
The label component is used to display property values in form of a label
A label can take in exactly one property and in case of array or a subResource the user can also specify a property of the list.
A color can be specified for every property value including a default color in case the value is not in the list.
Optional component
Available for:
-
Results in Search Object - List View
-
Rows in View and Edit Object - List
-
Rows in Search Object – Table View
-
Page level, tab(table) for View and Edit Object - Recursive
For detailed description refer the labels component
Example
Adding a label for exchange status and three different color indicators depending on the status
"labels": [{ "sequence": 1, "properties": [{ "name": "exchangeStatus", "sequence": 1 } ], "defaultColor": "blue", "values": [{ "value": "F", "color": "red" }, { "value": "T", "color": "grey" }, { "value": "C", "color": "green" } ] } ]
Pagination
The pagination is used to control the number of records displayed on a page.
A maximum of rows as specified by the property pageSize are displayed. If pageSize is not set, then a default of 10 is applied.
Available for:
-
Search Object - List View
-
Search Object - Table View
-
View and Edit Object - List
-
Results and table within tabs for View and Edit Object - Recursive
For detailed description refer the pagination component
Results
The results component facilitates the display of a collection of objects
Every result (object record) is displayed in a single list row
Required component
Available for:
-
Search Object - List View
-
Tab component within View and Edit Object - Recursive
Each result or row consists of
-
Title
-
Label Component
-
Description
-
Actions
-
Set 1
-
Set 2
Use cases:
-
Adding or removing fields, labels from results
-
Add custom created dynamic fields to the results
-
Updating actions to make fields editable or read-only
For detailed description refer the results component
Example 1
Configuring actions, title, description and labels, that is,
-
Allowing user to view, edit and delete a result.
-
Title set to 'code' property
-
Description set to 'message' property
-
Two labels, that is, for 'active' and 'severity' properties
"results": { "actions": [ "view", "edit", "delete" ], "title": { "properties": [{ "name": "code", "sequence": 1, "display": "always" } ] }, "description": { "properties": [{ "name": "message", "sequence": 1, "display": "always" } ] }, "labels": [{ "sequence": 1, "properties": [{ "name": "active", "sequence": 1, "display": "always" } ], "values": [{ "value": true, "displayLabel": "pol_dynamiclogic_field_active_default", "color": "blue" }, { "value": false, "displayLabel": "pol_dynamiclogic_field_inactive_default", "color": "grey" } ] }, { "sequence": 2, "properties": [{ "name": "severity", "sequence": 1, "display": "always" } ], "defaultColor": "blue", "values": [{ "value": "F", "color": "red" } ] } ] }
Example 2
Updating sets to display single value non-time valid dynamic field.
In the example below title is set to 'code', set1&2 contains message (resource property), SVNTV_NUM, SVNTV_CHAR, SVNTV_DATE (single value non-time valid fields of number, character and date type respectively) and SVNTV_FC (single value non-time valid field of type flex code)
"results": { "actions": [ "view", "edit", "delete" ], "title": { "properties": [{ "name": "code", "sequence": 1, "display": "always" } ] }, "set1": { "properties": [{ "name": "message", "sequence": 2, "refType": { "type": "messages" } }, { "name": "SVNTV_NUM", "sequence": 3 } ] }, "set2": { "properties": [{ "name": "SVNTV_CHAR", "sequence": 1 }, { "name": "SVNTV_DATE", "sequence": 2 }, { "name": "SVNTV_FC", "sequence": 3, "refType": { "type": "flexcodes" } } ] } }
Example 3
Updating sets to display single/multivalue dynamic records
That is, adding medRep dynamic record with firstName, networkID and lastName fields
"results": { ..., "set2": { "properties": [{ "name": "medRep", "sequence": 10, "properties": [{ "name": "firstName", "sequence": 1 }, { "name": "networkId", "sequence": 2 }, { "name": "lastName", "sequence": 3 } ] } ] } } ...
Table
The table component shows the object 'list' in a table view
Table component consists of
Actions
Rows
-
Actions
-
Columns
-
Labels
-
Region
Can be a read-only table in case of Search Object – Table View, that is, to display search results or an editable table in case of View and Edit Object - List allowing user to edit data within the table
Available for
-
View and Edit Object - List
-
Search Object – Table View
-
Tab(table) for View and Edit Object - Recursive
Use cases:
-
Update the columns to include single value non-time valid dynamic field
-
Add dynamic records or multi-value dynamic fields to table region
-
Update the labels to display status etc.
For detailed description refer the table component
Example 1
Configuring a table for a page using View and Edit Object - List template
-
Set Table action to 'add' allowing users to add new rows
-
Set Row level action to 'remove' allowing users to delete existing rows
-
Set table columns to display code and directoryName, hostName from typeConfig object within the resource
-
Configure Region component to display knownHostFile and maxBufferSize from typeConfig object (using nested region within set1)
"table": { "actions": [ "add" ], "row": { "actions": [ "remove" ], "columns": { "properties": [{ "name": "code", "sequence": 1 } { "name": "typeConfig", "sequence": 2, "properties": [{ "name": "directoryName", "label": "OIG_SFTP_DIRECTORYNAME_DEFAULT", "mandatory": "true", "sequence": 1 }, { "name": "hostname", "label": "OIG_SFTP_DEFAULT", "mandatory": "true", "sequence": 2 } ] } ] }, "region": { "set1": { "tiles": [{ "sequence": 1, "properties": [{ "name": "typeConfig", "displayType": "region", "properties": [{ "name": "knownHostsFile", "label": "OIG_SFTP_KNOWNHOSTSFILE_DEFAULT", "sequence": 1 }, { "name": "maxBufferSize", "label": "OIG_SFTP_MAXBUFFERSIZE_DEFAULT", "default": 32768, "sequence": 4 } ] } ] } ] } } } }
Region
The region is used to display an array of tiles grouping properties together.
Region component consists of
Set 1
Tiles
-
Title
-
Properties
Set 2
Tiles
-
Title
-
Properties
Available for
-
Region within rows for View and Edit Object - List, that is, overflow region
-
Region within rows for Search Object – Table View
-
View and Edit Object - Recursive
Use cases:
-
Update the region to display dynamic fields and records
-
Have multiple pages with different region layout based on the use case
For detailed description refer the region component
Examples:
Example 1
Add a single value non-time valid dynamic field, that is, 'SVNTV_CHAR' and 'SVNTV_FC' (flex code) in Set 2 of the region.
"region": { "set1": { "tiles": [{ "sequence": 1, "properties": [{ "name": "code", "sequence": 1 }, { "name": "descr", "sequence": 2 } ] } ] }, "set2": { "tiles": [{ "sequence": 1, "properties": [{ "name": "SVNTV_CHAR", "sequence": 1 }, { "name": "SVNTV_FC", "sequence": 2, "refType": { "type": "flexcodes" } } ] } ] } }
Example 2
Add a single value time valid dynamic field, that is 'SVTVTEST' in Set 1
"region": { "set1": { "tiles": [{ "sequence": 1, "properties": [{ "name": "code", "sequence": 1 }, { "name": "SVTVTEST", "sequence": 2, "properties": [{ "name": "singleValueFlex", "refType": { "type": "flexcodes" }, "sequence": 1 }, { "name": "startDate", "sequence": 3 }, { "name": "endDate", "sequence": 1 } ] } ] } ] } }
Example 3
Add a multi value non time valid dynamic field
"region": { "set1": { "tiles": [{ "sequence": 1, "properties": [{ "name": "code", "sequence": 1 }, { "name": "multiValueField", "sequence": 13, "displayType": "multivalue", "properties": [{ "name": "value", "label": "OIG_MULTIVALUEFIELD_CUSTOM_LABEL", "sequence": 1 } ] } ] } ] } }
Example 4
Add a single value time valid dynamic record
"region": { "set1": { "tiles": [{ "sequence": 1, "properties": [{ "name": "code", "sequence": 1 }, { "name": "medRep", "sequence": 2, "properties": [{ "name": "firstName", "sequence": 1 }, { "name": "networkId", "sequence": 2 }, { "name": "lastName", "sequence": 3 }, { "name": "startDate", "sequence": 1 }, { "name": "endDate", "sequence": 3 } ] } ] } ] } }
Tabs
The tab component provides means to show the sub-resources in form of a tab for pages using View and Edit Object - Recursive template
tabResource must be defined for each tab
A page can have multiple tabs, the display order is controlled by sequence of each tab
A tab can have either results component or table component but not both
Tab component consists of
-
Actions (applicable only when results component is used)
-
Quick Search
-
Advanced Search
-
Sort
-
Results
-
Table
-
Pagination
Available for
-
View and Edit Object - Recursive
Use cases:
-
Update the page to show multi value dynamic record as a new tab
-
Customize existing tabs to change the layout or update actions or add dynamic fields etc.
For detailed description refer the tab component
Example 1
Adding a multi value dynamic record as a new tab which uses table component
"tabs": [ ... { "sequence": 2, "tabResource": { "listResource": "DemoRecordUsage" }, "table": { "actions": [ "add" ], "row": { "actions": [ "remove" ], "columns": { "properties": [{ "name": "DemoColumn1", "label": "OIG_DYNAMICRECORD_DEMOCOLUMN1", "sequence": 1 }, { "name": "DemoColumn2", "label": "OIG_DYNAMICRECORD_DEMOCOLUMN2", "sequence": 2 }, { "name": "DemoColumn3", "label": "OIG_DYNAMICRECORD_DEMOCOLUMN3", "sequence": 3 }, { "name": "DemoColumn4", "label": "OIG_DYNAMICRECORD_DEMOCOLUMN4", "sequence": 4 } ] } } } } ... ]
Example 2
Adding a subResource as a new tab with results layout
"tabs": [{ "sequence": 1, "tabResource": { "listResource": "integrationSteps" }, "actions": [ "add" ], "quickSearch": { "properties": [{ "name": "code", "sequence": 1 } ] }, "results": { "actions": [ "open", "remove" ], "title": { "properties": [{ "name": "code", "sequence": 1 } ] }, "description": { "properties": [{ "name": "subtype", "sequence": 1 } ] }, "set1": { "properties": [{ "name": "sequence", "sequence": 1 }, { "name": "destination", "sequence": 1, "refType": { "type": "destinations" } } ] } } } ]
For adding subResource tab with results component user must define a View and Edit Object - Recursive template based page for the subResource, that is, create a view and edit page for user to update the subResource properties. |
Example 3
Converting a tab to use region from table component
Existing table based tab component for accessRestrictionGrantList sub-resource for Access Roles page
"tabs": [{ "sequence": 1, "tabResource": { "listResource": "accessRestrictionGrantList" }, "quickSearch": { "properties": [{ "name": "accessRestriction", "sequence": 1, "refType": { "type": "accessrestrictions" } } ] }, "table": { "actions": [ "add" ], "row": { "actions": [ "remove" ], "columns": { "properties": [{ "name": "accessRestriction", "sequence": 1, "refType": { "type": "accessrestrictions" }, "nonupdatable": true }, { "name": "create", "sequence": 2 }, { "name": "retrieve", "sequence": 3 }, { "name": "update", "sequence": 4 }, { "name": "delete", "sequence": 5 }, { "name": "system", "sequence": 6, "readonly": true } ] } } } } ]
-
Update the Access Roles page floor plan’s tab component to use results instead of table for accessRestrictionGrantList sub-resource
"tabs": [{ "sequence": 1, "tabResource": { "listResource": "accessRestrictionGrantList" }, "quickSearch": { "properties": [{ "name": "accessRestriction", "sequence": 1, "refType": { "type": "accessrestrictions" } } ] }, "results": { "actions": [ "open", "remove" ], "title": { "properties": [{ "name": "accessRestriction", "sequence": 1, "properties": [{ "name": "code", "sequence": 1 } ] } ] }, "set1": { "properties": [{ "name": "create", "sequence": 2 }, { "name": "retrieve", "sequence": 3 } ] }, "set2": { "properties": [{ "name": "update", "sequence": 4 }, { "name": "delete", "sequence": 5 }, { "name": "system", "sequence": 6, "readonly": true } ] } } } ]
-
Create a floor plan for accessRestrictionGrant sub-resource, that is, the page user uses to view and edit this resource
In this example the following properties were used when creating the new floor plan for the accessRestrictionGrant sub-resource:
-
Page Name: accessrestrictiongrants
-
Template: View And Edit Object Hierarchical Recursive
-
Resource: accessrestrictiongrant
-
Priority: 1
-
Enabled: True
Payload:
{
"floorplan_object_00": {
"title": {
"properties": [{
"name": "accessRestriction",
"sequence": 1,
"properties": [{
"name": "code",
"sequence": 1
}
]
}
]
},
"actions": [
"edit",
"delete"
],
"region": {
"set1": {
"tiles": [{
"sequence": 1,
"properties": [{
"name": "create",
"sequence": 2
}, {
"name": "retrieve",
"sequence": 3
}
]
}
]
},
"set2": {
"tiles": [{
"sequence": 1,
"properties": [{
"name": "update",
"sequence": 4
}, {
"name": "delete",
"sequence": 5
}, {
"name": "system",
"sequence": 6,
"readonly": true
}
]
}
]
}
}
}
}
Example 3
Adding a multi value non-time valid dynamic record as a new tab which uses results component
-
Define a new tab for the dynamic record using results component within the recursive page floor plan
"tabs": [ ... { "sequence": 4, "tabResource": { "listResource": "TestDynamicRecordUsage" }, "actions": [ "add" ], "results": { "actions": [ "open", "remove" ], "title": { "properties": [ { "name": "Field1", "sequence": 1 } ] }, "set1": { "properties": [ { "name": "Field2", "sequence": 2 }, { "name": "Field3", "sequence": 3 } ] } } }, ... ]
-
Create a floor plan for dynamic record, that is, the page user uses to view and edit
In this example the following properties were used when creating the new floor plan for the 'TestDynamicRecordUsage' dynamic record on 'individualprovider' resource
-
Page Name: individualproviders-TestDynamicRecordUsage (format to be used: {object collection name}-{dynamic field usage name})
-
Template: View And Edit Object Hierarchical Recursive
-
(Floor plan) Resource: individualprovider
-
Priority: 1
-
Enabled: True
Payload:
{ "resource": "TestDynamicRecordUsage",
"floorplan_object_00": {
"title": {
"properties": [
{
"name": "Field1",
"sequence": 1
}
]
},
"actions": [
"edit",
"delete"
],
"region": {
"set1": {
"tiles": [
{
"sequence": 1,
"properties": [
{
"name": "Field1",
"sequence": 1
},
{
"name": "Field2",
"sequence": 1
},
{
"name": "Field3",
"sequence": 1
}
]
}
]
}
}
}
}
Field1, Field2 and Field3 are the records fields defined for the dynamic record. |