Skip to main content
Version: 8.3

Perspective - Menu Tree

Component Palette Icon:

Description​

The Menu Tree component can be configured to allow users to navigate pages in a Perspective Session. The Menu Tree defines a hierarchical view of information that can be configured to expand submenu branches and menu items. The subitems can be further expanded to expose more subitems if any exist, and collapsed to hide subitems.

Each menu item has its own path, for example, "Western Region/CA/San Jose" that determines its location in the Menu Tree. The Separation Character property (by default its forward-slash), dictates how the paths are broken up.

Properties​

Most Properties have binding options. For more information on Bindings, see Types of Bindings in Perspective. This section only documents the Props Category of properties. The other Categories are described on the Perspective Component Properties page.

NameDescriptionProperty Type
itemsConfigure items representing nodes in a subtree from this option. If defined, a submenu will branch from here with these options. Click to see the items properties.array
layoutAlignmentSpecifies which side of the root menu is aligned to. Submenu slides in from the opposite side.value: boolean
enabledIf true, this component is currently enabled to perform its actions.value: boolean
itemStyleSets style options for the menu tree component. You can also specify a style class.object
headerStyleSets style options for the menu tree component. You can also specify a style class.object
backActionStyleSets style options for the menu tree component. You can also specify a style class.object
backActionTextText to display in prompt to go back to the root menu. You can also specify a style class.value: string
styleSets a style for this component. Full menu of style options is available for text, background, margin and padding, border, shape and miscellaneous. You can also specify a style class.object

items Properties​

NameDescriptionProperty Type
targetA url (external), or mounted path to a page. If "items" is empty (no subtree to this item), this will navigate to that location.value: string
itemsConfigure items representing nodes in a subtree from this option. If defined, a submenu will branch from here with these options.array
navIconIcon image appended to the right of the menu item.
  • path: Shorthand path to icon source, in format: library/IconName. The materials icon library is a the primary source for icons, see https://fonts.google.com/icons?selected=Material+Icons. Value is string.
  • color: Color of the icon. Can also assign the "fill" property in styles. Can be chosen from color wheel, chosen from color palette, or entered as RGB or HSL value. See Color Selector.
object
labelMenu item label.
  • text: Text to display for this option. Value is string.
  • icon: Image icon added to the right of the label text.
object
visibleWhether this option should be displayed in the menu tree.value: boolean
enabledIf true, this option is currently enabled to perform its action or render its submenu.value: boolean
showHeaderWhether to display this option's text as a header/title for its submenu.value: boolean
styleSets a style for this item. Full menu of style options is available for text, background, margin and padding, border, shape and miscellaneous. You can also specify a style class.object
resetOnClickWhen true, clicking on the item will cause the Menu Tree to reset back to its root level. Useful in cases where you want to provide your users with a quick way to return to the start of the menus.value: boolean
backActionTextText to display in prompt to go back to the previous menu. This configuration property will override the text set to display in the root backActionText property. If left blank, menu items default to the root backActionText. value: string

Scripting​

See the Perspective - Menu Tree Scripting page for the full list of scripting functions available for this component.

Examples​

Example 1 - Basic Menu Tree​

You can use links to go to URL links outside your project or internal to your project. For this example assume you have some screens defined in the project page configuration (home gear). Assume the URL's for those are as follows:

  • /screen_1
  • /screen_2
  • /screen_3
  • /screen_b
  • /screen_a1
  • /screen_a2
note

Images on the left side of the Menu Tree are associated with the label.icon.path Images on the right side of the Menu Tree are associated with the navIcon.path target property is the link to the screen to navigate to.

Top Level Properties

PropertyValue
props.items.0.navIcon.pathmaterial/trending_flat
props.items.0.navIcon.color#6C6C6C
props.items.0.label.textMenu Numbers
props.items.0.label.icon.pathmaterial/list
props.items.0.label.showHeaderfalse
props.items.1.navIcon.pathmaterial/trending_flat
props.items.1.navIcon.color#008000
props.items.1.label.textMenu Letters
props.items.1.label.icon.pathmaterial/settings
props.items.1.label.showHeadertrue
props.items.2.navIcon.pathmaterial/stop
props.items.2.navIcon.color#FF8A8A
props.items.2.label.textNo Target Link
props.items.2.label.icon.pathmaterial/stop_screen_sharing
props.items.2.label.showHeadertrue

