Tested on the R1.05 test server 2026-10-09..12 with a user project (own objects only); not yet on CI-Eng-Sample (ISS-188). Only results that were tested are included; inferences, code-only and manual-only points and the untested sample layout change were left out. - layouts: 'logout' is a secondary logout, always disabled on the R1.05 web client; 'exit' closes the window and ends the session (ISS-182). - create-display: R1.05 web client table (String items in text vs textField, fixed text alignment, start-hidden limits ISS-183, two visibility conditions, On entry display actions, rectangle blinking, verified connections, first load). - java-class 4a: signal arrays at scale, write on change, attribute arrays, offline javac/javap check; change-reset-class: new signals need the object recreated, attributes lost (ISS-185); opcdbg reset in cmd, TRIGGER_1 via dssqld -m. - string-items (ISS-187), users-groups, modbus-station (400 registers, comm loss), export-dataset (NAME range filter), item-alarming. - new task system-management/package-project.md; tools/ModbusSim.java (tested on R1.05: FC03/04/06/16, exceptions, modes); AMSI (ISS-186). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
13 KiB
task: Build a display in the Edit Module and check the saved file version: R1.05 (first written for R1.03) source: IM 36K10C50-01EN (R1.03 3rd ed. Sep. 2023; R1.05 5th ed. Feb. 2026) §1.2, §1.7, §2, §2.22, §2.25, §2.31–2.33, §4.8.1, §4.12; 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 on R1.03 (Edit Module steps, saved XML, generator rules). R1.05: manual re-checked 2026-10-08 (section R1.05 below, from docs); not re-tested on the R1.05 test server (shared server, no displays may be deployed; component list comparison awaiting user verification)
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) |
R1.05 web client: findings from a generated display (verified 2026-10-12, user project on the R1.05 test server, 2026-10-09 to 10-12)
A generated display with about 1,900 components (6 MB XML, 1 MB HTML) on the R1.05 web client:
| Topic | Finding |
|---|---|
| Text bound to a String item | <text> with text.value ← ItemValue works. keepOriginalSize false stretches it to the box (as on R1.03, unreadable for changing text); true draws it centred at natural size, good for centred values. For left-aligned changing text use a <textField>: textField.value ← ItemValue, <editable>false, <borderType type="border" value="BorderEmpty"/>, justification TextJustificationLeft (or Right). <opaque>false is ignored: set backgroundColor to the colour behind it, or connect textField.backgroundColor through a threshold with output type ColorSet when the background changes. |
| Fixed text that must align | A <text> is centred on its box at its natural width; on one viewer's client long lines started left of their box. A <textField> with a fixed <value> (no connection) is left-aligned (checked in the test browser). |
| Hidden at start | <visible>false</visible> plus a *.visible connection: rectangles, texts and numbers appear when the condition becomes true; ellipses, textFields and numberFields stay hidden. Leave those visible at start. Without a start value every conditional component is drawn until the first values arrive. |
| Two conditions | Two connections to the same *.visible property do not combine (numbers stayed visible after one of their two conditions became false). Encode the condition in one item (e.g. a state item the calculation writes). |
| Display actions on open | Actions placed directly in coreObjectDefinition (before the first layer, as in the factory AOG_ItemFaceplate) with <event type="event" event="On entry"/> run when the display opens and on Reload; e.g. actionSetItemAttribute to reset a selection item. |
| Blinking | rectangle.blinking ← item through a threshold (output Boolean) plus a blinkingPaint blinks (the component toggles visibility at the display's blinkDelay, 500 ms). |
| Also verified | numberField with asDateTime on ItemValue (epoch seconds); text.fillPaint, rectangle.strokePaint, ellipse.strokePaint through thresholds; actionSetItemAttribute with event Clicked b1 on a rectangle and on a number (a number drawn on a clickable shape needs its own action, it catches the click). |
| Size and first load | Once the first values took about a minute on a display this size; later loads took 3–10 s. |
R1.05: component changes since R1.03 (from docs, IM 36K10C50-01EN 5th ed.)
| Component / sheet | Change (version) |
|---|---|
| Calculation/Function → Generic Functions (§2.31) | Renamed (R1.05 manual). Timing now documented: Date and Time runs every 200 ms; other operations check their inputs every 100 ms and run on a change, and also when the display is loaded or reloaded. |
| Generic Functions: Password Check (R1.04) | Inputs T[I1] user name, T[I2] password; B[O] TRUE and T[O] = user name if the pair is valid, else FALSE and the DSS error text (e.g. DSS-E-UNK_USER). Needs the login method Manual CI Server or Manual OS for the Password Check function in dssana.sup (Login control tab; skill authorization). Not tested. |
| Generic Functions: RDP Connect (R1.05) | When triggered, writes an .rdp file and starts a Remote Desktop session to T[I1] (host or IP). Optional T[I2] RemoteApp alias/program, T[I3] RemoteApp command line, T[I4] RD Gateway (host[:port], default 443). T[O] receives the generated file name. Installed helper: %TLS_ROOT_PATH%\tls\com\connectrdp.cmd. Not tested (needs a remote desktop target). |
| JavaScript Function (§2.32) | Wording: inputs checked every 100 ms, script runs on a change and also when the display is loaded/reloaded (R1.03 text implied no run at load). |
| Alarm overview (§2.22, R1.04/R1.05) | New [Acknowledgement] properties: Use Custom Acknowledgement (acknowledge from a user-made window instead of the overview) enables Acknowledge Event, Acknowledged Alarm, Acknowledged Alarm Text, Acknowledged Alarm Time; Selected Alarm Key; [External Acknowledgement] (Alarm Key, Approver, Reason, Trigger); [Enterprise Alarm Locations] for enterprise displays. |
| Actions sheet (§4.12, R1.04) | Update item/parameter on an item, object signal or parameter can carry Reason (≤ 256 chars) and Approver (≤ 128 chars); they land in AUDIT_TRAIL fields APPROVAL_REASON / APPROVER (skill audit-trail). Two documented recipes for alarm acknowledgement with reason/approver: via an item parameter (attribute Acknowledged = 1, item alarms only) or via the overview's External Acknowledgement properties (item and external alarms). Not tested. |
| Dataset tables (§2.25, R1.05) | Column Icon, Icon filter (<v>, !<v>, &<v> bit test), Icon tooltip; Operator can use column sorters; Operator can select row(s) / multiple rows; [Enterprise Dataset Locations]; enterprise location supported on the HTML display. |
| Report (§2.26, R1.05) | New [Enterprise] category (primary / secondary data location). |
Web Browser (§2.33, R1.05) — web client: external pages are blocked by the R1.05 default Content-Security-Policy (verified 2026-10-09, ISS-111); only pages from the CI Server itself load, unless the host is added as frame-src in jwuiisg.sup (skill portal-setup, check-web-access.md; verified). Component type extendedIExplorer (class WebBrowserChromium), property url |
New browser engine: protocols WebRTC, HTTPS, WebSocket, HTTP/2, HTTP/3; codecs VP8, VP9, WebM, Opus, Vorbis, PCM. Content that played on R1.04 or earlier may not play after the upgrade. Right-click menu; new properties Go Home/Stop/Reload, [Printing], [Status], [Security] (Enable Microphone/Camera, Allow Insecure Certificates, Allow Local file access). Local files for CI Mobile View must be placed under %TLS_ALLUSERS_PATH%\wap and opened by URL. |
| Display generator (§2.36) | The note "not supported on HTML displays" was removed in the R1.05 manual; R30 §4.8 does not list it. Treat web support as unconfirmed. |
jwuiutl -m / -M (§1.5) |
Output now described as space-separated (R1.03 manual: CSV). On R1.03 -m printed comma-separated lines (verified); R1.05 output not checked (ISS-094). |
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).