Add layouts task, Operator Interface notes and Edit Module stop lesson

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Clio Liu 2026-10-01 15:47:38 +10:00
parent e62d83b024
commit b1fc552725
5 changed files with 156 additions and 7 deletions

View file

@ -1,15 +1,18 @@
---
name: graphics
description: >-
CI Server R1.03 operator graphics: displays, symbols, layouts and HTML displays. Use when the
CI Server R1.03 operator graphics for the Operator Interface (desktop) and the HTML display
(web): displays, symbols, layouts. Use when the
user wants to create or change a display or symbol in the Edit Module (number field, text,
alarm overview, trend, buttons, actions, parameters, connecting a component to an item),
deploy or remove display files, export displays to HTML / Mobile Operator, open a display in a
web browser (localhost:8080/mobileoperator), validate, search or unlock displays (jwuiutl,
.lck files), find where displays, symbols and layouts are stored (DEPLOY folder,
Layouts.xml), change layouts, menus, toolbars or frames, build dataset forms (*Dia.xml), or
Layouts.xml), create or change layouts (operator window, navigation frame, main frame, alarm
banner, popup / faceplate window, kiosk or full-screen screen, menus, toolbars, status line,
frames, tabs, open a display in a frame or another layout), build dataset forms (*Dia.xml), or
use the AOG library (Advanced Operating Graphics, AOG_Style, AOG symbols, faceplates). Sources
IM 36K10C50-01EN, IM 36K10R30-01EN, IM 36K10C60-01EN.
IM 36K10C50-01EN, IM 36K10R30-01EN, IM 36K10C60-01EN and the installed Layouts.readme.
---
# Graphics: displays, symbols, layouts (R1.03)
@ -27,13 +30,17 @@ Rules:
Reloading the browser page logs out — use the display menu *View > Reload*, and the display
box to open other displays.
- `jwuiutl -vf`, `-u`, `-c`, `-a` rewrite or unlock files of **all** displays: only with approval.
- Ask the user to close the Edit Module before CI Server is stopped or restarted: otherwise the
next start fails (skill `system-check`, §3).
- The Operator Interface (desktop) reads `Layouts.xml` only at start: after layout changes,
restart it (a running client falls back to the current window and just reloads the display).
| Task | File | Status |
|---|---|---|
| Build a display in the Edit Module (text, number field, alarm overview, trend) and check the saved XML | `tasks/create-display.md` | verified |
| Deploy / remove display files, export HTML, validate and search with `jwuiutl` | `tasks/deploy-displays.md` | verified |
| Open and check a display in the browser (HTML display / Mobile Operator) | `tasks/deploy-displays.md` §4 | verified |
| Layouts (`Layouts.xml`), menus, toolbars, frames, dual screen | R30 summary §2 | from docs |
| Operator layouts (`Layouts.xml`): windows, menus, toolbars, frames, popups, kiosk screens; open displays in frames and layouts | `tasks/layouts.md` | verified (dual screen, per-user layout from docs) |
| Dataset forms (`*Dia.xml`) and the form description language | R30 summary §3 | from docs |
| Symbols, parameters, actions, localisation, record/playback | C50 summary §1, §4, §5 | from docs |
| AOG library (styles, symbols, faceplates, templates) | C60 summary | from docs |

View file

