From b1fc5527259fc3759a92c701de1538ffe5f20cec Mon Sep 17 00:00:00 2001 From: cliu Date: Thu, 1 Oct 2026 15:47:38 +1000 Subject: [PATCH] Add layouts task, Operator Interface notes and Edit Module stop lesson Co-Authored-By: Claude Opus 5.5 --- .claude/skills/graphics/SKILL.md | 15 ++- .claude/skills/graphics/tasks/layouts.md | 122 +++++++++++++++++++++++ .claude/skills/system-check/SKILL.md | 8 ++ knowledge/manuals/IM36K10C50-01EN.md | 10 +- knowledge/manuals/IM36K10R30-01EN.md | 8 +- 5 files changed, 156 insertions(+), 7 deletions(-) create mode 100644 .claude/skills/graphics/tasks/layouts.md diff --git a/.claude/skills/graphics/SKILL.md b/.claude/skills/graphics/SKILL.md index 61e3bee..4ff3909 100644 --- a/.claude/skills/graphics/SKILL.md +++ b/.claude/skills/graphics/SKILL.md @@ -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 | diff --git a/.claude/skills/graphics/tasks/layouts.md b/.claude/skills/graphics/tasks/layouts.md new file mode 100644 index 0000000..bd84314 --- /dev/null +++ b/.claude/skills/graphics/tasks/layouts.md @@ -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 + + … + … + + + + + + + + … + +``` + +- `title`: `$` = 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 `` + holds several frames as tabs (`tabPosition`, `maximumTabs`, `closeTabAllowed`). Frame options: + `name`, `initialDisplay` (= home display), `stackSize` (back/forward history), `zoom` + (`fitDisplay`, `stretchDisplay`, `%`), `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 [] [

=;…]` | Open a display in a frame (with parameters) | +| `navigate back/forward/up/home/history ` | Frame history (`$` in the tooltip = target name) | +| `reload ` / `reload all` | Reload displays (keeps the session in the HTML display) | +| `zoom ` | 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 `, `lookfeel `, `help` | | + + The installed status line also uses item types `displayName`, `playbackIndicator` and + `dateTime`, which the readme does not list (ISS-042). +- `` 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 `` with ``, ``, ``, `` | +| Menu / toolbar | `navigate to ` (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=&l=` | +| Script on a component | *Execute command* with `ACTION `, 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). diff --git a/.claude/skills/system-check/SKILL.md b/.claude/skills/system-check/SKILL.md index 98dddef..c2a15c8 100644 --- a/.claude/skills/system-check/SKILL.md +++ b/.claude/skills/system-check/SKILL.md @@ -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`, 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 diff --git a/knowledge/manuals/IM36K10C50-01EN.md b/knowledge/manuals/IM36K10C50-01EN.md index d201a5f..6b8ed8a 100644 --- a/knowledge/manuals/IM36K10C50-01EN.md +++ b/knowledge/manuals/IM36K10C50-01EN.md @@ -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): `` with +`` (factory files also use +`ActivateReplace`), ``, optional `` (empty = current window) and ``, +plus `` entries for display parameters. Layout commands from a component: +*Execute command* `ACTION ` (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 diff --git a/knowledge/manuals/IM36K10R30-01EN.md b/knowledge/manuals/IM36K10R30-01EN.md index 5ec5a2e..d52aaec 100644 --- a/knowledge/manuals/IM36K10R30-01EN.md +++ b/knowledge/manuals/IM36K10R30-01EN.md @@ -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 `_1` / `_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://: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