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.
DisplayLayout provide:
<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> <p><strong>Legend:</strong><br/> (1) Layout List<br/> (2) Panel Configuration — <em>Panel Regions</em><br/> (3) Page Assignment Table<br/> (4) Platform Previews</p> |
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 |
Column | Target | Fallback |
---|---|---|
Page | Desktop (WPF/HTML5) | Required |
Mobile | Mobile portrait | Uses Page |
MobileLandscape | Mobile landscape | Uses Mobile |
<ac:structured-macro ac:name="tip"> ac:rich-text-body To remove a region on mobile, enter underscore (_) instead of leaving blank. Empty fields inherit from Page configuration. </ac:rich-text-body> </ac:structured-macro>
Option | Behavior | Use Case |
---|---|---|
Stretch | Full width | Standard header |
Left | Align left | Logo placement |
Center | Center content | Title focus |
Right | Align right | User controls |
Test layouts before deployment:
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();
Property | Description | Type |
---|---|---|
Region | Layout area identifier | Enum |
Docking | Attachment position | String |
Page | Desktop display | Display |
Mobile | Mobile display | Display |
MobileLandscape | Landscape display | Display |
HorizontalAlign | Alignment option | Enum |
Splitter | Resizable divider | Boolean |
Row/Column | Grid position | Integer |
RowSpan/ColumnSpan | Grid spanning | Integer |
Header: Navigation Bar
Menu: Equipment List (with splitter)
Content: Main Display (changes)
Footer: Status Bar
Header: Company Logo (center)
Content: Full Screen Display
Footer: Hidden (_)
Header: Title Only
Menu: Hidden (_)
Content: Dashboard Display
Submenu: Quick Actions
Footer: Timestamp
Desktop Menu: NavigationPanel
Mobile Menu: _ (removed)
Layout not loading:
Region not showing:
Mobile layout issues:
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");
}
Field | Purpose | Auto-Updated |
---|---|---|
ID | Unique identifier | Yes |
VersionID | Change tracking | Yes |
DateCreated | Creation audit | Yes |
DateModified | Last change | Yes |
The metadata tracking pattern applies consistently across all configuration tables in the platform.