@ -0,0 +1,122 @@
---
task: Configure operator layouts (Layouts.xml): windows, menus, toolbars, frames, popups; open displays in frames and layouts
version: R1.03
source: Layouts.readme (installed, %TLS_WAP_PATH%\cfg\operatorInterfaces\DEPLOY\layouts); IM 36K10R30-01EN §1, §4.7; IM 36K10C50-01EN §4.12; practiced with CI-Eng-Sample (layout CIENG_Operator) in the Operator Interface (desktop) and the HTML display 2026-10-01
status: verified
---
# Operator layouts
A **layout** is a window of the Operator Interface: optional menu and toolbars, a **frame set**
(required) holding displays, and a status line. All layouts of a deployment are in one file,
`%TLS_WAP_PATH%\cfg\operatorInterfaces\DEPLOY\layouts\Layouts.xml`, used by **both** the
Operator Interface (desktop) and the HTML display (web). The complete option and command
reference is `Layouts.readme` in the same folder; `Layouts-original.xml` is the factory copy.
## 1. Rules
- `Layouts.xml` is shared by every operator: back it up and change it only with the user's
approval. Keep project layouts in a marked block so they can be removed cleanly (sample:
`examples/CI-Eng-Sample/layouts/layout.ps1` + `CIENG_Operator.xml`; the script checks the XML
is well-formed, keeps UTF-8 without BOM and CRLF, and `-Remove` restores the file byte for byte).
- **The Operator Interface reads `Layouts.xml` only when it starts.** After a change, close and
restart it. A running client does not know a new layout: opening a display in it only reloads
the current window ("blink"). The Edit Module also needs a restart to offer the new name in
the *Open display* action.
- Name the main frame **`default`**: the factory and AOG displays (alarm lists, faceplates,
toolbar commands) open their targets in a frame called `default`.
## 2. Structure
```xml
<layout name="<Name>" title="<text> $default" icon="poi.png" drawBorder="true"
sizingAllowed="true" minimizingAllowed="true" closingAllowed="true" alwaysOnTop="false"
initialPosition="centreScreen" initialSize="pixels" initialSizeWidth="1600"
initialSizeHeight="900" maximumOpen="1">
<menu> <menu-item name="m.file" label="File"> <menu-item … command="exit"/> </menu-item> … </menu>
<toolbar name="t1" floatable="false" position="top"> <toolbar-item icon="ciNavLeft32.png"
tooltip="Back to $" command="navigate back default"/> … </toolbar>
<frame-set rows="1*,fitDisplay"> <!-- main area, alarm banner below -->
<frame-set cols="fitDisplay,1*"> <!-- navigation left, main right -->
<frame name="nav" initialDisplay="<NavDisplay>" zoomingAllowed="false"/>
<frame name="default" initialDisplay="<Overview>" stackSize="10" zoom="fitDisplay"/>
</frame-set>
<frame name="alarmBannerFrame" initialDisplay="AOG_AlarmBanner" zoom="stretchDisplay"/>
</frame-set>
<status-line> <status-line-item type="statusText"/> <status-line-separator/> … </status-line>
</layout>
```
- `title`: `$<frame>` = title of the display in that frame (verified: *CI-Eng-Sample - Current
Alarm Overview*).
- Window: `initialPosition` (`centreScreen`, `atCursor`, `pixelsScreen2`, `centreLayout`, …),
`initialSize` (`pixels`, `screenSize`, `desktopSize`, `fitFrames`), `maximumOpen`, `modal`,
`alwaysOnTop`, print options.
- Frame sets: `rows` / `cols` with pixels, `n*` fractions or `fitDisplay`; nest freely; a `<tab>`
holds several frames as tabs (`tabPosition`, `maximumTabs`, `closeTabAllowed`). Frame options:
`name`, `initialDisplay` (= home display), `stackSize` (back/forward history), `zoom`
(`fitDisplay`, `stretchDisplay`, `<n>%`), `zoomingAllowed`, `scrollingAllowed`, `borderStyle`.
- Menu (max. two levels; `type` normal/check/radio/sub; `mnemonic`, `accelerator` like `F5`,
`CONTROL P`) and toolbar items (`icon` from the factory set such as `ciNavLeft32.png`,
`ciProAlar32.png`, `ciZoomFull32.png`; `type` combo/editableCombo/dropdownList) run commands:
| Command | Effect |
|---|---|
| `navigate to <frame> <display> [<zoom>] [<p>=<v>;…]` | Open a display in a frame (with parameters) |
| `navigate back/forward/up/home/history <frame>` | Frame history (`$` in the tooltip = target name) |
| `reload <frame>` / `reload all` | Reload displays (keeps the session in the HTML display) |
| `zoom <level> <frame>` | 0 = fit, 1 = 100 %, 10–1000 = relative % |
| `toggleSize fullScreen [n]` / `toggleSize x,y,WxH` | Full screen / given size and back |
| `print frame|frameWithSetup|preview|setup|selectFrame` | Printing (desktop only) |
| `login`, `logout`, `exit`, `toolbar`, `statusline`, `playback record|view`, `shell client|server <cmd>`, `lookfeel <class>`, `help` | |
The installed status line also uses item types `displayName`, `playbackIndicator` and
`dateTime`, which the readme does not list (ISS-042).
- `<translations name="nl">` blocks translate labels per locale (key = item name + `.label`).
## 3. Opening displays in frames and layouts
| From | How |
|---|---|
| Button / component (Edit Module, *Actions* sheet → *Open display*) | Display, **Layout** (empty = current window), **Frame**, parameters; stored as `<action type="actionActivateDisplay">` with `<type … value="ActivateSpecific"/>`, `<display>`, `<layout>`, `<layoutFrame>` |
| Menu / toolbar | `navigate to <frame> <display>` (current window only) |
| Login | User profile *Layout* and *Initial display* (Engineering Module, Authorization > Users); empty layout = `default` (from docs; not changed on the test system) |
| HTML display | URL `?d=<display>&l=<layout>` |
| Script on a component | *Execute command* with `ACTION <layout command>`, e.g. `ACTION toggleSize 50,50,710x520` |
Verified behaviour (desktop): a button with layout `CIENG_Operator` opened a **second window**
(1600 × 900, own menu/toolbar/frames); buttons without layout opened their display in the main
frame of the current window; **Back** returned. A button with layout `popup` opened a separate
window: always on top, only a close button, sized to the display (`fitFrames`), and minimised
together with the window that opened it — use popups only for small displays (faceplates,
setpoint dialogs).
## 4. Typical project layouts
- **Operator main window**: navigation frame + main frame `default` (+ tabs) + alarm banner,
project menu/toolbar, assigned to operators via the user profile *Layout*.
- **Kiosk / control-room screen**: `drawBorder="false"`, `alwaysOnTop="true"`,
`initialSize="screenSize"`, `closingAllowed="false"`, `minimizingAllowed="false"`.
`toggleSize fullScreen` covers the taskbar only when `alwaysOnTop="true"` (verified: with
`false` the title bar and taskbar stay).
- **Popups / faceplates**: small layout with one frame `default`, `initialSize="fitFrames"`,
`initialPosition="atCursor"`, `alwaysOnTop="true"`, `maximumOpen` > 1 for several faceplates
(factory: `popup`, `FixedPopup`, `ResizablePopup`, `faceplate`, `tuningpanel`, `Setpoint`,
`SelectMode`).
- **Several screens**: one layout per screen with `initialPosition="pixelsScreen2"` /
`centreScreen2`, or the dual-screen pattern of IM 36K10R30 §1.10.
## 5. HTML display differences
The browser window is the main layout (its size and window options are ignored); other layouts
open as windows inside the page; print, look-and-feel and the debug key are not supported; pick
the layout with `&l=`. Verified: `?d=CIENG_Tank&l=CIENG_Operator` showed the sample menu,
toolbar, navigation frame and banner.
## Verified (CI-Eng-Sample, 2026-10-01)
`layout.ps1` add / remove / add (removal identical to the original, backup kept); Operator
Interface restart required before the layout was found; desktop and web windows as described
above; F11 (`toggleSize fullScreen`) worked within the taskbar limits; after restarting the
Operator Interface the main window still used the factory `default` layout (Admin profile
unchanged).

View file

@ -83,6 +83,14 @@ prompt. Setup files (`*.sup`) are plain text (CRLF); edit them with the Setup Fi
(observed 2026-10-01: a run started 17:25 ran out at 09:52 the next morning after a sleep);
some processes (e.g. `umh`) stay attached, but `dssqld`/`itmval` fail and the log shows
`ISF-F-LIC_PROB, DATABASE Service is not licensed`.
- **Close the Edit Module (and Engineering Module) before stopping CI Server.** A local Edit
Module is attached to the BUS Service (`JWUIGED<pid>`, a `java.exe` in the user's session) and
does not stop with the service. The next start then aborts at once; `%TLS_LOG_PATH%\ci_start.log`
shows `CI Server is already running` / `umh_panic: durwfp, CI Server has not been properly
stopped, kill the following processes …` with the list (seen 2026-10-01: `JWUIGED12760` kept
UMH, DURTIM, UMHLOG … listed). Fix: close the Edit Module (or end that `java.exe`), then start
again. Avoid `durstp -k -p *` unless the user approves. The Operator Interface (desktop) and the
HTML display connect through the web server and were not in the list.
## 4. Time synchronization

View file

@ -8,7 +8,7 @@ status: display CIENG_Tank built by the user in the Edit Module (text, number fi
# Edit Module (R1.03)
The Edit Module draws displays and symbols for the operator interface (CI View) and the HTML
The Edit Module draws displays and symbols for the Operator Interface (desktop) and the HTML
display. Displays are XML files (`IM36K10R30-01EN.md` §1). Section numbers refer to the manual.
## 1. Window and files (§1)
@ -71,6 +71,14 @@ writable properties: value, item name parts, id, units, description, status numb
control status, option bits), layers, attributes, edit history (undo/redo), **actions** (open /
close display, execute command, read/write parameters; triggered by component events).
Open-display action (verified): `<action type="actionActivateDisplay">` with
`<type type="displayActivationType" value="ActivateSpecific"/>` (factory files also use
`ActivateReplace`), `<display>`, optional `<layout>` (empty = current window) and `<layoutFrame>`,
plus `<parameter>` entries for display parameters. Layout commands from a component:
*Execute command* `ACTION <command>` (e.g. `ACTION navigate back default`). A trend property
connected by mistake (`chart.attribute[00]` -> item) makes the Operator Interface show
*Short attribute name ... is invalid* when the display opens; remove the connection.
## 5. Symbols (§5)
*File > New Symbol*; put it on a palette (attributes sheet); external user-defined parameters

View file

@ -3,7 +3,7 @@ manual: IM 36K10R30-01EN
title: Graphic Display Setup
edition: 3rd Edition, Sep. 2023
version: R1.03
status: HTML display (Mobile Operator) verified with CI-Eng-Sample display CIENG_Tank 2026-10-01; layout file and form folders checked read-only; layout editing, dataset forms, form language and dual screen from docs
status: HTML display (Mobile Operator) and a project layout (CIENG_Operator) verified in the Operator Interface (desktop) and the HTML display 2026-10-01; dataset forms, form language and dual screen from docs
---
# Graphic Display Setup (R1.03)
@ -41,6 +41,10 @@ empty = `deploy`).
*Layout* field (Engineering Module, Authorization > Users); empty = `default`.
- Dual screen (§1.10): copy the layout and the banner display as `<name>_1` / `<name>_2` and let
each banner open its main display in its own layout.
- **Verified (2026-10-01)**: sample layout `CIENG_Operator` (skill `graphics`, task `layouts.md`):
second window from an *Open display* action, own menu/toolbar/frames, `$default` title, popup
layout, F11; the Operator Interface reads `Layouts.xml` only at start. The installed
`Layouts.readme` is the full reference for options and commands.
- **Installed layouts**: `mobile`, `default`, `sxga1f/r`, `uxga1f/r`, `wxga1f/r`, `wsxga1f/r`,
`wsxgap1f/r`, `wuxga1f/r`, `ResizablePopup`, `FixedPopup`, `popup`, `Splash`, `tuningpanel`,
`faceplate`, `SelectMode`, `Setpoint`, `mapviewer` (`f` fixed / `r` resizable per screen
@ -69,7 +73,7 @@ property files and language codes (§3.5).
`https://<host>:8443/auth/mbl`); user profile fields used: password, authorization group, ASA,
shelving group, process areas, logoff timeout, deployment, initial display, locale (layout
not). Login control: `dssana.sup` interface *mobile operator*.
- **Verified**: `http://localhost:8080/mobileoperator/?d=CIENG_Tank` showed the CI View-like
- **Verified**: `http://localhost:8080/mobileoperator/?d=CIENG_Tank` showed the operator
frame (menu, navigation buttons, alarm banner, status line) and the display; the number field
updated live; the alarm overview listed the sample's alarms. **Reloading the browser page ends
the session** (login again); use the display's own menu *View > Reload* instead (keeps the