Organize displays into responsive layouts.
Reference → Modules → Displays → UI → Client Settings | Draw | Images | Layouts | List | Localization | Symbols | Themes | Units Conversion
Displays Layouts (Reference) the Operator UI's structural framework, organizing displays into regions that persist during navigation while the Content area changes with each page.
Layout provide:
Table of Contents maxLevel 2 minLevel 2 indent 10px exclude Steps style none
The Layout configuration interface has four main areas:
HTML |
---|
<table class="relative-table" style="width: 95%; border: 1px solid #ccc; border-collapse: collapse;">
<colgroup>
<col style="width: 18%;" />
<col style="width: 41%;" />
<col style="width: 41%;" />
</colgroup>
<tbody>
<tr>
<!-- (1) Layout List -->
<td rowspan="6" style="border:1px solid #ccc; vertical-align: top; padding:6px;">
<p><strong>(1) Layout List</strong></p>
<p>Search, +, ×, sort</p>
<p>Startup<br/>Dashboard<br/>Layout1<br/>Layout2<br/>...</p>
</td>
<!-- (2) Panel Configuration -->
<td colspan="2" style="border:1px solid #ccc; padding:6px;">
<p><strong>(2) Panel Configuration</strong><br/><em>Panel Regions</em></p>
<table style="width:100%; border:1px solid #ccc; border-collapse: collapse; text-align:center;">
<tr>
<td colspan="3" style="border:1px solid #ccc; background:#f4f5f7;">Header</td>
<td style="border:1px solid #ccc;">Header Edit: <strong>Stretch</strong> / Left / Center / Right</td>
</tr>
<tr>
<td rowspan="2" style="border:1px solid #ccc; background:#f4f5f7;">Menu</td>
<td style="border:1px solid #ccc; background:#f4f5f7;">Content</td>
<td style="border:1px solid #ccc; background:#f4f5f7;">Submenu</td>
<td></td>
</tr>
<tr>
<td colspan="2" style="border:1px solid #ccc; background:#f4f5f7;">Footer</td>
<td>Footer Edit: Stretch / Left / Center / <strong>Right</strong></td>
</tr>
</table>
</td>
</tr>
<!-- Spacer Row -->
<tr>
<td colspan="2" style="border:none; height:15px;"></td>
</tr>
<!-- (3) Page Assignment Table -->
<tr>
<td colspan="2" style="border:1px solid #ccc; padding:6px;">
<p><strong>(3) Page Assignment Table</strong></p>
<table style="width:100%; border:1px solid #ccc; border-collapse: collapse;">
<tr style="background:#f4f5f7;">
<th style="border:1px solid #ccc;">Region</th>
<th style="border:1px solid #ccc;">Page</th>
<th style="border:1px solid #ccc;">Mobile</th>
<th style="border:1px solid #ccc;">Tablet</th>
<th style="border:1px solid #ccc;">Description</th>
</tr>
<tr>
<td style="border:1px solid #ccc;">Header</td>
<td style="border:1px solid #ccc;">Header</td>
<td style="border:1px solid #ccc;"></td>
<td style="border:1px solid #ccc;"></td>
<td style="border:1px solid #ccc;">Display for the Header panel</td>
</tr>
<tr>
<td style="border:1px solid #ccc;">Footer</td>
<td style="border:1px solid #ccc;"></td>
<td style="border:1px solid #ccc;"></td>
<td style="border:1px solid #ccc;"></td>
<td style="border:1px solid #ccc;">Display for the Footer panel</td>
</tr>
<tr>
<td style="border:1px solid #ccc;">Menu</td>
<td style="border:1px solid #ccc;"></td>
<td style="border:1px solid #ccc;"></td>
<td style="border:1px solid #ccc;"></td>
<td style="border:1px solid #ccc;">Display for the Menu panel</td>
</tr>
<tr>
<td style="border:1px solid #ccc;">Submenu</td>
<td style="border:1px solid #ccc;"></td>
<td style="border:1px solid #ccc;"></td>
<td style="border:1px solid #ccc;"></td>
<td style="border:1px solid #ccc;">Display for the Submenu panel</td>
</tr>
<tr>
<td style="border:1px solid #ccc;">Content</td>
<td style="border:1px solid #ccc;">MainPage</td>
<td style="border:1px solid #ccc;"></td>
<td style="border:1px solid #ccc;"></td>
<td style="border:1px solid #ccc;">Display for the Content panel</td>
</tr>
</table>
</td>
</tr>
<!-- (4) Platform Previews (merged header) -->
<tr>
<td colspan="2" style="border:1px solid #ccc; padding:6px; text-align:center; background:#f4f5f7;">
<strong>(4) Platform Previews</strong>
</td>
</tr>
<!-- Preview Rows with labeled preview areas -->
<tr>
<td style="border:1px solid #ccc; padding:10px; text-align:center; background:#fafafa;">
<strong>Desktop Web Preview</strong>
<div style="margin-top:6px; border:1px dashed #bbb; padding:10px;">Preview area</div>
</td>
<td style="border:1px solid #ccc; padding:10px; text-align:center; background:#fafafa;">
<strong>Desktop Windows WPF</strong>
<div style="margin-top:6px; border:1px dashed #bbb; padding:10px;">Preview area</div>
</td>
</tr>
<tr>
<td style="border:1px solid #ccc; padding:10px; text-align:center; background:#fafafa;">
<strong>Mobile Preview</strong>
<div style="margin-top:6px; border:1px dashed #bbb; padding:10px;">Preview area</div>
</td>
<td style="border:1px solid #ccc; padding:10px; text-align:center; background:#fafafa;">
<strong>Tablet Preview</strong>
<div style="margin-top:6px; border:1px dashed #bbb; padding:10px;">Preview area</div>
</td>
</tr>
</tbody>
</table> |
Action | Method | Result |
---|---|---|
Add Layout | Click + button | Create new layout |
Delete Layout | Select and click × | Remove selected |
Select Layout | Click layout name | Load for editing |
Search | Use search box | Filter list |
Sort | Click sort button | Reorder list |
Configure which panels are active and their behavior:
Region | Enable/Disable | Alignment Options |
---|---|---|
Header | Always enabled | Stretch/Left/Center/Right |
Menu | Optional | Fixed left position |
Content | Always enabled | Auto-size center |
Submenu | Optional | Fixed right position |
Footer | Optional | Stretch/Left/Center/Right |
Assign pages to each active region:
Assignment Rules | Behavior |
---|---|
Page column filled | Display assigned page |
Mobile/Tablet empty | Inherit from Page column |
Mobile/Tablet with name | Platform-specific override |
Any invalid name | Hide region on that platform |
Check layout appearance across platforms:
Desktop Configuration | Mobile Result | Tablet Result |
---|---|---|
All 5 regions active | Header + Content only | Header + Menu + Content |
Complex menu | Hamburger menu | Simplified menu |
Footer with status | Hidden footer | Minimal footer |
Wide submenu | Hidden | Narrow tools panel |
Region | Purpose | Position | Dynamic |
---|---|---|---|
Header | Logo, title, main navigation | Top | No |
Menu | Primary navigation links | Left | Optional splitter |
Content | Main display area | Center | Yes |
Submenu | Secondary navigation | Right | Optional |
Footer | Copyright, links, info | Bottom | No |
Standard Application |
---|
|
Kiosk Mode |
---|
|
Dashboard |
---|
|
Option | Behavior | Use Case |
---|---|---|
Stretch | Full width | Standard header |
Left | Align left | Logo placement |
Center | Center content | Title focus |
Right | Align right | User controls |
Desktop Menu: NavigationPanel
Mobile Menu: _ (removed) or replaced
Set default at Displays → Client Settings:
Initial Execution Conditions
??? Layout: [Select Layout]
Change entire layout:
csharp
@Client.OpenLayout("AlternateLayout");
Change content only:
csharp
@Client.OpenDisplay("NewDisplay");
// Or
@Display.NewDisplay.Open();
User Role Based
csharp
public void SetLayoutByRole()
{
string role = @Security.CurrentUser.Role;
string layout = role switch
{
"Operator" => "OperatorLayout",
"Engineer" => "EngineeringLayout",
"Manager" => "ManagerLayout",
_ => "DefaultLayout"
};
@Client.OpenLayout(layout);
}
csharp
public void SetDayNightLayout()
{
bool isNight = DateTime.Now.Hour >= 18 ||
DateTime.Now.Hour < 6;
@Client.OpenLayout(isNight ? "NightLayout" : "DayLayout");
}
Layout not loading:
Region not showing:
Mobile layout issues:
Page Tree | ||
---|---|---|
|
A layout defines the application window's size and arranges the display components in the runtime application. When planning your displays, decide if you need elements like a menu bar or toolbar consistently appearing at the top of your application window. Sometimes, a single layout suffices for managing the information in the application.
In the layout, the Content display is the one that changes upon an open display command. For instance, many new solutions incorporate a default 'Startup' layout. In this layout, the 'MainPage' display, listed in the Content area, is what changes when the application receives a command to open a new display, while the header and menu areas remain unchanged.
On this page:
Table of Contents | ||||
---|---|---|---|---|
|
Layouts are pre-defined structures that organize displays frames on a screen, positioning elements like the header, menu, content section, submenu, and footer. They organize information on pages and act as a blueprint for interfaces. You can select an existing Layout to edit or create a new one.
To create a new Layout:
Navigate to Displays → Layouts.
Click the button on the data grid control to open the 'New Layout' popup window.
Define the name for the layout and a description.
Press Ok button to finish the layout creation and close the popup window.
On Displays → Layouts, after creating a new layout, you can customize it by defining the display objects for layout regions. The Layout Panel organizes information into displays by configuring regions such as Header, Menu, Content, Submenu, and Footer.
The displayed objects on each Layout are selected from the data grid below the panel. Each selected object is defined on the Layout Region configuration items and its respective values for Page, Mobile, and MobileLandscape.
The Header and Footer regions can be aligned with Stretch, Left, Center, or Right options.
In contrast, the Menu, Content, and Submenu regions adjust automatically based on the Header and Footer settings.
A resized bar can also be added to the Menu region for dynamic adjustment, facilitating a structured layout and enhanced navigation.
To use a Layout, you must map a page to a region on data grid. This procedure ensures that your layout displays relevant information based on the underlying data.
Navigate to Displays → Layouts.
Create or Select a Layout:
Under the Page header, click on the empty and then "...".
The Select Object Dialog window will open. Choose the desired option.
Tip | ||
---|---|---|
| ||
By default, the Web, Mobile, and Landscape clients will use the page configured for the section (if that page is portable or web-compatible), even if the configuration field is left blank. If you do not want that page to be used, you need to remove it by adding an underscore (_) instead of just leaving the configuration blank. For example, if you defined a page for the Menu section that you don't want to have an equivalent on the Mobile client, just add the underscore character (_) in the field for Menu Mobile. When running the solution on that type of client, the system will not open any page for that section. |
Previewing layouts provides a crucial step in the development process, allowing you to catch design flaws or functional issues early. By following these steps, you ensure that your layouts meet your application’s visual and usability standards.
Navigate to Displays → Layouts.
Choose the layout you want to preview from the available options. Ensure that the layout is already mapped to the relevant page and data region (as discussed previously).
Under the Layout Panel table, there will be four different previews: Desktop Web Preview; Desktop on Windows WPF; Mobile; and Mobile Landscape.
Inspect the arrangement of components, colors, fonts, and overall design. Ensure that the layout aligns with your application’s requirements.
To configure the solution startup to load a Layout, go to the Displays → Client Settings. Under Initial Execution Conditions, select the desired Layout item from the Layout menu. The drop-down menu reflects the layouts defined in the Layouts page.
Refer to Displays Client Settings (Reference) for more details.
The runtime method Client.OpenLayout("<layoutName>") replaces the current Layout on the Client Window, loading the new one.
If you don't need to change all the Layout panels, only the Content (main region), it's not necessary to create or open new layouts.
The methods Client.OpenDisplay("MyDisplay") and Display.MyDisplay.Open() will open the MyDisplay page using the current layout, just replacing the page in the Content Region, to the new display.
Layout Settings Table | |
---|---|
Property | Description |
ID | Unique identifier for each Layout Region. |
VersionID | Specifies the panel version. Increases with each change made to the panel. |
Region | Denotes specific areas within an application or page for content or actions. Header: This region appears at the top of the layout and includes the logo, site title, main navigation links, search bar, and possibly user account controls. Its purpose is to contain the key navigation elements. Its functionality is to identify the site or app and facilitate primary navigation and quick access. Content: This region typically contains the primary information or functionalities that users interact with, such as text, images, forms, and other interactive elements. Purpose: This is the main area where the core content is displayed. Functionality: This region is central to user interaction and displays critical information. Menu: This region includes links or buttons that navigate to different sections or pages within the application or website. It often appears on the left side of the screen. Purpose: It contains the main navigation menu. Functionality: It provides primary navigation and helps users move between major sections. Example: Left-side Menu panel. Submenu: This region provides additional navigation options or links related to the main content, often displayed to the right of the main content area. Purpose: It houses optional or secondary navigation elements. Functionality: It enhances user navigation by providing context-specific links or actions. Example: The right-side Submenu panel. Footer: This region is located at the bottom of the layout and includes copyright information, contact links, social media icons, and other ancillary information. Its purpose is to display supplementary information and links. Its functionality is to provide supporting information and site-wide links. Examples include the privacy policy, terms of service, site map, and back-to-top links. |
Docking | Related to the attachment of an element or window to a portion of the screen. |
Page | Specifies which display to assign to each region of WPF and HTML5 pages. |
Mobile | Specifies which display to assign to each region of a mobile client. |
MobileLandscape | Specifies which display to assign to each region of a mobile client in horizontal orientation. |
HorizontalAlign | Alignment of an element along the horizontal axis (stretch, left, center, right). |
Splitter | A UI control that allows users to adjust the size of adjacent panes or areas. |
Row | Represents a horizontal grouping of data or controls in a grid or table. |
RowSpan | Indicates the number of rows a cell should span across in a grid or table. |
Column | A vertical division in a grid or table, like a column in a spreadsheet. |
ColumnSpan | Indicates the number of columns a cell should extend over in a grid or table. |
DateCreated | The date and time when the panel was created. |
DateModified | The date and time when the panel was last modified. |
Description | A text description of the layout. |
In this section: