- 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>
6.4 KiB
| task | version | source | status |
|---|---|---|---|
| Build a display in the Edit Module and check the saved file | R1.03 | 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) | verified |
Build a display (Edit Module)
The user draws; Claude gives the steps and checks the result. The sample displays
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
- Start the Edit Module and log in.
- File > New Display, name
<DisplayName>; tick HTML display if it should also run in a browser (the editor then hides unsupported components and properties). - Add components from the component bar, for example:
- Text — title.
- Number field — in the Properties sheet click Value, open the connection dialog,
Items tab, pick
<Section>.<Tag>. - Alarm Overview — right-click > Component Properties; Filter tab for an ASA, section or tag filter; Types tab for current/historical.
- Trend — component properties, pen 1 =
<Section>.<Tag>(a new trend has 5 empty pens; the item must be in a storage group).
- File > Save (or Save with Revision Information). Close the tab when done: an open
display is locked (
<DisplayName>.lck) andjwuiutlskips it.
Check the saved file
Folder %TLS_WAP_PATH%\cfg\operatorInterfaces\DEPLOY\displays\ (and with HTML mode also
%TLS_WAP_PATH%\mobileoperator\operatorInterfaces\DEPLOY\displays\<DisplayName>.html).
grep -n "<html>\|<width>\|<height>\|itemName\|itemId\|<source" <DisplayName>.xml
<html>true</html>= HTML mode;<width>/<height>must be set for the HTML display.- Item connections:
<itemName>+<itemId>(node.group.number…); trend pens:<source type="sourceID" uri="ci:/item/<item>"/>(uri=""= empty pen). - Write a fixed value with a button (verified in the HTML display, buttons Manual / Auto on
the former
CIENG_Tankand, since 2026-10-06, onCIENG_Control):<button>›<data>›<action type="actionSetItemAttribute">with<event type="event" event="On action"/>,<filter type="filter"><value>1.0</value></filter>and a<connection>with<direction>2</direction>,<itemName>,<itemAttribute>ItemValue(the factory popups useItemValueOW, presumably the overwrite variant likeitmval -o; not tested). The factory popupAOG_SetNumberPVuses the same action behind its Apply button. - After the item is deleted and loaded again it gets a new id; the display still validates,
but on 2026-10-01 the HTML display showed 0 and the popup
ITM-E-NO_MAIN, No main item foundfor a number field whose stored<itemId>was stale, also in a fresh session. Deleting the<itemId>line (keeping<itemName>) and redeploying fixed it: the field binds by name. Sample displays therefore carry no<itemId>; for displays made in the Edit Module, reconnect 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)
Text CI-Eng-Sample Tank 1, number field on TANK1.LEVEL (live: 72 → 61), alarm overview
(no filter; listed the TANK1.LEVEL alarms), trend pen TANK1.LEVEL (legend
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;
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. 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).