Layouts organize display on regions, navigation patterns, and platform-adaptive rendering.
Platform → UI Technology→ Clients | WebAssembly | Symbols | Drawing | Responsive | Layouts
Layouts provide the structural framework for operator interfaces, defining persistent regions (Header, Menu, Footer) that remain stable while the Content area changes during navigation.
This architecture enables consistent navigation patterns, implements server-side responsive design (RESS), and manages rendering engine selection through centralized configuration.
Layouts divide the interface into five possible regions, each with specific purposes and behaviors:
Region | Purpose | Navigation Role | Platform Adaptation |
---|---|---|---|
Header | Branding, title | Primary/major navigation topics | Always visible |
Menu (Left) | Asset tree, pages | Secondary navigation, asset selection | Hamburger on mobile |
Content | Working area | Display target (avoid navigation here) | Adapts to available space |
Submenu (Right) | Tools, filters | Contextual navigation | Hidden on mobile |
Footer | Status, alarms | Limited navigation, typically status | Often hidden on mobile |
The platform supports three distinct navigation patterns, each serving different operational needs:
Changes what displays in the Content region while maintaining the layout structure:
Switches the entire framework including all regions:
Enables in-page navigation without changing the main display:
Industrial applications span from small touch panels to video walls. Navigation must adapt:
Form Factor | Navigation Strategy |
---|---|
Small Touch Panel | Simplified header, no side menus |
Tablet | Hamburger menu, touch-optimized |
Desktop Monitor | Full regions, mouse-optimized |
Video Wall | Minimal chrome, content-focused |
Three hierarchical namespaces orchestrate the UI on the client side:
Namespace | Scope | Access Pattern | Primary Functions |
---|---|---|---|
@Client | Session context | @Client.Property | Current layout, user info, session duration |
@Layout | Available layouts | @Layout.LayoutName | List layouts, open, close, switch |
@Display | Available displays | @Display.DisplayName | List displays, open in Content (default) or specific region |
This hierarchy enables programmatic navigation: @Client contains session state, @Layout manages frameworks, and @Display handles content.
Layouts are where Server-Side Responsive (RESS) technology is implemented. The server identifies the client type at runtime and delivers platform-specific content:
Based on client identification, layouts can:
For RESS concepts, see .
Layouts orchestrate which rendering engine serves each display:
Engine | Target Platform | Characteristics |
---|---|---|
WPF | Windows Desktop | High performance, full .NET access |
HTML5 | Web, Mobile | Cross-platform, WebAssembly |
The layout configuration determines:
Role-Based:
@Client.OpenLayout(userRole == "Operator" ? "OperatorLayout" : "EngineerLayout");
Device-Based:
@Client.OpenLayout(isMobile ? "MobileLayout" : "DesktopLayout");
Task-Based:
@Client.OpenLayout(isAlarmActive ? "AlarmLayout" : "NormalLayout");
Standard (to Content):
@Display.Equipment.Motor1.Open();
Region-Specific:
@Display.StatusBar.OpenIn("Footer");