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:
parent
e62d83b024
commit
b1fc552725
5 changed files with 156 additions and 7 deletions
|
|
@ -1,15 +1,18 @@
|
||||||
---
|
---
|
||||||
name: graphics
|
name: graphics
|
||||||
description: >-
|
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,
|
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),
|
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
|
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,
|
web browser (localhost:8080/mobileoperator), validate, search or unlock displays (jwuiutl,
|
||||||
.lck files), find where displays, symbols and layouts are stored (DEPLOY folder,
|
.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
|
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)
|
# 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
|
Reloading the browser page logs out — use the display menu *View > Reload*, and the display
|
||||||
box to open other displays.
|
box to open other displays.
|
||||||
- `jwuiutl -vf`, `-u`, `-c`, `-a` rewrite or unlock files of **all** displays: only with approval.
|
- `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 |
|
| 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 |
|
| 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 |
|
| 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 |
|
| 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 |
|
| 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 |
|
| Symbols, parameters, actions, localisation, record/playback | C50 summary §1, §4, §5 | from docs |
|
||||||
| AOG library (styles, symbols, faceplates, templates) | C60 summary | from docs |
|
| AOG library (styles, symbols, faceplates, templates) | C60 summary | from docs |
|
||||||
|
|
|
||||||
122
.claude/skills/graphics/tasks/layouts.md
Normal file
122
.claude/skills/graphics/tasks/layouts.md
Normal 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).
|
||||||
|
|
@ -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);
|
(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
|
some processes (e.g. `umh`) stay attached, but `dssqld`/`itmval` fail and the log shows
|
||||||
`ISF-F-LIC_PROB, DATABASE Service is not licensed`.
|
`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
|
## 4. Time synchronization
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ status: display CIENG_Tank built by the user in the Edit Module (text, number fi
|
||||||
|
|
||||||
# Edit Module (R1.03)
|
# 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.
|
display. Displays are XML files (`IM36K10R30-01EN.md` §1). Section numbers refer to the manual.
|
||||||
|
|
||||||
## 1. Window and files (§1)
|
## 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 /
|
control status, option bits), layers, attributes, edit history (undo/redo), **actions** (open /
|
||||||
close display, execute command, read/write parameters; triggered by component events).
|
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)
|
## 5. Symbols (§5)
|
||||||
|
|
||||||
*File > New Symbol*; put it on a palette (attributes sheet); external user-defined parameters
|
*File > New Symbol*; put it on a palette (attributes sheet); external user-defined parameters
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ manual: IM 36K10R30-01EN
|
||||||
title: Graphic Display Setup
|
title: Graphic Display Setup
|
||||||
edition: 3rd Edition, Sep. 2023
|
edition: 3rd Edition, Sep. 2023
|
||||||
version: R1.03
|
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)
|
# Graphic Display Setup (R1.03)
|
||||||
|
|
@ -41,6 +41,10 @@ empty = `deploy`).
|
||||||
*Layout* field (Engineering Module, Authorization > Users); empty = `default`.
|
*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
|
- 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.
|
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`,
|
- **Installed layouts**: `mobile`, `default`, `sxga1f/r`, `uxga1f/r`, `wxga1f/r`, `wsxga1f/r`,
|
||||||
`wsxgap1f/r`, `wuxga1f/r`, `ResizablePopup`, `FixedPopup`, `popup`, `Splash`, `tuningpanel`,
|
`wsxgap1f/r`, `wuxga1f/r`, `ResizablePopup`, `FixedPopup`, `popup`, `Splash`, `tuningpanel`,
|
||||||
`faceplate`, `SelectMode`, `Setpoint`, `mapviewer` (`f` fixed / `r` resizable per screen
|
`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,
|
`https://<host>:8443/auth/mbl`); user profile fields used: password, authorization group, ASA,
|
||||||
shelving group, process areas, logoff timeout, deployment, initial display, locale (layout
|
shelving group, process areas, logoff timeout, deployment, initial display, locale (layout
|
||||||
not). Login control: `dssana.sup` interface *mobile operator*.
|
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
|
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
|
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
|
the session** (login again); use the display's own menu *View > Reload* instead (keeps the
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue