With the user's approval two temporary displays were deployed, viewed in the web client and removed (display folders identical before/after): - a 2-pen trend draws on the R1.05 web client (ISS-096 closed; ISS-041 fixed on R1.05); - the default R1.05 Content-Security-Policy blocks external pages in a web browser component; same-origin pages load (ISS-111). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
10 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: 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. 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).