Knowledge: sample operator HMI findings (layouts, display XML, users), ISS-068..075
- layouts.md: tab set must be the last child of its frame set (web); desktop tab frames ignore zoom (navigate ... stretchDisplay); web activates the last tab loaded; web tab labels = display title; one layout command at a time; connectionState breaks the web layout (corrects 6.3); per-user layout verified on desktop and web - create-display.md: new section "Writing display XML directly" (text size, rounding, arc angles clockwise on both clients, Clicked b1, web item attributes, asDateTime, server-side command as CIX_PROCESS with group OPERATOR, alarm overview columns / white area) - deploy-displays.md: 8-display sample scripts; jwuiutl -v re-saves files - trend.md: CIENG_TrendLab as history, cieng_feed.ps1, 50-pen hairline trade-off, component opaque, micro trend "Record not found" without history - users-groups.md: PASSWORD "" for an empty password; sample user CIENG; open session blocks group removal (DSSSDA03 stopped) - configure-audit.md, L25 / R30 / C50 summaries, SKILL.md, issues ISS-068..075, progress rows - Every statement tested on CI Server R1.03.00 2026-10-02..06 (desktop and web, test display and test layouts removed afterwards) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
266e9e3710
commit
ecf1f226f2
12 changed files with 145 additions and 49 deletions
|
|
@ -35,7 +35,8 @@ switching anything off.
|
||||||
|
|
||||||
`ITEM_DF` / `SUB_ITEM_DF` / `EXTERNAL_ALARM_DF` field `AUDIT_INFO` (default 0). It switches the
|
`ITEM_DF` / `SUB_ITEM_DF` / `EXTERNAL_ALARM_DF` field `AUDIT_INFO` (default 0). It switches the
|
||||||
`ITEM.*` / `SUB-ITEM.*` events raised by ITEM Service for **operator writes**. Verified on
|
`ITEM.*` / `SUB-ITEM.*` events raised by ITEM Service for **operator writes**. Verified on
|
||||||
`CI-Eng-Sample.PUMP1.MODE` with the buttons on display `CIENG_Tank`:
|
`CI-Eng-Sample.PUMP1.MODE` with the buttons on display `CIENG_Tank` (2026-10-01; re-checked
|
||||||
|
2026-10-06 with *Manual* / *Auto* on `CIENG_Control`: same events, user and old / new value):
|
||||||
- `AUDIT_INFO` 1: a button write 0 → 1 stored `ITEM` `VALUE` `MODIFY` `OPER-INTERFACE`, user
|
- `AUDIT_INFO` 1: a button write 0 → 1 stored `ITEM` `VALUE` `MODIFY` `OPER-INTERFACE`, user
|
||||||
`ADMIN`, old 0 / new 1, plus `ITEM` `STATUS` `MODIFY` (13 → 9).
|
`ADMIN`, old 0 / new 1, plus `ITEM` `STATUS` `MODIFY` (13 → 9).
|
||||||
- `AUDIT_INFO` 0: the write 1 → 0 left **no** audit record.
|
- `AUDIT_INFO` 0: the write 1 → 0 left **no** audit record.
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,11 @@ NAME,DESCRIPTION,ACTION_NAME_1,ACTION_NAME_2,ACTION_NAME_3,ACTION_NAME_4
|
||||||
|
|
||||||
Required: `NAME` (≤ 32) and `AUTH_GROUP` (an existing group). Optional: `DESCRIPTION`,
|
Required: `NAME` (≤ 32) and `AUTH_GROUP` (an existing group). Optional: `DESCRIPTION`,
|
||||||
`PROCESS_AREAS` (e.g. `"1-999"`), `LOGOFF_TIMEOUT` (minutes, 0–999), `INITIAL_DISPLAY`,
|
`PROCESS_AREAS` (e.g. `"1-999"`), `LOGOFF_TIMEOUT` (minutes, 0–999), `INITIAL_DISPLAY`,
|
||||||
`LOCALE`, `ENTERPRISE`, playback fields. A password is **not** required on import; set it in
|
`LOCALE`, `ENTERPRISE`, `LAYOUT`, playback fields. Password: without a `PASSWORD` field the user
|
||||||
the Engineering Module (the user does this, not Claude). Template:
|
is created **without any password set** and every logon fails with *DSS-E-UNK_USER Unknown user
|
||||||
|
name/password combination*; set the password in the Engineering Module (the user does this, not
|
||||||
|
Claude). A user with an **empty** password is created by giving `PASSWORD ""` explicitly
|
||||||
|
(tested 2026-10-06, sample user `CIENG`: logon on desktop and web). Template:
|
||||||
|
|
||||||
```
|
```
|
||||||
@FIELDS
|
@FIELDS
|
||||||
|
|
@ -81,6 +84,20 @@ NAME
|
||||||
|
|
||||||
## Test system (2026-09-30)
|
## Test system (2026-09-30)
|
||||||
|
|
||||||
Group `CIENG_VIEWER` and user `CIENG_TEST` (no password, logoff 15 min) loaded with 0 errors,
|
Group `CIENG_VIEWER` and user `CIENG_TEST` (no `PASSWORD` field, logoff 15 min) loaded with 0
|
||||||
exported back as defined, then removed (1 + 1 removed, 0 errors). The group is part of
|
errors, exported back as defined, then removed (1 + 1 removed, 0 errors). Logon was not tried;
|
||||||
CI-Eng-Sample; the sample creates no users.
|
such a user cannot log on (see *User*). The group is part of CI-Eng-Sample.
|
||||||
|
|
||||||
|
## Sample user (2026-10-06)
|
||||||
|
|
||||||
|
`examples/CI-Eng-Sample/08b_user_df.qli`: user `CIENG`, `PASSWORD ""`, factory group `OPERATOR`,
|
||||||
|
`LAYOUT` `CIENG_Operator`, `INITIAL_DISPLAY` `CIENG_Overview`; logs on to that layout on the desktop
|
||||||
|
and on the web (no `?l=` needed). Removal (`85_remove_auth_group_df.qli`) removes the user before
|
||||||
|
the group.
|
||||||
|
|
||||||
|
**Log out all sessions of a user before removing its group**: while a session is open the group
|
||||||
|
is still referenced in `USER_VAL` and `dssqld -r` fails with *DSSP-E-NODEL … in dataset
|
||||||
|
USER_VAL*; logging out did not free it at once, and a retry in that state stopped the process
|
||||||
|
`DSSSDA03` (*DUR-F-BAD_SIZE, Negative size not allowed*; later requests failed with
|
||||||
|
*DUR-F-UNKNOWN_ATT*) until CI Server was restarted (2026-10-06, ISS-073). After a restart the
|
||||||
|
group was removed without error. `USER_VAL` exports only its header (no way to list sessions).
|
||||||
|
|
|
||||||
|
|
@ -38,10 +38,11 @@ Rules:
|
||||||
| 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 |
|
||||||
|
| Write display XML directly / with the sample generator (text size, rounding, arc angles, item attributes for the web, server-side command, alarm overview columns) | `tasks/create-display.md` (*Writing display XML directly*), `examples/CI-Eng-Sample/displays/generator/` | verified 2026-10-06 |
|
||||||
| 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 |
|
||||||
| Trend: pen sources (history group, aggregates), every pen and chart setting, desktop vs HTML display, 50-pen web workaround (`add_trend_spares.ps1`), Micro Trend | `tasks/trend.md` | verified (desktop); web workaround verified; Micro Trend open (ISS-055) |
|
| Trend: pen sources (history group, aggregates), every pen and chart setting, desktop vs HTML display, 50-pen web workaround (`add_trend_spares.ps1`), Micro Trend | `tasks/trend.md` | verified (desktop); web workaround verified; Micro Trend open (ISS-055) |
|
||||||
| 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 |
|
||||||
| Operator layouts (`Layouts.xml`): windows, menus, toolbars, frames, popups, kiosk screens; open displays in frames and layouts; every parameter and command, desktop vs web (§6) | `tasks/layouts.md` | verified (dual screen, per-user layout from docs) |
|
| Operator layouts (`Layouts.xml`): windows, menus, toolbars, frames, popups, kiosk screens; open displays in frames and layouts; every parameter and command, desktop vs web (§6) | `tasks/layouts.md` | verified (per-user layout 2026-10-06; dual screen 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 |
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,15 @@
|
||||||
---
|
---
|
||||||
task: Build a display in the Edit Module and check the saved file
|
task: Build a display in the Edit Module and check the saved file
|
||||||
version: R1.03
|
version: R1.03
|
||||||
source: IM 36K10C50-01EN §1.2, §1.7, §2, §4.8.1; practiced on CI-Eng-Sample (display CIENG_Tank) 2026-10-01
|
source: IM 36K10C50-01EN §1.2, §1.7, §2, §4.8.1; practiced on CI-Eng-Sample (display CIENG_Tank) 2026-10-01; display XML written by the sample generator and checked on desktop and web 2026-10-02 to 2026-10-06 (installed web client code, component definitions in DEPLOY\components)
|
||||||
status: verified
|
status: verified
|
||||||
---
|
---
|
||||||
|
|
||||||
# Build a display (Edit Module)
|
# Build a display (Edit Module)
|
||||||
|
|
||||||
The user draws; Claude gives the steps and checks the result. Example = the sample display
|
The user draws; Claude gives the steps and checks the result. The sample displays
|
||||||
`examples/CI-Eng-Sample/displays/CIENG_Tank.xml`.
|
`examples/CI-Eng-Sample/displays/CIENG_*.xml` are not drawn but written by a generator
|
||||||
|
(`displays/generator/`); *Writing display XML directly* lists the rules they follow.
|
||||||
|
|
||||||
## Steps for the user
|
## Steps for the user
|
||||||
|
|
||||||
|
|
@ -38,8 +39,8 @@ grep -n "<html>\|<width>\|<height>\|itemName\|itemId\|<source" <DisplayName>.xml
|
||||||
- `<html>true</html>` = HTML mode; `<width>`/`<height>` must be set for the HTML display.
|
- `<html>true</html>` = HTML mode; `<width>`/`<height>` must be set for the HTML display.
|
||||||
- Item connections: `<itemName>` + `<itemId>` (node.group.number…); trend pens:
|
- Item connections: `<itemName>` + `<itemId>` (node.group.number…); trend pens:
|
||||||
`<source type="sourceID" uri="ci:/item/<item>"/>` (`uri=""` = empty pen).
|
`<source type="sourceID" uri="ci:/item/<item>"/>` (`uri=""` = empty pen).
|
||||||
- Write a fixed value with a button (verified in the HTML display, `CIENG_Tank` *Manual (0)* /
|
- Write a fixed value with a button (verified in the HTML display, buttons *Manual* / *Auto* on
|
||||||
*Auto (1)*): `<button>` › `<data>` › `<action type="actionSetItemAttribute">` with
|
the former `CIENG_Tank` and, since 2026-10-06, on `CIENG_Control`): `<button>` › `<data>` › `<action type="actionSetItemAttribute">` with
|
||||||
`<event type="event" event="On action"/>`, `<filter type="filter"><value>1.0</value></filter>`
|
`<event type="event" event="On action"/>`, `<filter type="filter"><value>1.0</value></filter>`
|
||||||
and a `<connection>` with `<direction>2</direction>`, `<itemName>`, `<itemAttribute>ItemValue`
|
and a `<connection>` with `<direction>2</direction>`, `<itemName>`, `<itemAttribute>ItemValue`
|
||||||
(the factory popups use `ItemValueOW`, presumably the overwrite variant like `itmval -o`; not tested). The factory popup `AOG_SetNumberPV` uses the
|
(the factory popups use `ItemValueOW`, presumably the overwrite variant like `itmval -o`; not tested). The factory popup `AOG_SetNumberPV` uses the
|
||||||
|
|
@ -51,6 +52,25 @@ grep -n "<html>\|<width>\|<height>\|itemName\|itemId\|<source" <DisplayName>.xml
|
||||||
Sample displays therefore carry no `<itemId>`; for displays made in the Edit Module, reconnect
|
Sample displays therefore carry no `<itemId>`; for displays made in the Edit Module, reconnect
|
||||||
or remove the ids after reloading items (ISS-052).
|
or remove the ids after reloading items (ISS-052).
|
||||||
|
|
||||||
|
## Writing display XML directly (verified 2026-10-02 to 2026-10-06)
|
||||||
|
|
||||||
|
The Edit Module stores one element per component (`<text>`, `<number>`, `<rectangle>`, `<arc>`,
|
||||||
|
`<button>`, `<slider>` …, names as in `DEPLOY\components\*.xml`), its position as centre plus half
|
||||||
|
sizes, and the connections in `<data>`. Files written by hand or by a script load in the Edit
|
||||||
|
Module, the Operator Interface and the HTML display, if these rules are kept (sample generator:
|
||||||
|
`examples/CI-Eng-Sample/displays/generator/`):
|
||||||
|
|
||||||
|
| Topic | Rule (R1.03.00) |
|
||||||
|
|---|---|
|
||||||
|
| Text / number size | With `<keepOriginalSize>false` the HTML export **scales the text to its box** (e.g. `scale(0.98, 3.80)` in a 40 px box); with `true` it is drawn at its font size, centred on the box (tested 2026-10-06) |
|
||||||
|
| Rectangle rounding | `roundingX` / `roundingY` are a **fraction 0..1** of the half width / height; values above 1 draw an ellipse, on the desktop and on the web (tested 2026-10-06) |
|
||||||
|
| Arc angles | `startAngle` / `extentAngle` in degrees **clockwise** from 3 o'clock (screen y down), negative values allowed; the same on both clients, fixed or connected (tested 2026-10-06: 0/90 = lower-right quarter) |
|
||||||
|
| Click on a shape | event `Clicked b1` (buttons: `On action`), e.g. an *Open display* action on a rectangle (2026-10-02) |
|
||||||
|
| Item attributes for the web | `ItemValue`, `ItemDesc`, `ItemStatusMnemonic`, `ItemUpdTime` (epoch seconds), `ItemHHL` / `ItemHL` / `ItemLL` / `ItemLLL` (limits), `ItemName` (micro trend pens), list in the web client code; `ItemDescription` does not exist (sample faceplate and Control tab, 2026-10-06) |
|
||||||
|
| Showing a time | number field with `<asDateTime>true` connected to `ItemUpdTime`; a `dateTimeField` shows the value on the web only when editable (2026-10-02/06) |
|
||||||
|
| Server-side command | `<action type="actionExecuteCommand">` with `<command>` and `<onServer>true</onServer>` runs on the CI Server node as the service account `CIX_PROCESS`, also from the web; a user in the factory group `OPERATOR` may use it (tested 2026-10-06, sample live-data *Start*) |
|
||||||
|
| Alarm overview | `autoFit` true in a tab that is hidden while loading squeezes all columns to ~0 px on the web: set `autoFit` false and give `column<Name>Width`; `column…Visible` for `AlarmAttribute` is an array property (a plain value fails the HTML export with `ClassCastException`); the empty part of the list stays **white** on both clients (no property; web: `jquery.dataTables.css` forces it); web rows are 20 px at a 14 px font (2026-10-02/06) |
|
||||||
|
|
||||||
## Verified (CIENG_Tank, 2026-10-01)
|
## Verified (CIENG_Tank, 2026-10-01)
|
||||||
|
|
||||||
Text `CI-Eng-Sample Tank 1`, number field on `TANK1.LEVEL` (live: 72 → 61), alarm overview
|
Text `CI-Eng-Sample Tank 1`, number field on `TANK1.LEVEL` (live: 72 → 61), alarm overview
|
||||||
|
|
@ -58,4 +78,6 @@ Text `CI-Eng-Sample Tank 1`, number field on `TANK1.LEVEL` (live: 72 → 61), al
|
||||||
`CI-Eng-Sample.TANK1.LEVEL [CIENG_SCAN10S]` = highest-priority storage group). In the HTML
|
`CI-Eng-Sample.TANK1.LEVEL [CIENG_SCAN10S]` = highest-priority storage group). In the HTML
|
||||||
display the trend drew no line: a trend needs 50 visible pens to draw on the web (ISS-041;
|
display the trend drew no line: a trend needs 50 visible pens to draw on the web (ISS-041;
|
||||||
workaround and all trend settings in `trend.md`). The sample file is now padded with
|
workaround and all trend settings in `trend.md`). The sample file is now padded with
|
||||||
`add_trend_spares.ps1` (49 spares) and draws in the browser too.
|
`add_trend_spares.ps1` (49 spares) and draws in the browser too. `CIENG_Tank` was replaced by the
|
||||||
|
generated `CIENG_*` displays on 2026-10-06; they carry no `<itemId>` and found the recreated items
|
||||||
|
after a full `remove.cmd` / `load.cmd` cycle in a fresh session (2026-10-06).
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
---
|
---
|
||||||
task: Deploy, remove, export, validate and search displays; open them in the browser
|
task: Deploy, remove, export, validate and search displays; open them in the browser
|
||||||
version: R1.03
|
version: R1.03
|
||||||
source: IM 36K10C50-01EN §1.5; IM 36K10R30-01EN §1.1, §4; practiced on CI-Eng-Sample 2026-10-01
|
source: IM 36K10C50-01EN §1.5; IM 36K10R30-01EN §1.1, §4; practiced on CI-Eng-Sample 2026-10-01; sample operator HMI (8 displays) and validate test 2026-10-06
|
||||||
status: verified
|
status: verified
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -12,17 +12,19 @@ No admin rights needed (`C:\Users\Public\Yokogawa\tls\wap`). `jwuiutl.cmd` is in
|
||||||
|
|
||||||
## 1. Deploy / remove (sample scripts)
|
## 1. Deploy / remove (sample scripts)
|
||||||
|
|
||||||
`examples/CI-Eng-Sample/displays/deploy_displays.cmd`: copies `CIENG_Tank.xml` to
|
`examples/CI-Eng-Sample/displays/deploy_displays.cmd`: copies the 8 sample displays
|
||||||
|
(`CIENG_Header`, `CIENG_Overview`, … `CIENG_TankFaceplate`) to
|
||||||
`%TLS_WAP_PATH%\cfg\operatorInterfaces\DEPLOY\displays\` and runs
|
`%TLS_WAP_PATH%\cfg\operatorInterfaces\DEPLOY\displays\` and runs
|
||||||
`jwuiutl.cmd -e HTML -i -f DEPLOY CIENG_Tank` (HTML into
|
`jwuiutl.cmd -e HTML -i -f DEPLOY <name>` for each (HTML into
|
||||||
`%TLS_WAP_PATH%\mobileoperator\operatorInterfaces\DEPLOY\displays\`).
|
`%TLS_WAP_PATH%\mobileoperator\operatorInterfaces\DEPLOY\displays\`).
|
||||||
`remove_displays.cmd` deletes both files (close the display in the Edit Module first).
|
`remove_displays.cmd` deletes both files of each (close the displays in the Edit Module first).
|
||||||
Deploy after `load.cmd` so the items exist.
|
Deploy after `load.cmd` so the items exist. Verified 2026-10-06: remove → 0 sample files left,
|
||||||
|
deploy → exactly the 8 XML + 8 HTML files.
|
||||||
|
|
||||||
For another display: copy `<name>.xml` into `DEPLOY\displays` and export it the same way.
|
For another display: copy `<name>.xml` into `DEPLOY\displays` and export it the same way.
|
||||||
Displays with symbols also need the symbol files in `DEPLOY\symbols`.
|
Displays with symbols also need the symbol files in `DEPLOY\symbols`.
|
||||||
|
|
||||||
## 2. Validate (report only)
|
## 2. Validate (re-saves the validated files)
|
||||||
|
|
||||||
```
|
```
|
||||||
cmd /c "jwuiutl.cmd -d -v -i -l <scratch>\validate.txt"
|
cmd /c "jwuiutl.cmd -d -v -i -l <scratch>\validate.txt"
|
||||||
|
|
@ -33,6 +35,13 @@ display <name>:` with `Problem: <component>: Connected item is not found (<item>
|
||||||
`*** Display locked <name>` (open in the Edit Module or a stale `.lck`; `-u` unlocks — with
|
`*** Display locked <name>` (open in the Edit Module or a stale `.lck`; `-u` unlocks — with
|
||||||
approval), displays saved by a newer version. `-vf` re-saves all displays — only with approval.
|
approval), displays saved by a newer version. `-vf` re-saves all displays — only with approval.
|
||||||
|
|
||||||
|
**`-v` also re-saves** (tested 2026-10-06: `jwuiutl -d -v -i -l … CIENG_Test` reported *No problems
|
||||||
|
found* and rewrote the file, 9 618 → 11 191 bytes: default values dropped, positions moved into
|
||||||
|
attributes - same content). Run it on copies, or redeploy the source files afterwards. On
|
||||||
|
2026-10-02 a validation of eight displays once hung on one of them and left `<name>.lck` and
|
||||||
|
`<name>.xml.tmp` (stop the `java` process, delete both files); not reproduced on 2026-10-06
|
||||||
|
(ISS-075).
|
||||||
|
|
||||||
## 3. Search
|
## 3. Search
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
---
|
---
|
||||||
task: Configure operator layouts (Layouts.xml): windows, menus, toolbars, frames, popups; open displays in frames and layouts
|
task: Configure operator layouts (Layouts.xml): windows, menus, toolbars, frames, popups; open displays in frames and layouts
|
||||||
version: R1.03
|
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; parameter-by-parameter test (§6) on both clients 2026-10-02, web behaviour also read from the installed web client code (mobileoperator fasttools.min.js)
|
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; parameter-by-parameter test (§6) on both clients 2026-10-02, web behaviour also read from the installed web client code (mobileoperator fasttools.min.js); sample operator HMI (layouts CIENG_Operator with a tab set and CIENG_Popup, user CIENG) and test layouts on both clients 2026-10-06
|
||||||
status: verified (parameters tested on desktop and web 2026-10-02 except print orientation/margins, playback, multi-screen positions and the maximumTabs limit for new tabs)
|
status: verified (parameters tested on desktop and web 2026-10-02 except print orientation/margins, playback, multi-screen positions and the maximumTabs limit for new tabs)
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -27,7 +27,8 @@ reference is `Layouts.readme` in the same folder; `Layouts-original.xml` is the
|
||||||
toolbar commands) open their targets in a frame called `default`. At login the user profile's
|
toolbar commands) open their targets in a frame called `default`. At login the user profile's
|
||||||
*Initial display* replaces the `initialDisplay` of frame `default` (desktop; web: `?d=`).
|
*Initial display* replaces the `initialDisplay` of frame `default` (desktop; web: `?d=`).
|
||||||
- Layouts used by **both** clients must have the web-compatible shape (§6.1): per frame set at
|
- Layouts used by **both** clients must have the web-compatible shape (§6.1): per frame set at
|
||||||
most one `n*` division, and at most one nested frame set, placed in that `n*` slot. Always
|
most one `n*` division, and at most one nested frame set, placed in that `n*` slot. A `<tab>`
|
||||||
|
set must be the **last** child of its frame set (§6.6). Always
|
||||||
set `title` and `drawBorder`.
|
set `title` and `drawBorder`.
|
||||||
- Menu items whose command has an on/off state (`toolbar`, `statusline`, `playback record`)
|
- Menu items whose command has an on/off state (`toolbar`, `statusline`, `playback record`)
|
||||||
**must** be `type="check"`: otherwise the Operator Interface fails at start
|
**must** be `type="check"`: otherwise the Operator Interface fails at start
|
||||||
|
|
@ -89,11 +90,11 @@ reference is `Layouts.readme` in the same folder; `Layouts-original.xml` is the
|
||||||
|---|---|
|
|---|---|
|
||||||
| 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>` |
|
| 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) |
|
| 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) |
|
| Login | User profile *Layout* and *Initial display* (Engineering Module, Authorization > Users, or `USER_DF` `LAYOUT` / `INITIAL_DISPLAY`); empty layout = `default`. Verified 2026-10-06 with the sample user `CIENG` (layout `CIENG_Operator`, display `CIENG_Overview`): applied on the desktop **and** at web logon without `?l=` |
|
||||||
| HTML display | URL `?d=<display>&l=<layout>` |
|
| HTML display | URL `?d=<display>&l=<layout>` |
|
||||||
| Script on a component | *Execute command* with `ACTION <layout command>`, e.g. `ACTION toggleSize 50,50,710x520` |
|
| Script on a component | *Execute command* (client side) with `ACTION <layout command>`, e.g. `ACTION toggleSize 50,50,710x520`. Desktop only: the web client ignores it (2026-10-02). **One command at a time**: a second `ACTION` while the first runs fails with *IllegalStateException: A command is already being executed* (desktop, tested 2026-10-06 with two `ACTION reload all` on one button) |
|
||||||
|
|
||||||
Verified behaviour (desktop): a button with layout `CIENG_Operator` opened a **second window**
|
Verified behaviour (desktop, 2026-10-01, with the former sample layout `CIENG_Operator`): a button with that layout opened a **second window**
|
||||||
(1600 × 900, own menu/toolbar/frames); buttons without layout opened their display in the main
|
(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
|
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
|
window: always on top, only a close button, sized to the display (`fitFrames`), and minimised
|
||||||
|
|
@ -119,8 +120,10 @@ setpoint dialogs).
|
||||||
|
|
||||||
The browser window is the main layout (its size and window options are ignored); other layouts
|
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
|
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,
|
the layout with `&l=`, or let the user profile choose it (§3). Verified 2026-10-06:
|
||||||
toolbar, navigation frame and banner.
|
`?l=CIENG_Operator` (and a plain logon as `CIENG`) showed the sample menu, navigation toolbar,
|
||||||
|
header, tab set and banner. The web client does not zoom displays (§6.1), so size them for the
|
||||||
|
browser window.
|
||||||
|
|
||||||
## 6. Parameter reference: desktop vs web (tested 2026-10-02)
|
## 6. Parameter reference: desktop vs web (tested 2026-10-02)
|
||||||
|
|
||||||
|
|
@ -139,7 +142,7 @@ browser and in the web client code. "n/a" = the browser window is the main layou
|
||||||
| `n*` fractions (`2*,1*`) | **not honoured** (sizes follow the displays, e.g. 800:88 px) | every `n*` becomes the *main* panel; two `n*` overwrite each other, only the last display shows |
|
| `n*` fractions (`2*,1*`) | **not honoured** (sizes follow the displays, e.g. 800:88 px) | every `n*` becomes the *main* panel; two `n*` overwrite each other, only the last display shows |
|
||||||
| Divisions per frame set | any | first = top/left, last = bottom/right, `n*` = main; more do not fit |
|
| Divisions per frame set | any | first = top/left, last = bottom/right, `n*` = main; more do not fit |
|
||||||
| Nested `frame-set` | anywhere, several | **always placed in the parent's main panel**; two nested sets, or one in an edge position, break the page (stays on *Loading…*) |
|
| Nested `frame-set` | anywhere, several | **always placed in the parent's main panel**; two nested sets, or one in an edge position, break the page (stays on *Loading…*) |
|
||||||
| Frame `zoom` (`fitDisplay`, `stretchDisplay`, `n%`) | applied | ignored (always 100 %) |
|
| Frame `zoom` (`fitDisplay`, `stretchDisplay`, `n%`) | applied, **except for frames inside a `<tab>`** (shown at 100 %; use `navigate to <frame> <display> fitDisplay|stretchDisplay`, tested 2026-10-06) | ignored (always 100 %) |
|
||||||
| `borderStyle` | drawn | only with `drawBorder="true"`; every value except `none` becomes a 1 px line |
|
| `borderStyle` | drawn | only with `drawBorder="true"`; every value except `none` becomes a 1 px line |
|
||||||
| `stackSize` | honoured | honoured; default when missing = 1 |
|
| `stackSize` | honoured | honoured; default when missing = 1 |
|
||||||
| `zoomingAllowed="false"` | `zoom` commands on that frame do nothing | zoom not supported at all |
|
| `zoomingAllowed="false"` | `zoom` commands on that frame do nothing | zoom not supported at all |
|
||||||
|
|
@ -172,7 +175,7 @@ browser and in the web client code. "n/a" = the browser window is the main layou
|
||||||
| Toolbar `left` / `right` | shown | **not shown** |
|
| Toolbar `left` / `right` | shown | **not shown** |
|
||||||
| Toolbar `bottom` | **not shown** (two layouts tried) | not shown |
|
| Toolbar `bottom` | **not shown** (two layouts tried) | not shown |
|
||||||
| Toolbar item `combo`, `editableCombo`, `dropdownList` | shown | shown |
|
| Toolbar item `combo`, `editableCombo`, `dropdownList` | shown | shown |
|
||||||
| Status line, all 8 types | shown | shown |
|
| Status line, all 8 types | shown | 7 shown; **`connectionState` breaks the layout**: at login `createStatusline` fails (*Cannot read properties of undefined (reading 'split')*) and no frame is created (tested 2026-10-06, ISS-068) |
|
||||||
|
|
||||||
### 6.4 Commands
|
### 6.4 Commands
|
||||||
|
|
||||||
|
|
@ -221,7 +224,10 @@ Factory pattern (works on both clients): a `<tab name="default">` holding frames
|
||||||
|
|
||||||
| Parameter | Desktop | Web |
|
| Parameter | Desktop | Web |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| Tab labels | display title (the profile's initial display goes into the first tab) | display name |
|
| Tab labels | display title (the profile's initial display goes into the first tab) | display **title** (`_` until the display is loaded; verified 2026-10-06 with the sample tabs) |
|
||||||
|
| Frame `zoom` on a tab frame or on `<tab>` | ignored (100 %); `navigate to <tab frame> <display> stretchDisplay` applies it (sample: toolbar, menu and an *On entry* `ACTION` of the banner) | not supported |
|
||||||
|
| Active tab after login | the profile's initial display tab | the **last** tab whose display loaded; the sample banner (loaded after the tab set) opens `CIENG_Overview` in its tab with an *On entry* action to bring Overview to the front |
|
||||||
|
| Position of `<tab>` in its frame set | any | must be the **last** child: the tab click handler uses the last panel created in the frame set; tab set first (banner after it): labels stay `_`, *Unable to switch/load requested display*, tab clicks fail, the banner frame is missing (tested 2026-10-06, ISS-069) |
|
||||||
| `tabPosition` `bottom` / `left` | applied | **ignored** (always top) |
|
| `tabPosition` `bottom` / `left` | applied | **ignored** (always top) |
|
||||||
| `navigate to <tab set name> <display>` | replaces the display in the **active** tab; no new tab | — |
|
| `navigate to <tab set name> <display>` | replaces the display in the **active** tab; no new tab | — |
|
||||||
| `navigate to <tab frame name> <display>` | shows it in that tab | — |
|
| `navigate to <tab frame name> <display>` | shows it in that tab | — |
|
||||||
|
|
@ -239,3 +245,10 @@ Interface restart required before the layout was found; desktop and web windows
|
||||||
above; F11 (`toggleSize fullScreen`) worked within the taskbar limits; after restarting the
|
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
|
Operator Interface the main window still used the factory `default` layout (Admin profile
|
||||||
unchanged).
|
unchanged).
|
||||||
|
|
||||||
|
2026-10-06 (sample operator HMI): `layout.ps1` add / remove / add with `CIENG_Operator` (tab set
|
||||||
|
in a nested frame set, last child) and `CIENG_Popup`; removal restored `Layouts.xml` byte for
|
||||||
|
byte. User `CIENG` lands in `CIENG_Operator` on Overview on both clients; ADMIN keeps the
|
||||||
|
default layout. Test layouts (removed again): tab set first in its frame set (web broken),
|
||||||
|
`maximumTabs` 8 with 2 tab frames (no extra tab on the web), status line with `connectionState`
|
||||||
|
(web broken).
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,25 @@
|
||||||
---
|
---
|
||||||
task: Configure a trend (chart) component; what each setting does on the desktop and in the HTML display
|
task: Configure a trend (chart) component; what each setting does on the desktop and in the HTML display
|
||||||
version: R1.03
|
version: R1.03
|
||||||
source: IM 36K10C50-01EN §2.27 (Trend, Tables 2.27-10…28), §2.29 (Micro Trend); IM 36K10R30-01EN §4.8.7; installed web client code (`%TLS_WAP_PATH%\mobileoperator\src\fasttools\ui\components\implementation\charts\`); practiced on CI-Eng-Sample (display CIENG_TrendLab) 2026-10-02
|
source: IM 36K10C50-01EN §2.27 (Trend, Tables 2.27-10…28), §2.29 (Micro Trend); IM 36K10R30-01EN §4.8.7; installed web client code (`%TLS_WAP_PATH%\mobileoperator\src\fasttools\ui\components\implementation\charts\`); practiced on CI-Eng-Sample (display CIENG_TrendLab, removed 2026-10-06) 2026-10-02; sample trends CIENG_Trends / CIENG_TankFaceplate and a test display on both clients 2026-10-06
|
||||||
status: verified (desktop Operator Interface: every row marked ✅/❌ below; HTML display: §6)
|
status: verified (desktop Operator Interface: every row marked ✅/❌ below; HTML display: §6)
|
||||||
---
|
---
|
||||||
|
|
||||||
# Trend settings (desktop and web)
|
# Trend settings (desktop and web)
|
||||||
|
|
||||||
Example: `examples/CI-Eng-Sample/displays/CIENG_TrendLab.xml` (deployed by
|
The settings below were tested on the sample display `CIENG_TrendLab` (removed from the sample
|
||||||
`deploy_displays.cmd`). Method used: change one XML value in the display, deploy, *View >
|
on 2026-10-06). Method used: change one XML value in the display, deploy, *View > Reload* in the
|
||||||
Reload* in the client, compare.
|
client, compare. Current sample: `CIENG_Trends` (trend with 2 pens and micro trends) and the
|
||||||
|
micro trends on `CIENG_Overview` and `CIENG_TankFaceplate`.
|
||||||
|
|
||||||
## 1. Before you start
|
## 1. Before you start
|
||||||
|
|
||||||
- **Data**: the trend draws history. `TANK1.LEVEL` / `TANK1.INFLOW` are internal items: after a
|
- **Data**: the trend draws history. `TANK1.LEVEL` / `TANK1.INFLOW` are internal items: after a
|
||||||
CI Server start they are `NOT INIT` (value 0) until something writes them, and the trend then
|
CI Server start they are `NOT INIT` (value 0) until something writes them, and the trend then
|
||||||
shows nothing (or a bold black line at 0 with status drawing). For tests run
|
shows nothing (or a bold black line at 0 with status drawing). For tests run
|
||||||
`displays/trend_feed.ps1` (writes sine waves with `itmval` every 5 s; `-Seconds` = run time).
|
`feed/cieng_feed.ps1` (writes sine waves with `itmval` every 5 s; `-Seconds` = run time,
|
||||||
|
default 3600; it replaced `displays/trend_feed.ps1` on 2026-10-06), or the sample displays'
|
||||||
|
live-data button *Start*.
|
||||||
- **Reload**: changes in the display file show after *View > Reload*. A reload within a few
|
- **Reload**: changes in the display file show after *View > Reload*. A reload within a few
|
||||||
seconds of the deploy can still show the old file — reload again.
|
seconds of the deploy can still show the old file — reload again.
|
||||||
- The **Trend properties** dialog (right-click the trend) and the trend toolbar change the trend
|
- The **Trend properties** dialog (right-click the trend) and the trend toolbar change the trend
|
||||||
|
|
@ -120,7 +123,13 @@ rotation, zoom. Outputs (⇨): *Hairline value[n]*, *Time range begin/end*, *Upd
|
||||||
in the legend background colour
|
in the legend background colour
|
||||||
(the web legend ignores *Show in legend*, ISS-056). Run it again after editing the trend; do
|
(the web legend ignores *Show in legend*, ISS-056). Run it again after editing the trend; do
|
||||||
not keep hidden real pens: one hidden real pen (49 visible) and nothing draws again (checked).
|
not keep hidden real pens: one hidden real pen (49 visible) and nothing draws again (checked).
|
||||||
Cost: 50 history requests per trend.
|
Cost: 50 history requests per trend. **Desktop side effect**: the hairline box lists every
|
||||||
|
visible pen, so it shows 50 values (the user found this unusable); `hairlineVisible` false does
|
||||||
|
not help, as the hairline can still be switched on from the trend toolbar. The sample trend
|
||||||
|
`CIENG_Trends` therefore keeps its 2 pens and draws no line on the web (2026-10-06).
|
||||||
|
- Component level (outside `<chartPanel>`): `<opaque>true` with `<backgroundColor>` turned the
|
||||||
|
frame around the plot **light** on the desktop instead of dark (2026-10-06, reverted);
|
||||||
|
`backgroundPaint` in the chart panel has no effect (ISS-056).
|
||||||
- **Web check of the settings** (2026-10-02, padded scratch copy of `CIENG_TrendLab`, checked in
|
- **Web check of the settings** (2026-10-02, padded scratch copy of `CIENG_TrendLab`, checked in
|
||||||
the browser; supported-property lists: IM 36K10C50 Table 2.27-28, IM 36K10R30 §4.8.7):
|
the browser; supported-property lists: IM 36K10C50 Table 2.27-28, IM 36K10R30 §4.8.7):
|
||||||
|
|
||||||
|
|
@ -134,6 +143,8 @@ rotation, zoom. Outputs (⇨): *Hairline value[n]*, *Time range begin/end*, *Upd
|
||||||
time, then stayed blank on several later opens (ISS-055). Cause: *Number of pens* resets all
|
time, then stayed blank on several later opens (ISS-055). Cause: *Number of pens* resets all
|
||||||
pen sources, so fixed item names can be lost during load. **Connect** `microTrend.itemName[n]`
|
pen sources, so fixed item names can be lost during load. **Connect** `microTrend.itemName[n]`
|
||||||
to the item with attribute `ItemName` instead (`<action type="actionConnectTo">`, `<direction>1`,
|
to the item with attribute `ItemName` instead (`<action type="actionConnectTo">`, `<direction>1`,
|
||||||
`<itemAttribute>ItemName`; sample `CIENG_TrendLab`): both pens then drew on every open; the
|
`<itemAttribute>ItemName`; samples `CIENG_Overview`, `CIENG_Trends`): both pens then drew on every open; the
|
||||||
history fill still failed at times on the web and on the desktop (only the live part drew;
|
history fill still failed at times on the web and on the desktop (only the live part drew;
|
||||||
ISS-055 open).
|
ISS-055 open). `fillWithHistory` true on an item that is in **no** storage group (e.g.
|
||||||
|
`SYSTEM.CPU_LOAD`) gives the message *Record not found* when the display opens, on the desktop
|
||||||
|
and on the web (tested 2026-10-06): set it false for such items.
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ development system (see "Test system" in `progress.md`); they do not exist on ot
|
||||||
| ISS-052 | 2026-10-01 | GRAPHICS (stale item id) | The HTML display `CIENG_Tank` showed **0** in its number field on `CI-Eng-Sample.TANK1.LEVEL` (live value 50) and the popup `ITM-E-NO_MAIN, No main item found`, in a fresh session after a CI Server restart. The display XML stores `<itemName>` **and** `<itemId>1.1.268.0.0.1.1.7</itemId>` from when it was built; after today's sample reloads the item has `ID_NUMBER` 357. Phase 10 had seen live values after a reload, so the id is not always used, but here it broke the field. | closed | Fixed in the sample: removed the `<itemId>` line from `displays/CIENG_Tank.xml`, redeployed; the field shows 50 and the popup is gone (binding by name). Documented in `create-display.md`. Close when the user confirms. Closed 2026-10-01 (confirmed by user). | `examples/CI-Eng-Sample/displays/CIENG_Tank.xml`; `.claude/skills/graphics/tasks/create-display.md`; `.claude/skills/graphics/tasks/deploy-displays.md` |
|
| ISS-052 | 2026-10-01 | GRAPHICS (stale item id) | The HTML display `CIENG_Tank` showed **0** in its number field on `CI-Eng-Sample.TANK1.LEVEL` (live value 50) and the popup `ITM-E-NO_MAIN, No main item found`, in a fresh session after a CI Server restart. The display XML stores `<itemName>` **and** `<itemId>1.1.268.0.0.1.1.7</itemId>` from when it was built; after today's sample reloads the item has `ID_NUMBER` 357. Phase 10 had seen live values after a reload, so the id is not always used, but here it broke the field. | closed | Fixed in the sample: removed the `<itemId>` line from `displays/CIENG_Tank.xml`, redeployed; the field shows 50 and the popup is gone (binding by name). Documented in `create-display.md`. Close when the user confirms. Closed 2026-10-01 (confirmed by user). | `examples/CI-Eng-Sample/displays/CIENG_Tank.xml`; `.claude/skills/graphics/tasks/create-display.md`; `.claude/skills/graphics/tasks/deploy-displays.md` |
|
||||||
| ISS-053 | 2026-10-01 | HAC (manual vs installed) | IM 36K10J20 vs the installed `hac.sup`/scripts: (1) *Start in manual mode*: §1.3 says HAC starts in manual by default, §1.5 and the `hac.sup` help say automatic; the installed template sets `START_MANUAL = YES`. (2) `MAXOPNDB` default: help 500, manual 50 (§1.5) and 5 (§4.8). (3) `QUESIZE` default: help 100 K, manual 2000 K (file sets 2000). (4) §4.5 says `tls\com` and `tls\exe` cannot be mirrored, but the template mirrors `12 COM` (excluding `ci_command.cmd`). (5) §4.4 says the critical processes are already in the queue/CPU check lists; the installed file has no `MAX_QUEUE`/`MAX_CPU`/`INACTIVE` lines. (6) `hacw_standby` uses `TLS_LST_PATH` when `TLS_BACKUP_PATH` is unset (manual: `TLS_ALLUSERS_PATH`). (7) The template `IP_DEVICE` is `localhost` (priority 0), which §1.3 says to remove after testing. (8) HMI properties have `communicationInterval`/`Timeout`/`RetryCount`, not in the manual. | closed | Installed software is the reference (standing user decision); documented in the J20 summary §5 and the `high-availability` skill. Not testable on one server. Closed 2026-10-01 (confirmed by user). | `knowledge/manuals/IM36K10J20-01EN.md`; `.claude/skills/high-availability/tasks/*.md` |
|
| ISS-053 | 2026-10-01 | HAC (manual vs installed) | IM 36K10J20 vs the installed `hac.sup`/scripts: (1) *Start in manual mode*: §1.3 says HAC starts in manual by default, §1.5 and the `hac.sup` help say automatic; the installed template sets `START_MANUAL = YES`. (2) `MAXOPNDB` default: help 500, manual 50 (§1.5) and 5 (§4.8). (3) `QUESIZE` default: help 100 K, manual 2000 K (file sets 2000). (4) §4.5 says `tls\com` and `tls\exe` cannot be mirrored, but the template mirrors `12 COM` (excluding `ci_command.cmd`). (5) §4.4 says the critical processes are already in the queue/CPU check lists; the installed file has no `MAX_QUEUE`/`MAX_CPU`/`INACTIVE` lines. (6) `hacw_standby` uses `TLS_LST_PATH` when `TLS_BACKUP_PATH` is unset (manual: `TLS_ALLUSERS_PATH`). (7) The template `IP_DEVICE` is `localhost` (priority 0), which §1.3 says to remove after testing. (8) HMI properties have `communicationInterval`/`Timeout`/`RetryCount`, not in the manual. | closed | Installed software is the reference (standing user decision); documented in the J20 summary §5 and the `high-availability` skill. Not testable on one server. Closed 2026-10-01 (confirmed by user). | `knowledge/manuals/IM36K10J20-01EN.md`; `.claude/skills/high-availability/tasks/*.md` |
|
||||||
| ISS-054 | 2026-10-01 | AD (manual vs installed) | IM 36K10J40 vs the installed `dssana.sup`: the *Active Directory* tab has keywords the manual does not describe — `AD_SERVER`, `AD_SERVER_BACKUP` (host[:port], 389/636), `AD_SECURE` (LDAPS; installed `NO`, help says default yes), `AD_ACCESS_USER`/`AD_ACCESS_PASSWORD` (blank = the CI Server service account). The manual's *Profile priority* is `USER_DF.MERGE_PRIORITY`; *Directory group* is `DIRECTORY_GROUP` (68 characters). The SSO keytab path is given as `%TLS_WAP_PATH%\webapps\auth\WEB-INF` (§2.5.1) and `%TLS_ALLUSERS_PATH%\wap\webapps\auth\WEB-INF` (§3.4.3) — the same folder on the test system. | closed | Installed software is the reference; documented in the J40 summary §5 and `authorization/tasks/active-directory.md`. Not testable without a domain. Closed 2026-10-01 (confirmed by user). | `knowledge/manuals/IM36K10J40-01EN.md`; `.claude/skills/authorization/tasks/active-directory.md` |
|
| ISS-054 | 2026-10-01 | AD (manual vs installed) | IM 36K10J40 vs the installed `dssana.sup`: the *Active Directory* tab has keywords the manual does not describe — `AD_SERVER`, `AD_SERVER_BACKUP` (host[:port], 389/636), `AD_SECURE` (LDAPS; installed `NO`, help says default yes), `AD_ACCESS_USER`/`AD_ACCESS_PASSWORD` (blank = the CI Server service account). The manual's *Profile priority* is `USER_DF.MERGE_PRIORITY`; *Directory group* is `DIRECTORY_GROUP` (68 characters). The SSO keytab path is given as `%TLS_WAP_PATH%\webapps\auth\WEB-INF` (§2.5.1) and `%TLS_ALLUSERS_PATH%\wap\webapps\auth\WEB-INF` (§3.4.3) — the same folder on the test system. | closed | Installed software is the reference; documented in the J40 summary §5 and `authorization/tasks/active-directory.md`. Not testable without a domain. Closed 2026-10-01 (confirmed by user). | `knowledge/manuals/IM36K10J40-01EN.md`; `.claude/skills/authorization/tasks/active-directory.md` |
|
||||||
| ISS-055 | 2026-10-02 | GRAPHICS (Micro Trend) | A Micro Trend written into `CIENG_TrendLab` (`itemName[0..1]` = `TANK1.LEVEL`/`INFLOW`, `numberOfPens` 2, `realTime`, `fillWithHistory`) drew both pens on the desktop and in the browser the first time (about 13:33), then stayed **blank** on every later open on both clients: with and without the 48 spare trend pens, and with explicit `timeRange` 600 / `sampleCount` 60. No console error; CI Server running. Code: `MicroTrend.js` only starts when all properties are set (`startTrendIfAllPropertiesAreSet`; it also compares `scaleMax[i]` with `scaleMin[1]`). | open | Later 2026-10-02 the clean sample file (no explicit `timeRange`/`sampleCount`, 48 spare trend pens) drew both pens on the desktop and in the browser after a fresh login; after a *View > Reload* in the browser only LEVEL showed fully, INFLOW only a short piece: the behaviour is intermittent. **Cause 1 found 2026-10-02**: `setNumberOfPens()` calls `updatePenSource()`, which replaces every pen source with an empty one, so fixed `itemName[n]` values are lost when *Number of pens* is applied after them during load (order varies). Fix in the sample: connect `microTrend.itemName[n]` to the item with attribute `ItemName` (as the factory/test displays do); both pens then drew on 3 of 3 opens. **Remaining**: on 1 of 3 opens only the live part drew (no history fill); every property set calls `startTrend()` again, so history requests are repeated and can cancel each other (web-client code, not fixable in the display). The Operator Interface (desktop) showed the same: both pens live, no history fill on the next open, so the fill problem is not web-only. After a CI Server restart (14:30): web first open of a copy of the display drew both pens with history; the next opens (another copy, and the same display again) showed only the live part; the desktop drew history on one display and only the live part on the custom-range copy. No pattern found yet. Earlier note: still to try: build the Micro Trend in the Edit Module (compare the XML), connect `itemName[n]` instead of a fixed value (as in factory/test displays), a display with only the Micro Trend, a CI Server restart. | `.claude/skills/graphics/tasks/trend.md` §6; `examples/CI-Eng-Sample/displays/CIENG_TrendLab.xml` |
|
| ISS-055 | 2026-10-02 | GRAPHICS (Micro Trend) | A Micro Trend written into `CIENG_TrendLab` (`itemName[0..1]` = `TANK1.LEVEL`/`INFLOW`, `numberOfPens` 2, `realTime`, `fillWithHistory`) drew both pens on the desktop and in the browser the first time (about 13:33), then stayed **blank** on every later open on both clients: with and without the 48 spare trend pens, and with explicit `timeRange` 600 / `sampleCount` 60. No console error; CI Server running. Code: `MicroTrend.js` only starts when all properties are set (`startTrendIfAllPropertiesAreSet`; it also compares `scaleMax[i]` with `scaleMin[1]`). | open | Later 2026-10-02 the clean sample file (no explicit `timeRange`/`sampleCount`, 48 spare trend pens) drew both pens on the desktop and in the browser after a fresh login; after a *View > Reload* in the browser only LEVEL showed fully, INFLOW only a short piece: the behaviour is intermittent. **Cause 1 found 2026-10-02**: `setNumberOfPens()` calls `updatePenSource()`, which replaces every pen source with an empty one, so fixed `itemName[n]` values are lost when *Number of pens* is applied after them during load (order varies). Fix in the sample: connect `microTrend.itemName[n]` to the item with attribute `ItemName` (as the factory/test displays do); both pens then drew on 3 of 3 opens. **Remaining**: on 1 of 3 opens only the live part drew (no history fill); every property set calls `startTrend()` again, so history requests are repeated and can cancel each other (web-client code, not fixable in the display). The Operator Interface (desktop) showed the same: both pens live, no history fill on the next open, so the fill problem is not web-only. After a CI Server restart (14:30): web first open of a copy of the display drew both pens with history; the next opens (another copy, and the same display again) showed only the live part; the desktop drew history on one display and only the live part on the custom-range copy. No pattern found yet. Earlier note: still to try: build the Micro Trend in the Edit Module (compare the XML), connect `itemName[n]` instead of a fixed value (as in factory/test displays), a display with only the Micro Trend, a CI Server restart. | `.claude/skills/graphics/tasks/trend.md` §6; `examples/CI-Eng-Sample/displays/CIENG_TrendLab.xml` (removed 2026-10-06; micro trends now on `CIENG_Overview`, `CIENG_Trends`, `CIENG_TankFaceplate`) |
|
||||||
| ISS-056 | 2026-10-02 | GRAPHICS (trend, manual vs installed) | (1) IM 36K10C50 Table 2.27-28 lists *Appearance - Show in Legend* as supported in the HTML display, but the web legend listed pens with `visibleLegend` false (the desktop hides them). (2) The legend position (`PositionSouthWest`) was not applied in the browser (not supported per the table). (3) The manual says a trend has up to 20 pens; the component property sheet has 20 slots, but the web code reserves 50 and `maximumPens` 50 works on the desktop. (4) Desktop: pen `title`/`titlePlacement`, pen limit values `lowLimit`… and chart `backgroundPaint` had no visible effect; time-axis minor ticks/grid showed nothing at a 10-minute range. | closed | Documented in `trend.md`; installed software is the reference. Close when the user confirms. Closed 2026-10-02 (confirmed by user). | `.claude/skills/graphics/tasks/trend.md` |
|
| ISS-056 | 2026-10-02 | GRAPHICS (trend, manual vs installed) | (1) IM 36K10C50 Table 2.27-28 lists *Appearance - Show in Legend* as supported in the HTML display, but the web legend listed pens with `visibleLegend` false (the desktop hides them). (2) The legend position (`PositionSouthWest`) was not applied in the browser (not supported per the table). (3) The manual says a trend has up to 20 pens; the component property sheet has 20 slots, but the web code reserves 50 and `maximumPens` 50 works on the desktop. (4) Desktop: pen `title`/`titlePlacement`, pen limit values `lowLimit`… and chart `backgroundPaint` had no visible effect; time-axis minor ticks/grid showed nothing at a 10-minute range. | closed | Documented in `trend.md`; installed software is the reference. Close when the user confirms. Closed 2026-10-02 (confirmed by user). | `.claude/skills/graphics/tasks/trend.md` |
|
||||||
| ISS-057 | 2026-10-02 | DATA EXPOSURE (filter, manual vs installed) | IM 36K10G10 §10.1 gives the filter example `"NAME" like "ABC*"` (quoted field name). On R1.05 a `DATA_EXPOSURE_DF` record with `RECORDS` = `"NAME" LIKE "<Section>*"` made `DBCSND` log `DSS-E-FLT_SYN_ERR` (+ `DSSF-E-CMP_NO_SUCC`, `DBC-E-DSS_SUB`, `DBC-E-SUB_DAT`, `DBC-E-DAT_HND`) and exit (`DUR-W-REM_PROC`), stopping **all** exposures. Tested on the user's R1.05 system (AID.WRPS items, exposure `WRPS-ITEM-VAL`). | closed | Closed 2026-10-02 (confirmed by user; user decision: installed software is the reference): the unquoted form `NAME LIKE "<Section>*"` compiles and data flows. Tested in R1.05 only. | `.claude/skills/data-access/tasks/rdbms-exposure.md` (done); `knowledge/manuals/IM36K10G10-01EN.md` (done); `knowledge/manuals/IM36K10L45-01EN.md` §8 (done) |
|
| ISS-057 | 2026-10-02 | DATA EXPOSURE (filter, manual vs installed) | IM 36K10G10 §10.1 gives the filter example `"NAME" like "ABC*"` (quoted field name). On R1.05 a `DATA_EXPOSURE_DF` record with `RECORDS` = `"NAME" LIKE "<Section>*"` made `DBCSND` log `DSS-E-FLT_SYN_ERR` (+ `DSSF-E-CMP_NO_SUCC`, `DBC-E-DSS_SUB`, `DBC-E-SUB_DAT`, `DBC-E-DAT_HND`) and exit (`DUR-W-REM_PROC`), stopping **all** exposures. Tested on the user's R1.05 system (AID.WRPS items, exposure `WRPS-ITEM-VAL`). | closed | Closed 2026-10-02 (confirmed by user; user decision: installed software is the reference): the unquoted form `NAME LIKE "<Section>*"` compiles and data flows. Tested in R1.05 only. | `.claude/skills/data-access/tasks/rdbms-exposure.md` (done); `knowledge/manuals/IM36K10G10-01EN.md` (done); `knowledge/manuals/IM36K10L45-01EN.md` §8 (done) |
|
||||||
| ISS-058 | 2026-10-02 | DATA EXPOSURE (ITEM_HISTORY, manual vs installed) | IM 36K10G10 ch. 10 lists `ITEM_HISTORY` as an exposure source (filter required). The installed `dbc.sup` (R1.03 and R1.05, identical) has the change-log line `PCL Aug-19 e12150 Refactor to support MS-SQL/ODBC, remove ITM history support`. An `ITEM_HISTORY` record (all fields, quoted filter, ISS-057) on the user's R1.05 system never created its table; it was disabled and then deleted, so whether ITEM_HISTORY works with a correct filter is **not tested**. | open | Treat ITEM_HISTORY exposure as unsupported and use `ITEM_VALUES` with `AGG_INTERVAL`. To close: on an R1.05 system, create an `ITEM_HISTORY` record with an unquoted filter and check whether `DBCSND` stays up and the table is created. | `.claude/skills/data-access/tasks/rdbms-exposure.md`; `knowledge/manuals/IM36K10G10-01EN.md`; `knowledge/manuals/IM36K10L45-01EN.md` §8 |
|
| ISS-058 | 2026-10-02 | DATA EXPOSURE (ITEM_HISTORY, manual vs installed) | IM 36K10G10 ch. 10 lists `ITEM_HISTORY` as an exposure source (filter required). The installed `dbc.sup` (R1.03 and R1.05, identical) has the change-log line `PCL Aug-19 e12150 Refactor to support MS-SQL/ODBC, remove ITM history support`. An `ITEM_HISTORY` record (all fields, quoted filter, ISS-057) on the user's R1.05 system never created its table; it was disabled and then deleted, so whether ITEM_HISTORY works with a correct filter is **not tested**. | open | Treat ITEM_HISTORY exposure as unsupported and use `ITEM_VALUES` with `AGG_INTERVAL`. To close: on an R1.05 system, create an `ITEM_HISTORY` record with an unquoted filter and check whether `DBCSND` stays up and the table is created. | `.claude/skills/data-access/tasks/rdbms-exposure.md`; `knowledge/manuals/IM36K10G10-01EN.md`; `knowledge/manuals/IM36K10L45-01EN.md` §8 |
|
||||||
|
|
@ -87,3 +87,11 @@ development system (see "Test system" in `progress.md`); they do not exist on ot
|
||||||
| ISS-065 | 2026-10-02 | GRAPHICS (layouts, web) | The web client (HTML display) supports only part of `Layouts.xml`: nested frame sets only in the parent's main (`n*`) slot (other placements hang on *Loading…*), frame `zoom` and navigate zoom ignored, `zoom`/`print`/`login`/`toolbar`/`statusline`/`lookfeel`/`playback` not supported, menu `sub`/`check`/`radio` items and left/right/bottom toolbars not shown, a layout without `title` shows *undefined*. Not described in the readme or IM 36K10R30. | open | Documented in the task (§6, tested and read from the web client code). Close when the user confirms. | `.claude/skills/graphics/tasks/layouts.md` §6 (done) |
|
| ISS-065 | 2026-10-02 | GRAPHICS (layouts, web) | The web client (HTML display) supports only part of `Layouts.xml`: nested frame sets only in the parent's main (`n*`) slot (other placements hang on *Loading…*), frame `zoom` and navigate zoom ignored, `zoom`/`print`/`login`/`toolbar`/`statusline`/`lookfeel`/`playback` not supported, menu `sub`/`check`/`radio` items and left/right/bottom toolbars not shown, a layout without `title` shows *undefined*. Not described in the readme or IM 36K10R30. | open | Documented in the task (§6, tested and read from the web client code). Close when the user confirms. | `.claude/skills/graphics/tasks/layouts.md` §6 (done) |
|
||||||
| ISS-066 | 2026-10-02 | GRAPHICS (layouts) | Readme options that do not work as described in R1.03: a toolbar with `position="bottom"` is not shown (desktop and web; left/right work on the desktop); `initialPosition="centreFrame"` opens the window at 0,0 on the desktop; translations are used only for the exact locale (no fallback from `en_AU` to `en`). | open | Documented in the task. Close when the user confirms. | `.claude/skills/graphics/tasks/layouts.md` §6 (done) |
|
| ISS-066 | 2026-10-02 | GRAPHICS (layouts) | Readme options that do not work as described in R1.03: a toolbar with `position="bottom"` is not shown (desktop and web; left/right work on the desktop); `initialPosition="centreFrame"` opens the window at 0,0 on the desktop; translations are used only for the exact locale (no fallback from `en_AU` to `en`). | open | Documented in the task. Close when the user confirms. | `.claude/skills/graphics/tasks/layouts.md` §6 (done) |
|
||||||
| ISS-067 | 2026-10-02 | GRAPHICS (layouts, tabs) | Readme: `<tab>` provides defaults (`closeTabAllowed`, `stackSize`, …) for its frames, and `maximumTabs`, `minimumTabLabelWidth`, `tabButtonGap`, `tabPosition` control the tabs. Observed: defaults on `<tab>` are not inherited (close buttons only with `closeTabAllowed` on each frame); `maximumTabs` does not limit the initial tabs; label width and gap show no effect on the desktop; the web client ignores `tabPosition` (always top) and hangs when the tab set sits next to the nav frame at the top level (factory shape with a nested frame set works). | open | Documented in the task; use the factory pattern. Close when the user confirms. | `.claude/skills/graphics/tasks/layouts.md` §6.6 (done) |
|
| ISS-067 | 2026-10-02 | GRAPHICS (layouts, tabs) | Readme: `<tab>` provides defaults (`closeTabAllowed`, `stackSize`, …) for its frames, and `maximumTabs`, `minimumTabLabelWidth`, `tabButtonGap`, `tabPosition` control the tabs. Observed: defaults on `<tab>` are not inherited (close buttons only with `closeTabAllowed` on each frame); `maximumTabs` does not limit the initial tabs; label width and gap show no effect on the desktop; the web client ignores `tabPosition` (always top) and hangs when the tab set sits next to the nav frame at the top level (factory shape with a nested frame set works). | open | Documented in the task; use the factory pattern. Close when the user confirms. | `.claude/skills/graphics/tasks/layouts.md` §6.6 (done) |
|
||||||
|
| ISS-068 | 2026-10-06 | GRAPHICS (layouts, web) | `layouts.md` §6.3 (2026-10-02) lists all 8 status line types as shown on the web. A layout whose status line contains `connectionState` (a type listed in `Layouts.readme`) does not start in the HTML display: at login `createStatusline` fails with *Cannot read properties of undefined (reading 'split')* and no frame is created (menu and toolbar only). Seen with the demo layout and reproduced with test layout `LT_ConnState` 2026-10-06. The desktop was not re-tested. | open | Documented in `layouts.md` §6.3 (web: 7 types shown). Close when the user confirms. | `.claude/skills/graphics/tasks/layouts.md` §6.3 (done) |
|
||||||
|
| ISS-069 | 2026-10-06 | GRAPHICS (layouts, tabs, web) | In the HTML display a `<tab>` set works only as the **last** child of its frame set: the tab click handler (`LayoutWindow.js`) uses the last panel created in the frame set. With the tab set first (banner frame after it, test layout `LT_TabFirst` 2026-10-06) the tab labels stay `_`, the console shows *Unable to switch/load requested display* and *Cannot set properties of undefined (setting 'active')*, tab clicks fail and the banner frame is missing. Not in `Layouts.readme` or IM 36K10R30. | open | Rule added (`layouts.md` §1, §6.6); sample `CIENG_Operator` uses the factory shape. Close when the user confirms. | `.claude/skills/graphics/tasks/layouts.md` §1, §6.6 (done) |
|
||||||
|
| ISS-070 | 2026-10-06 | GRAPHICS (layouts, tabs, desktop) | The Operator Interface ignores `zoom` (`fitDisplay`, `stretchDisplay`) on frames inside a `<tab>` and on the `<tab>` element: the displays are shown at 100 % (cropped on a small, unused space on a large monitor; F5 *Reload all* did not change it). The layout command `navigate to <tab frame> <display> fitDisplay|stretchDisplay` does apply the zoom (sample: toolbar, menu and an *On entry* `ACTION` of `CIENG_AlarmBanner`, 2026-10-03/06). A tab opened by clicking the tab strip keeps the zoom it had. | open | Documented in `layouts.md` §6.1 / §6.6. Close when the user confirms. | `.claude/skills/graphics/tasks/layouts.md` §6.1, §6.6 (done) |
|
||||||
|
| ISS-071 | 2026-10-06 | GRAPHICS (layout commands, desktop) | Only one layout command can run at a time: five *Execute command* `ACTION navigate …` actions in one *On entry* gave *IllegalStateException: A command is already being executed* (2026-10-03); reproduced 2026-10-06 with two `ACTION reload all` on one button (test display `CIENG_Test`). Layout commands cannot be chained (`Layouts.readme` has no separator). | open | Documented in `layouts.md` §3. Close when the user confirms. | `.claude/skills/graphics/tasks/layouts.md` §3 (done) |
|
||||||
|
| ISS-072 | 2026-10-06 | AUTH (users, quick load) | A user loaded with `dssqld` without a `PASSWORD` field (as `users-groups.md` advised: "a password is not required on import") has **no** password set: every logon fails with *DSS-E-UNK_USER Unknown user name/password combination*, also with an empty password; clearing the password in the Engineering Module made it work. With `PASSWORD ""` given explicitly the user logs on with an empty password on the desktop and the web (sample user `CIENG`, 2026-10-06). | closed | Answered by test 2026-10-06; `users-groups.md` corrected, sample `08b_user_df.qli` uses `PASSWORD ""`. Close when the user confirms. | `.claude/skills/authorization/tasks/users-groups.md` (done); `examples/CI-Eng-Sample/08b_user_df.qli` (done) |
|
||||||
|
| ISS-073 | 2026-10-06 | DSS (remove group / DSSSDA) | Removing an authorization group while a session of one of its users is open fails with *DSSP-E-NODEL … in dataset USER_VAL*; after logging out the session was still referenced, and a retry stopped the process `DSSSDA03` (*DUR-F-BAD_SIZE, Negative size not allowed*; `DUR-W-REM_PROC … exited unexpectedly`); following DSS requests failed with *DUR-F-UNKNOWN_ATT … DSSSDA03* until CI Server was restarted (2026-10-06). After the restart the group was removed without error. `USER_VAL` exports only its header, so open sessions cannot be listed. | open | Workaround: log out the user's sessions and restart CI Server before removing the group; noted in the sample `remove.cmd` / README and `users-groups.md`. Not repeated on purpose (it stops a CI Server process). Report to Yokogawa. | `.claude/skills/authorization/tasks/users-groups.md` (done); `examples/CI-Eng-Sample/remove.cmd`, `README.md` (done) |
|
||||||
|
| ISS-074 | 2026-10-06 | GRAPHICS (HTML display login) | IM 36K10R30 §4 lists the user profile fields used by the HTML display login as "… initial display, locale (layout not)". On R1.03.00 the profile's *Layout* is used too: a logon as `CIENG` (layout `CIENG_Operator`) at `/mobileoperator/` without `?l=` opened `CIENG_Operator` (2026-10-02 with ADMIN, 2026-10-06 with `CIENG`). | open | Installed software is the reference; R30 summary and `layouts.md` §3 updated. Close when the user confirms. | `knowledge/manuals/IM36K10R30-01EN.md` (done); `.claude/skills/graphics/tasks/layouts.md` §3, §5 (done) |
|
||||||
|
| ISS-075 | 2026-10-06 | GRAPHICS (`jwuiutl -v`) | `deploy-displays.md` called `jwuiutl -v` "report only", but `jwuiutl -d -v -i -l <log> <display>` re-saves the validated display (normalised XML: defaults dropped, positions as attributes; 9 618 → 11 191 bytes for `CIENG_Test`, 2026-10-06). On 2026-10-02 a validation of eight displays hung on one and left `<name>.lck` and `<name>.xml.tmp`; not reproduced on 2026-10-06. | open | Documented in `deploy-displays.md` §2 and the C50 summary. Close when the user confirms. | `.claude/skills/graphics/tasks/deploy-displays.md` §2 (done); `knowledge/manuals/IM36K10C50-01EN.md` (done) |
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ manual: IM 36K10C50-01EN
|
||||||
title: Edit Module
|
title: Edit Module
|
||||||
edition: 3rd Edition, Sep. 2023
|
edition: 3rd Edition, Sep. 2023
|
||||||
version: R1.03
|
version: R1.03
|
||||||
status: display CIENG_Tank built by the user in the Edit Module (text, number field, alarm overview, trend) and checked as XML and HTML 2026-10-01; jwuiutl search, validate and HTML export verified; trend settings (§2.27) tested one by one on CIENG_TrendLab 2026-10-02 (skill graphics, tasks/trend.md); other components, symbols, actions and the tutorial from docs
|
status: display CIENG_Tank built by the user in the Edit Module (text, number field, alarm overview, trend) and checked as XML and HTML 2026-10-01; jwuiutl search, validate and HTML export verified; trend settings (§2.27) tested one by one on CIENG_TrendLab 2026-10-02 (skill graphics, tasks/trend.md); generated sample displays (CIENG_*, most components: shapes, arc, text, number/text/date-time fields, buttons, toggle, check box, slider, spinner, combo box, data bar, scales, alarm overview, report, micro trend, trend) checked on desktop and web 2026-10-06; symbols, other actions and the tutorial from docs
|
||||||
---
|
---
|
||||||
|
|
||||||
# Edit Module (R1.03)
|
# Edit Module (R1.03)
|
||||||
|
|
@ -46,7 +46,9 @@ display. Displays are XML files (`IM36K10R30-01EN.md` §1). Section numbers refe
|
||||||
**Verified on the test system:** `-d -m TANK1` and `-d -v -i -l` ran without errors; locked
|
**Verified on the test system:** `-d -m TANK1` and `-d -v -i -l` ran without errors; locked
|
||||||
displays and displays saved by a newer version are skipped (`*** Display locked <name>`,
|
displays and displays saved by a newer version are skipped (`*** Display locked <name>`,
|
||||||
`… created with a newer version of CI Server (R1.04.0.0)`); `-e HTML -i -f DEPLOY CIENG_Tank`
|
`… created with a newer version of CI Server (R1.04.0.0)`); `-e HTML -i -f DEPLOY CIENG_Tank`
|
||||||
wrote `mobileoperator\operatorInterfaces\DEPLOY\displays\CIENG_Tank.html`.
|
wrote `mobileoperator\operatorInterfaces\DEPLOY\displays\CIENG_Tank.html`. 2026-10-06: `-v` with
|
||||||
|
a display name also **re-saved** that display (normalised XML, same content; skill `graphics`,
|
||||||
|
`tasks/deploy-displays.md` §2).
|
||||||
|
|
||||||
## 3. Components (§2)
|
## 3. Components (§2)
|
||||||
|
|
||||||
|
|
@ -87,7 +89,7 @@ Symbols* and *Validate all Displays* (with all tabs closed); a symbol can be lin
|
||||||
PROCESS Service class so each instance shows one object; data location (display, operator's
|
PROCESS Service class so each instance shows one object; data location (display, operator's
|
||||||
CI Portal, display's server, enterprise, node).
|
CI Portal, display's server, enterprise, node).
|
||||||
|
|
||||||
## 6. What the display file stores (verified with CIENG_Tank)
|
## 6. What the display file stores (verified with CIENG_Tank, removed from the sample 2026-10-06)
|
||||||
|
|
||||||
- `<coreObjectDefinition type="displayDefinition">` with `<html>true</html>`, `<width>`,
|
- `<coreObjectDefinition type="displayDefinition">` with `<html>true</html>`, `<width>`,
|
||||||
`<height>`, grid, revision history, visibility groups, layers.
|
`<height>`, grid, revision history, visibility groups, layers.
|
||||||
|
|
@ -99,6 +101,9 @@ CI Portal, display's server, enterprise, node).
|
||||||
reported *No problems found*, and a newly opened session showed the live value — the name is
|
reported *No problems found*, and a newly opened session showed the live value — the name is
|
||||||
what counts. Sessions that were already open kept the old binding (value frozen) until the
|
what counts. Sessions that were already open kept the old binding (value frozen) until the
|
||||||
display was opened in a new session.
|
display was opened in a new session.
|
||||||
|
- Rules for writing display XML directly (text size, rounding, arc angles, item attributes for
|
||||||
|
the web, server-side commands, alarm overview columns): skill `graphics`,
|
||||||
|
`tasks/create-display.md`, verified 2026-10-06 with the generated `CIENG_*` displays.
|
||||||
|
|
||||||
## 7. Tutorial (§6)
|
## 7. Tutorial (§6)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,8 @@ as *dataset* events — `SUBJECT_GROUP` = dataset name (`ITEM_DF`, `ITEM_VAL`, `
|
||||||
`AUDIT_INFO` (*Audit trailing wanted*, default 0; also on `SUB_ITEM_DF`, `EXTERNAL_ALARM_DF`) made
|
`AUDIT_INFO` (*Audit trailing wanted*, default 0; also on `SUB_ITEM_DF`, `EXTERNAL_ALARM_DF`) made
|
||||||
no difference for these tools; it switches the `ITEM.*` events of **operator writes**: a button on
|
no difference for these tools; it switches the `ITEM.*` events of **operator writes**: a button on
|
||||||
display `CIENG_Tank` stored `ITEM.VALUE.MODIFY.OPER-INTERFACE` (old/new, user) with
|
display `CIENG_Tank` stored `ITEM.VALUE.MODIFY.OPER-INTERFACE` (old/new, user) with
|
||||||
`AUDIT_INFO` 1 and nothing with 0 (verified, ISS-049). A changed `STORAGE` flag takes effect only after the notifying process
|
`AUDIT_INFO` 1 and nothing with 0 (verified, ISS-049; the same events from *Manual* / *Auto* on
|
||||||
|
`CIENG_Control`, 2026-10-06). A changed `STORAGE` flag takes effect only after the notifying process
|
||||||
re-reads it (`ECL_REFRESH`, up to 30 minutes, both directions; verified, ISS-050).
|
re-reads it (`ECL_REFRESH`, up to 30 minutes, both directions; verified, ISS-050).
|
||||||
|
|
||||||
## 4. Setup files (§4.2)
|
## 4. Setup files (§4.2)
|
||||||
|
|
|
||||||
|
|
@ -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) 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
|
status: HTML display (Mobile Operator) and a project layout (CIENG_Operator) verified in the Operator Interface (desktop) and the HTML display 2026-10-01; sample operator HMI with tab set, popup layout and per-user layout verified on both clients 2026-10-06; dataset forms, form language and dual screen from docs
|
||||||
---
|
---
|
||||||
|
|
||||||
# Graphic Display Setup (R1.03)
|
# Graphic Display Setup (R1.03)
|
||||||
|
|
@ -38,13 +38,16 @@ empty = `deploy`).
|
||||||
- Menu items (§1.5, e.g. `menu.file.login`, `menu.view.reload`), toolbar (§1.6), status line
|
- Menu items (§1.5, e.g. `menu.file.login`, `menu.view.reload`), toolbar (§1.6), status line
|
||||||
items (§1.7, e.g. graphics queue level), frames and tabs (§1.8), translations (§1.9).
|
items (§1.7, e.g. graphics queue level), frames and tabs (§1.8), translations (§1.9).
|
||||||
- Which layout opens: *In layout* of an *Open display* action (Edit Module), or the user's
|
- Which layout opens: *In layout* of an *Open display* action (Edit Module), or the user's
|
||||||
*Layout* field (Engineering Module, Authorization > Users); empty = `default`.
|
*Layout* field (Engineering Module, Authorization > Users); empty = `default`. Verified
|
||||||
|
2026-10-06 with the sample user `CIENG` on the desktop and in the HTML display.
|
||||||
- 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`):
|
- **Verified (2026-10-01, former sample layout)**: sample layout `CIENG_Operator` (skill `graphics`, task `layouts.md`):
|
||||||
second window from an *Open display* action, own menu/toolbar/frames, `$default` title, popup
|
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
|
layout, F11; the Operator Interface reads `Layouts.xml` only at start. The installed
|
||||||
`Layouts.readme` is the full reference for options and commands.
|
`Layouts.readme` is the full reference for options and commands. Since 2026-10-06
|
||||||
|
`CIENG_Operator` is the sample operator HMI (header frame, tab set, banner) with the popup
|
||||||
|
layout `CIENG_Popup`; web and desktop findings for tab sets in `layouts.md` §6.6.
|
||||||
- **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
|
||||||
|
|
@ -72,8 +75,10 @@ property files and language codes (§3.5).
|
||||||
*Mobile Operator* on the Remote Connect page. Login with a CI Server user (manual, or SSO via
|
*Mobile Operator* on the Remote Connect page. Login with a CI Server user (manual, or SSO via
|
||||||
`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, per this manual). **Installed software**: the profile's *Layout* is used as well - a
|
||||||
- **Verified**: `http://localhost:8080/mobileoperator/?d=CIENG_Tank` showed the operator
|
logon as `CIENG` without `?l=` opened `CIENG_Operator` (2026-10-06, ISS-074). Login control:
|
||||||
|
`dssana.sup` interface *mobile operator*.
|
||||||
|
- **Verified (2026-10-01)**: `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
|
||||||
|
|
@ -84,7 +89,7 @@ property files and language codes (§3.5).
|
||||||
no enterprise displays. Components supported (§4.8): alarm overview, display, group, symbol,
|
no enterprise displays. Components supported (§4.8): alarm overview, display, group, symbol,
|
||||||
trend, visibility group/layer, parameters, web browser (with listed properties).
|
trend, visibility group/layer, parameters, web browser (with listed properties).
|
||||||
- Full screen F11, Chrome shortcuts or `chrome.exe --app=http://<host>:<port>`.
|
- Full screen F11, Chrome shortcuts or `chrome.exe --app=http://<host>:<port>`.
|
||||||
- **Test system**: the HTML trend of `CIENG_Tank` drew no line although history existed; browser
|
- **Test system**: the HTML trend of `CIENG_Tank` (removed from the sample 2026-10-06) drew no line although history existed; browser
|
||||||
console `Mismatch between number of labels … and number of columns in array (51)` (ISS-041).
|
console `Mismatch between number of labels … and number of columns in array (51)` (ISS-041).
|
||||||
Cause (2026-10-02): the web trend code always builds 50 data columns, so a trend draws only
|
Cause (2026-10-02): the web trend code always builds 50 data columns, so a trend draws only
|
||||||
with 50 visible pens; workaround `add_trend_spares.ps1`, details and web/desktop differences in
|
with 50 visible pens; workaround `add_trend_spares.ps1`, details and web/desktop differences in
|
||||||
|
|
|
||||||
|
|
@ -139,6 +139,9 @@ now come before classes and objects (phase 6), and the other interfaces follow a
|
||||||
| C50/R30 | HTML trend: cause of the empty web trend and 50-pen workaround (`add_trend_spares.ps1`); Micro Trend ([task](../.claude/skills/graphics/tasks/trend.md) §6) | passed (workaround) | passed | Web code always builds 50 columns (ISS-041). Padded `CIENG_TrendLab` draws in the browser with a clean legend; web ignores *Show in legend* (ISS-056). Micro Trend drew once, then blank (ISS-055). |
|
| C50/R30 | HTML trend: cause of the empty web trend and 50-pen workaround (`add_trend_spares.ps1`); Micro Trend ([task](../.claude/skills/graphics/tasks/trend.md) §6) | passed (workaround) | passed | Web code always builds 50 columns (ISS-041). Padded `CIENG_TrendLab` draws in the browser with a clean legend; web ignores *Show in legend* (ISS-056). Micro Trend drew once, then blank (ISS-055). |
|
||||||
| C50/R30 | Web check of each trend setting (4 batches on a padded scratch copy, checked in the browser by Claude) ([task](../.claude/skills/graphics/tasks/trend.md) §6) | passed | passed | 2026-10-02. Works / ignored / different table in the task; matches IM 36K10C50 Table 2.27-28 except `timeShift` (error message) and *Show in legend* (ISS-056). A hidden real pen breaks the 50-pen workaround (confirmed). |
|
| C50/R30 | Web check of each trend setting (4 batches on a padded scratch copy, checked in the browser by Claude) ([task](../.claude/skills/graphics/tasks/trend.md) §6) | passed | passed | 2026-10-02. Works / ignored / different table in the task; matches IM 36K10C50 Table 2.27-28 except `timeShift` (error message) and *Show in legend* (ISS-056). A hidden real pen breaks the 50-pen workaround (confirmed). |
|
||||||
| C50 | Remaining trend settings: custom time range, `Rendering3dOrt`, `RenderingCSS` ([task](../.claude/skills/graphics/tasks/trend.md) §4) | passed | passed | 2026-10-02. Custom range on desktop and web (desktop: no live update); 3dOrt draws black lines; CSS mode makes the display unloadable. |
|
| C50 | Remaining trend settings: custom time range, `Rendering3dOrt`, `RenderingCSS` ([task](../.claude/skills/graphics/tasks/trend.md) §4) | passed | passed | 2026-10-02. Custom range on desktop and web (desktop: no live update); 3dOrt draws black lines; CSS mode makes the display unloadable. |
|
||||||
|
| R30/C50 | Sample operator HMI: 8 generated `CIENG_*` displays, layouts `CIENG_Operator` (header, tab set, banner) and `CIENG_Popup`, live-data feed with server-side *Start* / *Stop* ([sample README](../examples/CI-Eng-Sample/README.md), [layouts](../.claude/skills/graphics/tasks/layouts.md) §6.6) | passed | passed | 2026-10-06 on desktop and web. Replaces `CIENG_Tank`, `CIENG_Menu`, `CIENG_TrendLab`. Tab sets: last child of the frame set (ISS-069), desktop zoom via `navigate … stretchDisplay` (ISS-070), one layout command at a time (ISS-071), `connectionState` breaks the web layout (ISS-068). |
|
||||||
|
| C50 | Writing display XML directly: text size, rounding, arc angles, web item attributes, server-side command, alarm overview columns ([task](../.claude/skills/graphics/tasks/create-display.md)) | passed | passed | 2026-10-06, test display `CIENG_Test` (removed) on both clients; arc angles clockwise from 3 o'clock on both clients (an earlier note on mirrored angles was wrong); `jwuiutl -v` re-saves (ISS-075). |
|
||||||
|
| C10 | Sample user `CIENG` with empty password via quick load, profile layout and initial display ([task](../.claude/skills/authorization/tasks/users-groups.md)) | passed | passed | 2026-10-06: `PASSWORD ""` needed (ISS-072); web logon uses the profile layout (ISS-074); group removal with an open session stopped `DSSSDA03` (ISS-073). Factory group `OPERATOR` is enough for the server-side *Start*. |
|
||||||
| J10/C50 | Restart CI Server with the Edit Module open | observed | n/a | Start aborted: `JWUIGED<pid>` still attached to the BUS Service (`ci_start.log`); closing the Edit Module fixed it (skill `system-check`). |
|
| J10/C50 | Restart CI Server with the Edit Module open | observed | n/a | Start aborted: `JWUIGED<pid>` still attached to the BUS Service (`ci_start.log`); closing the Edit Module fixed it (skill `system-check`). |
|
||||||
| R30/C50/C60 | Dataset forms, symbols, AOG library, dual screen, per-user layouts | not practiced | n/a | GUI work; user profiles not changed. |
|
| R30/C50/C60 | Dataset forms, symbols, AOG library, dual screen, per-user layouts | not practiced | n/a | GUI work; user profiles not changed. |
|
||||||
| R40/C30 | REPORT Service checks: processes, set-up files (`rptman.sup`, `rptge1.rpt`, `rptgen.rpt`), system reports, `rptstp` ([task](../.claude/skills/reporting/tasks/report-checks.md)) | passed | n/a | Read-only plus one cancel: `rptstp rptge1` stopped the endless-loop test report `CIENG_LOOP` (removed). 28 system reports; two names differ from the manual (ISS-043). |
|
| R40/C30 | REPORT Service checks: processes, set-up files (`rptman.sup`, `rptge1.rpt`, `rptgen.rpt`), system reports, `rptstp` ([task](../.claude/skills/reporting/tasks/report-checks.md)) | passed | n/a | Read-only plus one cancel: `rptstp rptge1` stopped the endless-loop test report `CIENG_LOOP` (removed). 28 system reports; two names differ from the manual (ISS-043). |
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue