Floor Plan Configuration
A customer can change certain aspects of a page or application by changing or updating the floor plans and its properties. These may include:
-
Adding or removing elements from the page including dynamic fields and records
-
Re-ordering the elements on the page or the tabs within the page
-
Updating the search criteria e.g. adding additional search component to the page or expanding existing quick search criteria
-
Updating existing sort or adding additional sort criteria giving user the ability to re-order the results based on a' criteria
-
Adding pre-filters to limit the number of search results
-
Loading a different floor plan based on a condition
Customizing a floor plan
A floor plan can be configured by using
-
Floor plan configuration page within the UI i.e. Configuration → System → Floor plans (Available for Policies and OIG)
-
Using the API on the floorplans resource
Creating a new floor plan
A custom floor plan can only be created for pages that already exists i.e. for which a system floor plan is already available.
For the custom floor plan the following properties are to be configured:
Code: Unique code to be defined for each custom floor plan
Description: The description for the custom floor plan
Page Name:
-
Use the same page name as the existing system floor plan for customized pages, the page may not be rendered if a different page name is used
-
For dynamic records recursive pages use \{object collection name}-\{dynamic field usage name} e.g. individualproviders-TestDynamicRecordUsage
Payload:
-
The updated payload containing the JSON structure that describes how the page should be rendered
-
Refer the individual template pages for JSON structure and available components within the template
Context based Condition: The context object condition under which the floor plan is used, add if required
Role based Condition: The role condition under which the floor plan is used, add if required
Priority: The relative priority when evaluating the floor plan conditions, add a numeric value else the plan will be given least priority
Template: Use the same page name as the existing system floor plan i.e.
-
'Search Object' for pages using Search Object - List View template
-
'Search Table' for pages using Search Object - Table View template
-
'View And Edit Object List' for pages using View and Edit Object - List template
-
'View And Edit Object Hierarchical Recursive' for pages using View and Edit Object - Recursive template
Resource: use the same values as defined in the system floor plan, using a different value may cause floor plan to not load or default to the system floor plan.
For more details on conditions refer Presentation configuration page
Key points to keep in consideration while configuring a floor plan
-
System floor plans cannot deleted or edited
-
Floor plans for new resources for which no existing page is available cannot be created
-
Application menu cannot be re-configured
-
Same floor plan template has to be used for custom floor plans i.e. if a system floor plan is defined for a resource to use search object - list view template then the user defined floor plan must use the same template for the search page, it cannot be re-configured to use search object - table view template
Customizing Floor Plan Components
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 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 the array/object and reference type of properties, it is necessary to specify the exact attribute (nested property) on which the search must be 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 i.e. amountInterpretation
"quickSearch": {
"properties": [{
"name": "code",
"sequence": 1
}, {
"name": "amountInterpretation",
"sequence": 2
}
]
}
Example 3: Configuring quick search for a reference type property using nested properties i.e. 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 is used to provide the ability to have multiple search criteria
Displayed as a hyperlink which will display 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
Examples:
Example 1: Create an advanced search on resource properties - code(string), amountInterpretation(string) and a single value non time valid dynamic field i.e. 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 i.e. scheduleDefination
"advancedSearch": {
"properties": [{
"name": "code",
"sequence": 1
}, {
"name": "scheduleDefinition",
"refType": {
"type": "scheduledefinitions",
"filter": "type.eq('P').or.type.eq('T')"
},
"sequence": 2
}
]
}
Note: List of values floor plan should be available for the reference property
Auto Fetch
Can be used to perform default search on page load i.e. auto fetch records
Boolean property i.e. 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/Disable auto fetch for a search or table page
Pre-Filter
Pre filter criteria can be defined to limit the results on a search page i.e. by defining a condition and only the results that meet the pre-filter criteria are displayed
Executed for all the searches as 'and' condition i.e. with quick and advanced search
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:
-
Setting preFilter to 'brand.code.eq('ABC') for claims search page, will shown claims having the brand code 'ABC'.
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 i.e. 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 i.e. if the user already provided an entry in the simple or advanced search, this input will be 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 i.e. 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.
The user can choose to display 5, 10 (default), 20, 50 or 100 results by using the 'Show' drop down list.
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/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
Examples:
Example 1: Configuring actions, title, description and labels i.e.
-
Allowing user to view, edit and delete a result.
-
Title set to 'code' property
-
Description set to 'message' property
-
Two labels i.e. 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
i.e. 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 i.e. 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
Examples:
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 i.e. 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 i.e. 'SVNTV_CHAR' and 'SVNTV_FC' (flex code) in Set 2 of the region[source,json]
"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 i.e. '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
Examples:
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"
}
}
]
}
}
}
]
Note: For adding subResource tab with results component user must define a View and Edit Object - Recursive template based page for the subResource i.e. 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
}
]
}
}
}
}
]
Step 1: 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
}
]
}
}
}
]
Step 2: Create a floor plan for accessRestrictionGrant sub-resource i.e. the page user will use 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
Step 1: 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
}
]
}
}
},
...
]
Step 2: Create a floor plan for dynamic record i.e. the page user will use 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
-
(Floorplan) 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
}
]
}
]
}
}
}
}
Note: Field1, Field2 and Field3 are the records fields defined for the dynamic record