Sub Level Properties of Item 0

PropertyValue
props.items.0.items.0.target/screen_1
props.items.0.items.0.navIcon.pathmaterial/cloud
props.items.0.items.0.navIcon.color#00D9D9
props.items.0.items.0.label.textItem 1
props.items.0.items.0.label.icon.pathmaterial/chat
props.items.0.items.0.label.showHeadertrue
props.items.0.items.1.target/screen_2
props.items.0.items.1.navIcon.pathmaterial/cloud_queue
props.items.0.items.1.label.textItem 2
props.items.0.items.1.label.showHeadertrue
props.items.0.items.2.target/screen_3
props.items.0.items.2.navIcon.pathmaterial/cloud_circle
props.items.0.items.2.label.textItem 3
props.items.0.items.2.label.showHeadertrue

Sublevel Properties of Item 1

PropertyValue
props.items.1.items.0.navIcon.pathmaterial/trending_flat
props.items.1.items.0.label.textSub Menu A
props.items.0.items.0.label.showHeadertrue
props.items.1.items.1.target/screen_b
props.items.1.items.1.navIcon.pathmaterial/data_usage
props.items.1.items.1.label.textItem B
props.items.1.items.0.items.0.target/screen_a1
props.items.1.items.0.items.0.navIcon.pathmaterial/group
props.items.1.items.0.items.0.navIcon.color#6C6C6C
props.items.1.items.0.items.0.label.textItem A 1
props.items.1.items.0.items.0.label.showHeadertrue
props.items.1.items.0.items.1.target/screen_a2
props.items.1.items.0.items.1.navIcon.pathmaterial/group_add
props.items.1.items.0.items.1.navIcon.color#6C6C6C
props.items.1.items.0.items.1.label.textItem A 2
props.items.1.items.0.items.1.label.showHeadertrue

Example 2 - Tree Navigation​

The items property for this component is complex. It is an "object" type that has as many levels as you want. Here is an example of the JSON used to create the two level image above. You can copy the text below and paste it into the items property of your Menu Tree component. No code is needed to make this component navigate.

This example assumes several things in order to work:

  • Target fields that are blank (HMI and Administration) do not navigate when clicked.
  • There are several pages created in the project:
    • /overview
    • /lines
    • /packaging
    • /userPermissions
    • /userEdit
  • There are icons stored in ignition.
    • A hamburger menu icon with a path of "menu_list"
    • A greater than symbol with a path of "chevron_right"
items Property
[
{
"target": "",
"items": [
{
"target": "/overview",
"items": [],
"navIcon": {
"path": ""
},
"label": {
"text": "Overview",
"icon": {
"path": ""
}
},
"showHeader": true
},
{
"target": "/lines",
"items": [],
"navIcon": {
"path": ""
},
"label": {
"text": "Lines",
"icon": {
"path": ""
}
},
"showHeader": true
},
{
"target": "/packaging",
"items": [],
"navIcon": {
"path": "Packaging"
},
"label": {
"text": "Repeater",
"icon": {
"path": ""
}
},
"showHeader": true
}
],
"navIcon": {
"path": "chevron_right",
"color": "#6C6C6C"
},
"label": {
"text": "HMI",
"icon": {
"path": "menu_list"
}
},
"showHeader": true
},
{
"target": "",
"items": [
{
"target": "/userPermissions",
"items": [],
"navIcon": {
"path": ""
},
"label": {
"text": "Edit Permissions",
"icon": {
"path": ""
}
},
"showHeader": true
},
{
"target": "/userEdit",
"items": [],
"navIcon": {
"path": ""
},
"label": {
"text": "Edit Users",
"icon": {
"path": ""
}
},
"showHeader": true
}
],
"navIcon": {
"path": "chevron_right",
"color": "#6C6C6C"
},
"label": {
"text": "Administration",
"icon": {
"path": "menu_list"
}
},
"showHeader": true
}
]