diff --git a/.claude/skills/audit-trail/tasks/configure-audit.md b/.claude/skills/audit-trail/tasks/configure-audit.md index 90e62af..8684bfc 100644 --- a/.claude/skills/audit-trail/tasks/configure-audit.md +++ b/.claude/skills/audit-trail/tasks/configure-audit.md @@ -35,7 +35,8 @@ switching anything off. `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 -`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 `ADMIN`, old 0 / new 1, plus `ITEM` `STATUS` `MODIFY` (13 → 9). - `AUDIT_INFO` 0: the write 1 → 0 left **no** audit record. diff --git a/.claude/skills/authorization/tasks/users-groups.md b/.claude/skills/authorization/tasks/users-groups.md index 8da8f1d..cb1f84c 100644 --- a/.claude/skills/authorization/tasks/users-groups.md +++ b/.claude/skills/authorization/tasks/users-groups.md @@ -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`, `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 -the Engineering Module (the user does this, not Claude). Template: +`LOCALE`, `ENTERPRISE`, `LAYOUT`, playback fields. Password: without a `PASSWORD` field the user +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 @@ -81,6 +84,20 @@ NAME ## Test system (2026-09-30) -Group `CIENG_VIEWER` and user `CIENG_TEST` (no password, logoff 15 min) loaded with 0 errors, -exported back as defined, then removed (1 + 1 removed, 0 errors). The group is part of -CI-Eng-Sample; the sample creates no users. +Group `CIENG_VIEWER` and user `CIENG_TEST` (no `PASSWORD` field, logoff 15 min) loaded with 0 +errors, exported back as defined, then removed (1 + 1 removed, 0 errors). Logon was not tried; +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). diff --git a/.claude/skills/graphics/SKILL.md b/.claude/skills/graphics/SKILL.md index e49bb9f..a70a4a6 100644 --- a/.claude/skills/graphics/SKILL.md +++ b/.claude/skills/graphics/SKILL.md @@ -38,10 +38,11 @@ Rules: | 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 | +| 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 | | 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 | -| 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 | | Symbols, parameters, actions, localisation, record/playback | C50 summary §1, §4, §5 | from docs | | AOG library (styles, symbols, faceplates, templates) | C60 summary | from docs | diff --git a/.claude/skills/graphics/tasks/create-display.md b/.claude/skills/graphics/tasks/create-display.md index 7b675fb..0419507 100644 --- a/.claude/skills/graphics/tasks/create-display.md +++ b/.claude/skills/graphics/tasks/create-display.md @@ -1,14 +1,15 @@ --- task: Build a display in the Edit Module and check the saved file 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 --- # Build a display (Edit Module) -The user draws; Claude gives the steps and checks the result. Example = the sample display -`examples/CI-Eng-Sample/displays/CIENG_Tank.xml`. +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 @@ -38,8 +39,8 @@ grep -n "\|\|\|itemName\|itemId\|.xml - `true` = HTML mode; ``/`` must be set for the HTML display. - Item connections: `` + `` (node.group.number…); trend pens: `` (`uri=""` = empty pen). -- Write a fixed value with a button (verified in the HTML display, `CIENG_Tank` *Manual (0)* / - *Auto (1)*): ` +14falsetruepriorityNackColor[00]priorityAckColor[00]priorityNackColor[01]priorityAckColor[01]priorityNackColor[02]priorityAckColor[02]priorityNackColor[03]priorityAckColor[03]priorityNackColor[04]priorityAckColor[04]priorityNackColor[05]priorityAckColor[05]priorityNackColor[06]priorityAckColor[06]priorityNackColor[07]priorityAckColor[07]priorityNackColor[08]priorityAckColor[08]priorityNackColor[09]priorityAckColor[09]priorityNackColor[10]priorityAckColor[10]priorityNackColor[11]priorityAckColor[11]priorityNackColor[12]priorityAckColor[12]priorityNackColor[13]priorityAckColor[13]priorityNackColor[14]priorityAckColor[14]priorityNackColor[15]priorityAckColor[15]true1199true269true3299true4169true5319true6299true7119true8109true9109falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse1-12-23-30-0,4-15 + + diff --git a/examples/CI-Eng-Sample/displays/CIENG_Alarms.xml b/examples/CI-Eng-Sample/displays/CIENG_Alarms.xml new file mode 100644 index 0000000..e495e82 --- /dev/null +++ b/examples/CI-Eng-Sample/displays/CIENG_Alarms.xml @@ -0,0 +1,39 @@ + + + + + +Alarms +true +1880 +760 +15 + +true + + + + + + +500 +true +false +2OverviewAlways showntrue10.0 +3RoughShown when viewing viewing a large areatrue25.0 +4StandardShown when using the default view settingtrue100.0 +5DetailShown only when viewing a small areatrue400.0 +6IntricaciesShown only when viewing a very small areatrue1000.0 +1Layer1 +9 +7940.0380.0380.0380.0940.0940.00.00.0falsetrue +80.01080.0459940.0229.1217.9217.9930.0930.00.00.0truetrue +9CURRENT ALARMStrue78.336.911.011.048.348.30.00.0 +10All areas - acknowledge with the check box or right-clicktrue150.959.29.09.0120.9120.90.00.0 +11falsetruepriorityNackColor[00]priorityAckColor[00]priorityNackColor[01]priorityAckColor[01]priorityNackColor[02]priorityAckColor[02]priorityNackColor[03]priorityAckColor[03]priorityNackColor[04]priorityAckColor[04]priorityNackColor[05]priorityAckColor[05]priorityNackColor[06]priorityAckColor[06]priorityNackColor[07]priorityAckColor[07]priorityNackColor[08]priorityAckColor[08]priorityNackColor[09]priorityAckColor[09]priorityNackColor[10]priorityAckColor[10]priorityNackColor[11]priorityAckColor[11]priorityNackColor[12]priorityAckColor[12]priorityNackColor[13]priorityAckColor[13]priorityNackColor[14]priorityAckColor[14]priorityNackColor[15]priorityAckColor[15]true1213true274true3320true4181true5341true6320true7128true8117true9117falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse1-12-23-30-0,4-15 +120.01080.0688940.0603.5145.3145.3930.0930.00.00.0truetrue +13ALARM HISTORY - TANK 1true96.8483.911.011.066.866.80.00.0 +14Historical overview filtered on alarm selection area CIENG_TANK1true166.5506.39.09.0136.5136.50.00.0 +15falsetruepriorityNackColor[00]priorityAckColor[00]priorityNackColor[01]priorityAckColor[01]priorityNackColor[02]priorityAckColor[02]priorityNackColor[03]priorityAckColor[03]priorityNackColor[04]priorityAckColor[04]priorityNackColor[05]priorityAckColor[05]priorityNackColor[06]priorityAckColor[06]priorityNackColor[07]priorityAckColor[07]priorityNackColor[08]priorityAckColor[08]priorityNackColor[09]priorityAckColor[09]priorityNackColor[10]priorityAckColor[10]priorityNackColor[11]priorityAckColor[11]priorityNackColor[12]priorityAckColor[12]priorityNackColor[13]priorityAckColor[13]priorityNackColor[14]priorityAckColor[14]priorityNackColor[15]priorityAckColor[15]true1213true274true3320true4181true5341true6320true7128true8117true9117falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse1-12-23-30-0,4-15CIENG_TANK1 + + diff --git a/examples/CI-Eng-Sample/displays/CIENG_Control.xml b/examples/CI-Eng-Sample/displays/CIENG_Control.xml new file mode 100644 index 0000000..5501c0c --- /dev/null +++ b/examples/CI-Eng-Sample/displays/CIENG_Control.xml @@ -0,0 +1,96 @@ + + + + + +Process control +true +1880 +760 +72 + +true + + + + + + +500 +true +false +2OverviewAlways showntrue10.0 +3RoughShown when viewing viewing a large areatrue25.0 +4StandardShown when using the default view settingtrue100.0 +5DetailShown only when viewing a small areatrue400.0 +6IntricaciesShown only when viewing a very small areatrue1000.0 +1Layer1 +66 +7940.0380.0380.0380.0940.0940.00.00.0falsetrue +80.02160.0551472.5192.8181.6181.6462.5462.50.00.0truetrue +9SETPOINT -> PLC1 (MODBUS LOOPBACK)true134.836.911.011.0104.8104.80.00.0 +10Slider, spinner and input field write PLC1.SETPOINT; READBACK returns through Modbustrue218.259.29.09.0188.2188.20.00.0 +11100.00.00.010.05.0truetruefalsefalse0.0CI-Eng-Sample.PLC1.SETPOINTItemValue +12SPINNERtrue61.0176.68.08.021.021.00.00.0 +13true5.00.0100.0false0.0CI-Eng-Sample.PLC1.SETPOINTItemValue +14INPUT FIELDtrue228.3176.68.08.028.328.30.00.0 +15999true0.0CI-Eng-Sample.PLC1.SETPOINTItemValue +16SETPOINTtrue383.4176.68.08.023.423.40.00.0 +170.0999true381.9210.120.020.021.921.90.00.00.01CI-Eng-Sample.PLC1.SETPOINTItemValue +18READBACK (data bar + scale)true105.8261.58.08.065.865.80.00.0 +19true0.0100.00.01CI-Eng-Sample.PLC1.READBACKItemValue +20100.00.010.05.0999false +2145.0270.0false790.0195.695.095.095.095.00.00.0truefalse +22179.80.5false790.0195.695.095.095.095.00.00.0truefalse0.0java.lang.Doublejava.lang.Double0.0100.00.5270.01CI-Eng-Sample.PLC1.READBACKItemValue0.0java.lang.Doublejava.lang.Double0.0100.0179.7545.01CI-Eng-Sample.PLC1.READBACKItemValue +230.0999true790.0191.118.018.081.081.00.00.00.01CI-Eng-Sample.PLC1.READBACKItemValue +24true790.0223.59.09.040.040.00.00.0 +25Readbacktrue790.0306.210.010.095.095.00.00.0 +26706.040.26.06.06.06.00.00.0falsetrue0.0java.lang.Booleanfasttools.jwui.common.property.paint.PaintSetfalsetrue1CI-Eng-Sample.PLC1.COMM_OKItemValue +27station CIENG_PLCtrue762.939.19.09.044.944.90.00.0 +280.02160.05511407.5192.8181.6181.6462.5462.50.00.0truetrue +29DIGITAL COMMAND -> PLC1.CMDtrue1052.836.911.011.087.887.80.00.0 +30Toggle and push buttons write the coil; FEEDBACK is read back from the input bittrue1139.059.29.09.0174.0174.00.00.0 +310.0CI-Eng-Sample.PLC1.CMDItemValue + + +341360.0156.560.060.060.060.00.00.0truetrue0.0java.lang.Booleanfasttools.jwui.common.property.paint.PaintSetfalsetrue1CI-Eng-Sample.PLC1.FEEDBACKItemValue +35FEEDBACKtrue1360.0156.512.012.060.060.00.00.0 +36LAST CHANGE OF FEEDBACKtrue1525.3109.58.08.065.365.30.00.0 +37truetrue0.01CI-Eng-Sample.PLC1.FEEDBACKItemUpdTime +38STATUStrue1478.5187.88.08.018.518.50.00.0 +39NORMALtrue1493.6214.612.012.033.633.60.00.00.01CI-Eng-Sample.PLC1.FEEDBACKItemStatusMnemonic +400.02160.0551472.5567.2181.6181.6462.5462.50.00.0truetrue +41PUMP 1true50.5411.311.011.020.520.50.00.0 +42Combo box, buttons and check box write PUMP1.MODE / PUMP1.RUNNING (mode changes are audited)true257.7433.69.09.0227.7227.70.00.0 +43MODE (COMBO BOX)true90.2456.08.08.050.250.20.00.0 +440.0CI-Eng-Sample.PUMP1.MODEItemValue + + +47RUN COMMAND (CHECK BOX, MANUAL MODE)true152.1543.28.08.0112.1112.10.00.0 +48false0.0CI-Eng-Sample.PUMP1.RUNNINGItemValue +49DESCRIPTION (TEXT FIELD)true102.4625.98.08.062.462.40.00.0 +50false0.01CI-Eng-Sample.PUMP1.MODEItemDesc +51655.0530.955.055.055.055.00.00.0truetrue0.0java.lang.Booleanfasttools.jwui.common.property.paint.PaintSetfalsetrue1CI-Eng-Sample.PUMP1.RUNNINGItemValue +52P1true655.0529.812.012.055.055.00.00.0 +53RUN TIME (INTEGRATOR)true670.0621.48.08.0110.0110.00.00.0 +540.09999999true705.6651.617.017.044.444.40.00.00.01CI-Eng-Sample.PUMP1.RUNNING.RUN_SECONDSItemValue +55strue756.4653.89.09.02.42.40.00.0 +560.02160.05511407.5567.2181.6181.6462.5462.50.00.0truetrue +57TANK 1 - ALARM TESTtrue1021.5411.311.011.056.556.50.00.0 +58Stop live data first, then drive TANK1.LEVEL across its limits (H 80 / HH 90 / L 20 / LL 10)true1150.2433.69.09.0185.2185.20.00.0 +59100.00.00.010.05.0truetruefalsefalse0.0CI-Eng-Sample.TANK1.LEVELItemValue + + + + + +65LEVELtrue988.2641.58.08.013.213.20.00.0 +660.0999.9true1026.2680.625.025.051.251.20.00.00.01CI-Eng-Sample.TANK1.LEVELItemValue0.0java.lang.Doublefasttools.jwui.common.property.paint.PaintSet0.010.020.080.090.01CI-Eng-Sample.TANK1.LEVELItemValue +67ITEM STATUStrue1211.7641.58.08.031.731.70.00.0 +68NORMALtrue1226.3678.417.017.046.346.30.00.00.01CI-Eng-Sample.TANK1.LEVELItemStatusMnemonic0.0java.lang.Doublefasttools.jwui.common.property.paint.PaintSet0.010.020.080.090.01CI-Eng-Sample.TANK1.LEVELItemValue +6945.0270.0false1720.0581.290.090.090.090.00.00.0truefalse +70179.80.5false1720.0581.290.090.090.090.00.00.0truefalse0.0java.lang.Doublejava.lang.Double0.0100.00.5270.01CI-Eng-Sample.TANK1.LEVELItemValue0.0java.lang.Doublejava.lang.Double0.0100.0179.7545.01CI-Eng-Sample.TANK1.LEVELItemValue0.0java.lang.Doublefasttools.jwui.common.property.paint.PaintSet0.010.020.080.090.01CI-Eng-Sample.TANK1.LEVELItemValue +71100.00.020.05.0999225.0-270.0 +720.0999.9true1720.0581.220.020.060.060.00.00.00.01CI-Eng-Sample.TANK1.LEVELItemValue + + diff --git a/examples/CI-Eng-Sample/displays/CIENG_Header.xml b/examples/CI-Eng-Sample/displays/CIENG_Header.xml new file mode 100644 index 0000000..6fed28e --- /dev/null +++ b/examples/CI-Eng-Sample/displays/CIENG_Header.xml @@ -0,0 +1,67 @@ + + + + + +Header +true +1920 +96 +43 + +true + + + + + + +500 +true +false +2OverviewAlways showntrue10.0 +3RoughShown when viewing viewing a large areatrue25.0 +4StandardShown when using the default view settingtrue100.0 +5DetailShown only when viewing a small areatrue400.0 +6IntricaciesShown only when viewing a very small areatrue1000.0 +1Layer1 +37 +7960.048.048.048.0960.0960.00.00.0falsetrue +8960.095.00.50.5960.0960.00.00.0falsetrue +90.46670.466750.048.030.030.030.030.00.00.0falsetrue +10CItrue50.048.014.014.030.030.00.00.0 +11CI-Eng-Sampletrue171.133.015.015.075.175.10.00.0 +12Operations dashboard | Tank farm demotrue201.862.010.010.0105.8105.80.00.0 +130.09520.2353604.048.034.034.084.084.00.00.0truetrue +14TANK LEVELtrue561.830.08.08.027.827.80.00.0 +150.0999.9true563.256.016.016.029.229.20.00.00.01CI-Eng-Sample.TANK1.LEVELItemValue0.0java.lang.Doublefasttools.jwui.common.property.paint.PaintSet0.010.020.080.090.01CI-Eng-Sample.TANK1.LEVELItemValue +16%true642.459.09.09.04.44.40.00.0 +170.09520.2353784.048.034.034.084.084.00.00.0truetrue +18INFLOWtrue733.030.08.08.019.019.00.00.0 +190.09999.9true749.156.016.016.035.135.10.00.00.01CI-Eng-Sample.TANK1.INFLOWItemValue +20m3/htrue830.259.09.09.012.212.20.00.0 +210.09520.2353964.048.034.034.084.084.00.00.0truetrue +22VOLUMEtrue914.530.08.08.020.520.50.00.0 +230.09999.9true929.156.016.016.035.135.10.00.00.01CI-Eng-Sample.TANK1.CALC.VOLUMEItemValue +24m3true1005.359.09.09.07.37.30.00.0 +250.09520.23531144.048.034.034.084.084.00.00.0truetrue +26PUMP 1true1092.530.08.08.018.518.50.00.0 +271083.057.09.09.09.09.00.00.0falsetrue0.0java.lang.Booleanfasttools.jwui.common.property.paint.PaintSetfalsetrue1CI-Eng-Sample.PUMP1.RUNNINGItemValue +28RUNNINGtrue1132.256.012.012.032.232.20.00.00.0java.lang.Booleanjava.lang.Booleanfalsefalsetruetrue1CI-Eng-Sample.PUMP1.RUNNINGItemValue +29STOPPEDtrue1130.256.012.012.030.230.20.00.00.0java.lang.Booleanjava.lang.Booleanfalsetruetruefalse1CI-Eng-Sample.PUMP1.RUNNINGItemValue +300.09520.23531324.048.034.034.084.084.00.00.0truetrue +31COMMUNICATIONtrue1297.930.08.08.043.943.90.00.0 +321261.057.07.07.07.07.00.00.0falsetrue0.0java.lang.Booleanfasttools.jwui.common.property.paint.PaintSetfalsetrue1CI-Eng-Sample.PLC1.COMM_OKItemValue +33PLC1true1286.756.010.010.012.712.70.00.0 +341337.057.07.07.07.07.00.00.0falsetrue0.0java.lang.Booleanfasttools.jwui.common.property.paint.PaintSetfalsetrue1CI-Eng-Sample.UA.COMM_OKItemValue +35OPC UAtrue1370.556.010.010.020.520.50.00.0 +360.06400.23531549.048.034.034.0125.0125.00.00.0truetrue +37LIVE DATAtrue1462.430.08.08.024.424.40.00.0 +381542.029.06.06.06.06.00.00.0falsetrue0.0java.lang.Booleanfasttools.jwui.common.property.paint.PaintSetfalsetrue1CI-Eng-Sample.DEMO.FEED_ONItemValue + + + +42LAST UPDATEtrue1823.730.08.08.031.731.70.00.0 +43falsetrue0.01CI-Eng-Sample.DEMO.COUNTERItemUpdTime + + diff --git a/examples/CI-Eng-Sample/displays/CIENG_Menu.xml b/examples/CI-Eng-Sample/displays/CIENG_Menu.xml deleted file mode 100644 index 85dac15..0000000 --- a/examples/CI-Eng-Sample/displays/CIENG_Menu.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - true - 200 - 700 - 2 - - - - - - - - - - - 500 - true - false - - 2 - Overview - Always shown - true - 10.0 - - - 3 - Rough - Shown when viewing viewing a large area - true - 25.0 - - - 4 - Standard - Shown when using the default view setting - true - 100.0 - - - 5 - Detail - Shown only when viewing a small area - true - 400.0 - - - 6 - Intricacies - Shown only when viewing a very small area - true - 1000.0 - - - 1 - Layer1 - - 3 - - - - - \ No newline at end of file diff --git a/examples/CI-Eng-Sample/displays/CIENG_Overview.xml b/examples/CI-Eng-Sample/displays/CIENG_Overview.xml new file mode 100644 index 0000000..545581a --- /dev/null +++ b/examples/CI-Eng-Sample/displays/CIENG_Overview.xml @@ -0,0 +1,100 @@ + + + + + +Overview +true +1880 +760 +76 + +true + + + + + + +500 +true +false +2OverviewAlways showntrue10.0 +3RoughShown when viewing viewing a large areatrue25.0 +4StandardShown when using the default view settingtrue100.0 +5DetailShown only when viewing a small areatrue400.0 +6IntricaciesShown only when viewing a very small areatrue1000.0 +1Layer1 +70 +7940.0380.0380.0380.0940.0940.00.00.0falsetrue +80.01800.0271565.0380.0368.8368.8555.0555.00.00.0truetrue +9PROCESS - TANK 1true76.836.911.011.046.846.80.00.0 +10Click the tank for its faceplatetrue92.459.29.09.062.462.40.00.0 +11250.0377.88.08.0190.0190.00.00.0falsetrue +12250.0377.85.05.0190.0190.00.00.0falsetrue0.0java.lang.Doublejava.lang.Boolean0.0false5.0true1CI-Eng-Sample.TANK1.INFLOWItemValue +13INFLOWtrue79.0288.48.08.019.019.00.00.0 +140.09999.9true109.7321.920.020.049.749.70.00.00.01CI-Eng-Sample.TANK1.INFLOWItemValue +15m3/htrue227.7326.410.010.013.713.70.00.0 +16Tank 1 - click for the faceplate0.15000.0671560.0380.0268.2268.2120.0120.00.00.0truetrueCIENG_TankFaceplateCIENG_Popupdefault +170.10910.0467560.0380.0257.1257.1110.0110.00.00.0falsetrue0.50.0java.lang.Doublejava.lang.Double0.0100.00.01.01CI-Eng-Sample.TANK1.LEVELItemValue0.0java.lang.Doublefasttools.jwui.common.property.paint.PaintSet0.010.020.080.090.01CI-Eng-Sample.TANK1.LEVELItemValueCIENG_TankFaceplateCIENG_Popupdefault +18TANK 1true560.082.714.014.0110.0110.00.00.0 +190.0999.9true560.0363.225.025.0100.0100.00.00.00.01CI-Eng-Sample.TANK1.LEVELItemValue +20% leveltrue560.0404.610.010.0100.0100.00.00.0 +21691.0174.41.01.09.09.00.00.0falsetrue +22HH 90true721.1174.49.09.015.115.10.00.0 +23691.0225.81.01.09.09.00.00.0falsetrue +24H 80true717.2225.89.09.011.211.20.00.0 +25691.0534.21.01.09.09.00.00.0falsetrue +26L 20true715.8534.29.09.09.89.80.00.0 +27691.0585.61.01.09.09.00.00.0falsetrue +28LL 10true718.2585.69.09.012.212.20.00.0 + +30755.0603.58.08.075.075.00.00.0falsetrue +31755.0603.55.05.075.075.00.00.0falsetrue0.01CI-Eng-Sample.PUMP1.RUNNINGItemValue +32875.0603.545.045.045.045.00.00.0truetrue0.0java.lang.Booleanfasttools.jwui.common.property.paint.PaintSetfalsetrue1CI-Eng-Sample.PUMP1.RUNNINGItemValue +33P1true875.0603.512.012.045.045.00.00.0 +341005.0603.58.08.085.085.00.00.0falsetrue +351005.0603.55.05.085.085.00.00.0falsetrue0.01CI-Eng-Sample.PUMP1.RUNNINGItemValue +36PUMP 1true875.0680.69.09.075.075.00.00.0 +37AUTOtrue875.0704.110.010.075.075.00.00.00.0java.lang.Doublejava.lang.Boolean0.0false1.0true1CI-Eng-Sample.PUMP1.MODEItemValue +38MANUALtrue875.0704.110.010.075.075.00.00.00.0java.lang.Doublejava.lang.Boolean0.0true1.0false1CI-Eng-Sample.PUMP1.MODEItemValue +390.06960.0434975.0285.0184.4184.4115.0115.00.00.0truetrue +40VOLUME (TANK1.CALC)true926.2125.28.08.050.250.20.00.0 +410.09999.9true911.1153.115.015.035.135.10.00.00.01CI-Eng-Sample.TANK1.CALC.VOLUMEItemValue +42m3true1035.3155.49.09.07.37.30.00.0 +43FLOW PER SECOND (JFLOW)true938.4196.78.08.062.462.40.00.0 +440.0999.99true911.1224.615.015.035.135.10.00.00.01CI-Eng-Sample.TANK1.JFLOW.sPerMinItemValue +45m3/strue1039.7226.99.09.011.711.70.00.0 +46LEVEL MAXIMUMtrue914.0268.28.08.038.038.00.00.0 +470.0999.9true905.2296.215.015.029.229.20.00.00.01CI-Eng-Sample.TANK1.LEVEL.MAXItemValue +48%true1032.4298.49.09.04.44.40.00.0 +49COUNTER (DEMO.INCR1)true930.1339.88.08.054.154.10.00.0 +500.0999true893.5367.715.015.017.617.60.00.00.01CI-Eng-Sample.DEMO.COUNTERItemValue +51true1030.0369.99.09.02.02.00.00.0 +52true0.0100.00.01CI-Eng-Sample.DEMO.COUNTERItemValue +53PUMP RUN TIMEtrue913.0429.28.08.037.037.00.00.0 +540.09999999true906.7451.512.012.030.730.70.00.00.01CI-Eng-Sample.PUMP1.RUNNING.RUN_SECONDSItemValue +55strue1032.4452.69.09.02.42.40.00.0 +560.02700.05421500.0195.6184.4184.4370.0370.00.00.0truetrue +57KEY FIGUREStrue1182.736.911.011.032.732.70.00.0 +5845.0270.0false1255.0195.695.095.095.095.00.00.0truefalse +59179.80.5false1255.0195.695.095.095.095.00.00.0truefalse0.0java.lang.Doublejava.lang.Double0.0100.00.5270.01CI-Eng-Sample.TANK1.LEVELItemValue0.0java.lang.Doublejava.lang.Double0.0100.0179.7545.01CI-Eng-Sample.TANK1.LEVELItemValue0.0java.lang.Doublefasttools.jwui.common.property.paint.PaintSet0.010.020.080.090.01CI-Eng-Sample.TANK1.LEVELItemValue +600.0999.9true1255.0191.118.018.081.081.00.00.00.01CI-Eng-Sample.TANK1.LEVELItemValue0.0java.lang.Doublefasttools.jwui.common.property.paint.PaintSet0.010.020.080.090.01CI-Eng-Sample.TANK1.LEVELItemValue +61%true1255.0223.59.09.040.040.00.00.0 +62Leveltrue1255.0306.210.010.095.095.00.00.0 +6345.0270.0false1500.0195.695.095.095.095.00.00.0truefalse +64179.80.5false1500.0195.695.095.095.095.00.00.0truefalse0.0java.lang.Doublejava.lang.Double0.0500.00.5270.01CI-Eng-Sample.TANK1.INFLOWItemValue0.0java.lang.Doublejava.lang.Double0.0500.0179.7545.01CI-Eng-Sample.TANK1.INFLOWItemValue +650.09999true1500.0191.118.018.081.081.00.00.00.01CI-Eng-Sample.TANK1.INFLOWItemValue +66m3/htrue1500.0223.59.09.040.040.00.00.0 +67Inflowtrue1500.0306.210.010.095.095.00.00.0 +6845.0270.0false1745.0195.695.095.095.095.00.00.0truefalse +69179.80.5false1745.0195.695.095.095.095.00.00.0truefalse0.0java.lang.Doublejava.lang.Double0.0200.00.5270.01CI-Eng-Sample.TANK1.CALC.VOLUMEItemValue0.0java.lang.Doublejava.lang.Double0.0200.0179.7545.01CI-Eng-Sample.TANK1.CALC.VOLUMEItemValue +700.0999.9true1745.0191.118.018.081.081.00.00.00.01CI-Eng-Sample.TANK1.CALC.VOLUMEItemValue +71m3true1745.0223.59.09.040.040.00.00.0 +72Volumetrue1745.0306.210.010.095.095.00.00.0 +730.02700.05591500.0570.0178.8178.8370.0370.00.00.0truetrue +74LAST 10 MINUTEStrue1195.3416.911.011.045.345.30.00.0 +75Micro trend: level (teal, 0-100 %) and inflow (violet, 0-500 m3/h)true1284.5439.29.09.0134.5134.50.00.0 +762truetruetruefalseitemName[0]scaleMin[0]0.0scaleMax[0]100.0color[0]stroke[0]itemName[1]scaleMin[1]0.0scaleMax[1]500.0color[1]stroke[1]0.01CI-Eng-Sample.TANK1.LEVELItemName0.01CI-Eng-Sample.TANK1.INFLOWItemName + + diff --git a/examples/CI-Eng-Sample/displays/CIENG_System.xml b/examples/CI-Eng-Sample/displays/CIENG_System.xml new file mode 100644 index 0000000..76d37e2 --- /dev/null +++ b/examples/CI-Eng-Sample/displays/CIENG_System.xml @@ -0,0 +1,84 @@ + + + + + +System +true +1880 +760 +60 + +true + + + + + + +500 +true +false +2OverviewAlways showntrue10.0 +3RoughShown when viewing viewing a large areatrue25.0 +4StandardShown when using the default view settingtrue100.0 +5DetailShown only when viewing a small areatrue400.0 +6IntricaciesShown only when viewing a very small areatrue1000.0 +1Layer1 +54 +7940.0380.0380.0380.0940.0940.00.00.0falsetrue +80.03330.0559310.0190.0178.8178.8300.0300.00.00.0truetrue +9SERVER HEALTHtrue70.936.911.011.040.940.90.00.0 +10Real values of this PC, written by the live-data feedtrue137.259.29.09.0107.2107.20.00.0 +1145.0270.0false160.0201.2100.0100.0100.0100.00.00.0truefalse +12179.80.5false160.0201.2100.0100.0100.0100.00.00.0truefalse0.0java.lang.Doublejava.lang.Double0.0100.00.5270.01CI-Eng-Sample.SYSTEM.CPU_LOADItemValue0.0java.lang.Doublejava.lang.Double0.0100.0179.7545.01CI-Eng-Sample.SYSTEM.CPU_LOADItemValue0.0java.lang.Doublefasttools.jwui.common.property.paint.PaintSet0.080.090.01CI-Eng-Sample.SYSTEM.CPU_LOADItemValue +130.0999.9true160.0196.718.018.086.086.00.00.00.01CI-Eng-Sample.SYSTEM.CPU_LOADItemValue +14%true160.0229.19.09.040.040.00.00.0 +15CPU loadtrue160.0317.410.010.0100.0100.00.00.0 +1645.0270.0false450.0201.2100.0100.0100.0100.00.00.0truefalse +17179.80.5false450.0201.2100.0100.0100.0100.00.00.0truefalse0.0java.lang.Doublejava.lang.Double0.0100.00.5270.01CI-Eng-Sample.SYSTEM.DISK_CItemValue0.0java.lang.Doublejava.lang.Double0.0100.0179.7545.01CI-Eng-Sample.SYSTEM.DISK_CItemValue0.0java.lang.Doublefasttools.jwui.common.property.paint.PaintSet0.080.090.01CI-Eng-Sample.SYSTEM.DISK_CItemValue +180.0999.9true450.0196.718.018.086.086.00.00.00.01CI-Eng-Sample.SYSTEM.DISK_CItemValue +19%true450.0229.19.09.040.040.00.00.0 +20Disk C: usedtrue450.0317.410.010.0100.0100.00.00.0 +210.03330.0559920.0190.0178.8178.8300.0300.00.00.0truetrue +22COMMUNICATION AND PROCESSEStrue731.636.911.011.091.691.60.00.0 +230.02140.2440920.091.624.624.6280.0280.00.00.0falsetrue +24665.091.69.09.09.09.00.00.0falsetrue0.0java.lang.Booleanfasttools.jwui.common.property.paint.PaintSetfalsetrue1CI-Eng-Sample.PLC1.COMM_OKItemValue +25Modbus station CIENG_PLCtrue765.591.610.010.077.577.50.00.0 +26NORMALtrue1165.691.610.010.024.424.40.00.00.01CI-Eng-Sample.PLC1.COMM_OKItemStatusMnemonic +270.02140.2440920.0149.824.624.6280.0280.00.00.0falsetrue +28665.0149.89.09.09.09.00.00.0falsetrue0.0java.lang.Booleanfasttools.jwui.common.property.paint.PaintSetfalsetrue1CI-Eng-Sample.UA.COMM_OKItemValue +29OPC UA client station CIENG_UAtrue778.7149.810.010.090.790.70.00.0 +30NORMALtrue1165.6149.810.010.024.424.40.00.00.01CI-Eng-Sample.UA.COMM_OKItemStatusMnemonic +310.02140.2440920.0207.924.624.6280.0280.00.00.0falsetrue +32665.0207.99.09.09.09.00.00.0falsetrue0.0java.lang.Doublefasttools.jwui.common.property.paint.PaintSet0.00.51CI-Eng-Sample.UA.SRV_STATEItemValue +33OPC UA server state (0 = running)true784.5207.910.010.096.596.50.00.0 +34NORMALtrue1165.6207.910.010.024.424.40.00.00.01CI-Eng-Sample.UA.SRV_STATEItemStatusMnemonic +350.02140.2440920.0266.024.624.6280.0280.00.00.0falsetrue +36665.0266.09.09.09.09.00.00.0falsetrue0.0java.lang.Doublefasttools.jwui.common.property.paint.PaintSet0.00.51CI-Eng-Sample.SYSTEM.PING_LOCALHOSTItemValue +37localhost reachabletrue743.1266.010.010.055.155.10.00.0 +38NORMALtrue1165.6266.010.010.024.424.40.00.00.01CI-Eng-Sample.SYSTEM.PING_LOCALHOSTItemStatusMnemonic +390.02140.2440920.0324.124.624.6280.0280.00.00.0falsetrue +40665.0324.19.09.09.09.00.00.0falsetrue0.0java.lang.Doublefasttools.jwui.common.property.paint.PaintSet0.00.51CI-Eng-Sample.SYSTEM.PROC_ALMItemValue +41ALARM process (alm) runningtrue772.3324.110.010.084.384.30.00.0 +42NORMALtrue1165.6324.110.010.024.424.40.00.00.01CI-Eng-Sample.SYSTEM.PROC_ALMItemStatusMnemonic +430.03120.05591550.0190.0178.8178.8320.0320.00.00.0truetrue +44OPC UA LOOPBACKtrue1299.736.911.011.049.749.70.00.0 +45TANK1.LEVEL read back through CI Server's own OPC UA servertrue1385.559.29.09.0135.5135.50.00.0 +46TANK1.LEVELtrue1290.787.28.08.030.730.70.00.0 +470.0999.9true1303.9125.222.022.043.943.90.00.00.01CI-Eng-Sample.TANK1.LEVELItemValue +48true0.0100.00.01CI-Eng-Sample.TANK1.LEVELItemValue +49LAST UPDATEtrue1291.7212.48.08.031.731.70.00.0 +50falsetrue0.01CI-Eng-Sample.TANK1.LEVELItemUpdTime +51UA.LEVEL_COPYtrue1596.187.28.08.036.136.10.00.0 +520.0999.9true1603.9125.222.022.043.943.90.00.00.01CI-Eng-Sample.UA.LEVEL_COPYItemValue +53true0.0100.00.01CI-Eng-Sample.UA.LEVEL_COPYItemValue +54LAST UPDATEtrue1591.7212.48.08.031.731.70.00.0 +55falsetrue0.01CI-Eng-Sample.UA.LEVEL_COPYItemUpdTime +56100.00.010.05.0999false +570.01080.0542940.0564.4184.4184.4930.0930.00.00.0truetrue +58REPORTStrue52.9405.711.011.022.922.90.00.0 +59Report component: select CIENG_TANK1 or CIENG_HTML, generate and viewtrue193.3428.19.09.0163.3163.30.00.0 +60 + + diff --git a/examples/CI-Eng-Sample/displays/CIENG_Tank.xml b/examples/CI-Eng-Sample/displays/CIENG_Tank.xml deleted file mode 100644 index fdca304..0000000 --- a/examples/CI-Eng-Sample/displays/CIENG_Tank.xml +++ /dev/null @@ -1,2626 +0,0 @@ - - - - - - - - - - - - - - - - - true - 1984 - 760 - 8 - - - - - - - - - - - 500 - true - false - - 2 - Overview - Always shown - true - 10.0 - - - 3 - Rough - Shown when viewing viewing a large area - true - 25.0 - - - 4 - Standard - Shown when using the default view setting - true - 100.0 - - - 5 - Detail - Shown only when viewing a small area - true - 400.0 - - - 6 - Intricacies - Shown only when viewing a very small area - true - 1000.0 - - - 1 - Layer1 - - 9 - - 7 - CI-Eng-Sample Tank 1 - - true - 124.734375 - 36.953125 - 5.3125 - 5.3125 - 52.375 - 52.375 - 0.0 - 0.0 - - - 8 - - - - - 0.0 - - - CI-Eng-Sample.TANK1.LEVEL - ItemValue - - - - - - 9 - - - - 10 - - - - false - -1 - true - - 0 - 0 - - - - - - - - false - - @NULL - false - 0 - 0 - 800 - 400 - false - - - - - - - true - @NULL - - - - - false - false - true - - true - true - false - true - - - - - - 0.2705882352941177 - - - true - false - true - false - false - false - false - false - 50 - 0 - 0 - true - true - false - - - - true - true - 0 - - 0 - 50 - true - - - false - - - - - - - - - - - - - - - true - true - 0 - true - - - 256 - - - @NULL - true - true - - false - 0 - true - true - true - @NULL - @NULL - 0 - NaN - NaN - false - - <description>Tank 1 level (%)</description> - <legendText/> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <penPanelLayout type="xyPenPanelLayout"> - <Height>417</Height> - <AutoSize>true</AutoSize> - <SplitLocation>-1</SplitLocation> - <column index="0" visible="true" width="20"/> - <column index="1" visible="true" width="20"/> - <column index="2" visible="true" width="150"/> - <column index="3" visible="true" width="120"/> - <column index="4" visible="true" width="60"/> - <column index="5" visible="false" width="120"/> - <column index="6" visible="false" width="120"/> - <column index="7" visible="false" width="60"/> - <column index="8" visible="true" width="60"/> - <column index="9" visible="true" width="60"/> - <column index="10" visible="false" width="20"/> - <column index="11" visible="true" width="90"/> - <column index="12" visible="false" width="130"/> - <column index="13" visible="true" width="200"/> - <column index="14" visible="false" width="240"/> - <column index="15" visible="false" width="280"/> - </penPanelLayout> - <timeRange type="timeRangeLast" count="1"> - <type type="timeUnit" value="TimeUnitHour"/> - </timeRange> - <updateInterval>30</updateInterval> - <fillHistory>true</fillHistory> - <updating>false</updating> - </chartPanel> - </config> - <x>472.0</x> - <y>588.0</y> - <top>172.0</top> - <bottom>172.0</bottom> - <left>344.0</left> - <right>344.0</right> - <rotation>0.0</rotation> - <shear>0.0</shear> - <data ref="17"/> - </chart> - <button type="componentData" x="404.0" y="68.0" top="20.0" bottom="20.0" left="84.0" right="84.0" rotation="0.0" shear="0.0"> - <htmlId>11</htmlId> - <label>Operator layout</label> - <data type="data"> - <action type="actionActivateDisplay"> - <event type="event" event="On action"/> - <type type="displayActivationType" value="ActivateSpecific"/> - <display>CIENG_Tank</display> - <layout>CIENG_Operator</layout> - <layoutFrame>default</layoutFrame> - </action> - </data> - </button> - <text type="componentData"> - <htmlId>12</htmlId> - <value>Pump 1 mode (0 manual, 1 auto)</value> - <stroke type="stroke" width="1.0"/> - <keepOriginalSize>true</keepOriginalSize> - <x>330.0</x> - <y>120.0</y> - <top>5.3125</top> - <bottom>5.3125</bottom> - <left>90.0</left> - <right>90.0</right> - <rotation>0.0</rotation> - <shear>0.0</shear> - </text> - <numberField type="componentData" x="480.0" y="120.0" top="16.0" bottom="16.0" left="30.0" right="30.0" rotation="0.0" shear="0.0"> - <htmlId>13</htmlId> - <data type="data"> - <action type="actionConnectTo"> - <property type="property" name="numberField.value"/> - <filter type="filter"> - <value>0.0</value> - </filter> - <connection type="connection"> - <itemName>CI-Eng-Sample.PUMP1.MODE</itemName> - <itemAttribute>ItemValue</itemAttribute> - </connection> - </action> - </data> - </numberField> - <button type="componentData" x="590.0" y="120.0" top="16.0" bottom="16.0" left="56.0" right="56.0" rotation="0.0" shear="0.0"> - <htmlId>14</htmlId> - <label>Manual (0)</label> - <data type="data"> - <action type="actionSetItemAttribute"> - <event type="event" event="On action"/> - <filter type="filter"> - <value>0.0</value> - </filter> - <connection type="connection"> - <direction>2</direction> - <location type="nodeName" node="$default$"/> - <itemName>CI-Eng-Sample.PUMP1.MODE</itemName> - <itemAttribute>ItemValue</itemAttribute> - </connection> - </action> - </data> - </button> - <button type="componentData" x="716.0" y="120.0" top="16.0" bottom="16.0" left="56.0" right="56.0" rotation="0.0" shear="0.0"> - <htmlId>15</htmlId> - <label>Auto (1)</label> - <data type="data"> - <action type="actionSetItemAttribute"> - <event type="event" event="On action"/> - <filter type="filter"> - <value>1.0</value> - </filter> - <connection type="connection"> - <direction>2</direction> - <location type="nodeName" node="$default$"/> - <itemName>CI-Eng-Sample.PUMP1.MODE</itemName> - <itemAttribute>ItemValue</itemAttribute> - </connection> - </action> - </data> - </button> - </coreObjectDefinition> -</visualization> \ No newline at end of file diff --git a/examples/CI-Eng-Sample/displays/CIENG_TankFaceplate.xml b/examples/CI-Eng-Sample/displays/CIENG_TankFaceplate.xml new file mode 100644 index 0000000..b2a8c55 --- /dev/null +++ b/examples/CI-Eng-Sample/displays/CIENG_TankFaceplate.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8" ?> +<visualization protocolVersion="1.3.0.0"> + <globalSection/> + <coreObjectDefinition type="displayDefinition"> +<version type="version" value="1.3.0.0"/> +<title>Tank 1 faceplate +true +420 +600 +42 + +true + + + + + + +500 +true +false +2OverviewAlways showntrue10.0 +3RoughShown when viewing viewing a large areatrue25.0 +4StandardShown when using the default view settingtrue100.0 +5DetailShown only when viewing a small areatrue400.0 +6IntricaciesShown only when viewing a very small areatrue1000.0 +1Layer1 +36 +7210.0300.0300.0300.0210.0210.00.00.0falsetrue +8210.026.026.026.0210.0210.00.00.0falsetrue +9TANK 1 | LEVELtrue77.526.012.012.057.557.50.00.0 + +11Tank 1 level (%)true57.073.09.09.037.037.00.00.00.01CI-Eng-Sample.TANK1.LEVELItemDesc +120.0999.9true78.5114.028.028.058.558.50.00.00.01CI-Eng-Sample.TANK1.LEVELItemValue0.0java.lang.Doublefasttools.jwui.common.property.paint.PaintSet0.010.020.080.090.01CI-Eng-Sample.TANK1.LEVELItemValue +13%true230.3118.012.012.06.36.30.00.0 +14STATUStrue381.5100.08.08.018.518.50.00.0 +15NORMALtrue366.4123.013.013.033.633.60.00.00.01CI-Eng-Sample.TANK1.LEVELItemStatusMnemonic0.0java.lang.Doublefasttools.jwui.common.property.paint.PaintSet0.010.020.080.090.01CI-Eng-Sample.TANK1.LEVELItemValue +16true0.0100.00.01CI-Eng-Sample.TANK1.LEVELItemValue +17100.00.020.05.0999true +18ALARM LIMITStrue225.1168.08.08.035.135.10.00.0 +190.05710.3529295.0203.017.017.0105.0105.00.00.0falsetrue +20193.0203.017.017.03.03.00.00.0falsetrue +21High-Hightrue233.8203.09.09.027.827.80.00.0 +220.0999.9true368.1203.013.013.021.921.90.00.00.01CI-Eng-Sample.TANK1.LEVELItemHHL +230.05710.3529295.0243.017.017.0105.0105.00.00.0falsetrue +24193.0243.017.017.03.03.00.00.0falsetrue +25Hightrue218.7243.09.09.012.712.70.00.0 +260.0999.9true368.1243.013.013.021.921.90.00.00.01CI-Eng-Sample.TANK1.LEVELItemHL +270.05710.3529295.0283.017.017.0105.0105.00.00.0falsetrue +28193.0283.017.017.03.03.00.00.0falsetrue +29Lowtrue216.7283.09.09.010.710.70.00.0 +300.0999.9true368.1283.013.013.021.921.90.00.00.01CI-Eng-Sample.TANK1.LEVELItemLL +310.05710.3529295.0323.017.017.0105.0105.00.00.0falsetrue +32193.0323.017.017.03.03.00.00.0falsetrue +33Low-Lowtrue229.9323.09.09.023.923.90.00.0 +340.0999.9true368.1323.013.013.021.921.90.00.00.01CI-Eng-Sample.TANK1.LEVELItemLLL +35MAXIMUM SEENtrue229.5360.08.08.039.539.50.00.0 +360.0999.9true219.2386.016.016.029.229.20.00.00.01CI-Eng-Sample.TANK1.LEVEL.MAXItemValue +37LAST UPDATEtrue221.7420.08.08.031.731.70.00.0 +38falsetrue0.01CI-Eng-Sample.TANK1.LEVELItemUpdTime +391truetruetruefalseitemName[0]scaleMin[0]0.0scaleMax[0]100.0color[0]stroke[0]0.01CI-Eng-Sample.TANK1.LEVELItemName + + + + + diff --git a/examples/CI-Eng-Sample/displays/CIENG_TrendLab.xml b/examples/CI-Eng-Sample/displays/CIENG_TrendLab.xml deleted file mode 100644 index 3037666..0000000 --- a/examples/CI-Eng-Sample/displays/CIENG_TrendLab.xml +++ /dev/null @@ -1,2598 +0,0 @@ - - - - - - - - - - - - - - - - - true - 1000 - 860 - 8 - - - - - - - - - - - 500 - true - false - - 2 - Overview - Always shown - true - 10.0 - - - 3 - Rough - Shown when viewing viewing a large area - true - 25.0 - - - 4 - Standard - Shown when using the default view setting - true - 100.0 - - - 5 - Detail - Shown only when viewing a small area - true - 400.0 - - - 6 - Intricacies - Shown only when viewing a very small area - true - 1000.0 - - - 1 - Layer1 - - 4 - - 7 - CI-Eng-Sample trend lab - - true - 100.0 - 24.0 - 5.3125 - 5.3125 - 70.0 - 70.0 - 0.0 - 0.0 - - - 8 - - - - false - -1 - true - - 0 - 0 - - - - - - - - false - - @NULL - false - 0 - 0 - 800 - 400 - false - - - - - - - true - @NULL - - - - - false - false - true - - true - true - false - true - - - - - - 0.2705882352941177 - - - true - false - true - false - false - false - false - false - 50 - 0 - 0 - true - true - false - - - - true - true - 0 - - 0 - 50 - true - - - false - - - - - - - - - - - - - - - true - true - 0 - true - - - 256 - - - @NULL - true - true - - true - 0 - true - true - true - @NULL - @NULL - 0 - NaN - NaN - false - - <description>Tank 1 level (%)</description> - <legendText/> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>256</type> - <color type="colorSet" r="241" g="76" b="20"/> - <stroke type="stroke" width="1.5"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>true</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.INFLOW?historygroup=CIENG_EVENT"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>0</scaleRangeType> - <minimum>NaN</minimum> - <maximum>NaN</maximum> - <procentual>false</procentual> - <title/> - <description>Tank 1 inflow</description> - <legendText/> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>NaN</lowLimit> - <highLimit>NaN</highLimit> - <lowLowLimit>NaN</lowLowLimit> - <highHighLimit>NaN</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <pen type="pen"> - <type>1</type> - <color type="colorSet" r="240" g="240" b="240"/> - <stroke type="stroke" width="0.0"/> - <paint>@NULL</paint> - <visible>true</visible> - <visibleLegend>false</visibleLegend> - <source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL"/> - <axisVisible>false</axisVisible> - <axisPosition>0</axisPosition> - <labelVisible>true</labelVisible> - <majorTickVisible>true</majorTickVisible> - <minorTickVisible>true</minorTickVisible> - <axisColor>@NULL</axisColor> - <labelColor>@NULL</labelColor> - <scaleRangeType>1</scaleRangeType> - <minimum>1.0E30</minimum> - <maximum>2.0E30</maximum> - <procentual>false</procentual> - <title/> - <description></description> - <legendText> </legendText> - <titlePlacement>0</titlePlacement> - <titleRotation>0</titleRotation> - <labelRotation>0</labelRotation> - <majorGridVisible>false</majorGridVisible> - <minorGridVisible>false</minorGridVisible> - <lowHighLimitGridVisible>false</lowHighLimitGridVisible> - <lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible> - <lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible> - <majorGridColor>@NULL</majorGridColor> - <minorGridColor>@NULL</minorGridColor> - <lowHighLimitGridColor>@NULL</lowHighLimitGridColor> - <lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor> - <lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor> - <majorGridStroke type="stroke" width="0.1"/> - <minorGridStroke type="stroke" width="0.1"/> - <lowHighLimitGridStroke type="stroke" width="0.1"/> - <lowLowHighHighLimiGridStroke type="stroke" width="0.1"/> - <lowLimit>20.0</lowLimit> - <highLimit>80.0</highLimit> - <lowLowLimit>10.0</lowLowLimit> - <highHighLimit>90.0</highHighLimit> - <annotationVisible>false</annotationVisible> - <timeShift>0</timeShift> - </pen> - <penPanelLayout type="xyPenPanelLayout"> - <Height>417</Height> - <AutoSize>true</AutoSize> - <SplitLocation>-1</SplitLocation> - <column index="0" visible="true" width="20"/> - <column index="1" visible="true" width="20"/> - <column index="2" visible="true" width="150"/> - <column index="3" visible="true" width="120"/> - <column index="4" visible="true" width="60"/> - <column index="5" visible="false" width="120"/> - <column index="6" visible="false" width="120"/> - <column index="7" visible="false" width="60"/> - <column index="8" visible="true" width="60"/> - <column index="9" visible="true" width="60"/> - <column index="10" visible="false" width="20"/> - <column index="11" visible="true" width="90"/> - <column index="12" visible="false" width="130"/> - <column index="13" visible="true" width="200"/> - <column index="14" visible="false" width="240"/> - <column index="15" visible="false" width="280"/> - </penPanelLayout> - <timeRange type="timeRangeLast" count="1"> - <type type="timeUnit" value="TimeUnitHour"/> - </timeRange> - <updateInterval>10</updateInterval> - <fillHistory>true</fillHistory> - <updating>true</updating> - </chartPanel> - </config> - <x>500.0</x> - <y>350.0</y> - <top>290.0</top> - <bottom>290.0</bottom> - <left>480.0</left> - <right>480.0</right> - <rotation>0.0</rotation> - <shear>0.0</shear> - <data ref="17"/> - </chart> - <text type="componentData"> - <htmlId>20</htmlId> - <value>Micro trend (LEVEL, INFLOW)</value> - <stroke type="stroke" width="1.0"/> - <keepOriginalSize>true</keepOriginalSize> - <x>110.0</x> - <y>670.0</y> - <top>5.3125</top> - <bottom>5.3125</bottom> - <left>90.0</left> - <right>90.0</right> - <rotation>0.0</rotation> - <shear>0.0</shear> - </text> - <microTrend type="componentData" x="220.0" y="760.0" top="70.0" bottom="70.0" left="200.0" right="200.0" rotation="0.0" shear="0.0"> - <htmlId>21</htmlId> - <numberOfPens>2</numberOfPens> - <realTime>true</realTime> - <fillWithHistory>true</fillWithHistory> - <property type="componentProperty"> - <name>itemName[0]</name> - <value/> - </property> - <property type="componentProperty"> - <name>scaleMin[0]</name> - <value>0.0</value> - </property> - <property type="componentProperty"> - <name>scaleMax[0]</name> - <value>100.0</value> - </property> - <property type="componentProperty"> - <name>itemName[1]</name> - <value/> - </property> - <property type="componentProperty"> - <name>scaleMin[1]</name> - <value>0.0</value> - </property> - <property type="componentProperty"> - <name>scaleMax[1]</name> - <value>500.0</value> - </property> - <data type="data"> - <action type="actionInternalServiced"/> - <action type="actionConnectTo"> - <property type="property" name="microTrend.itemName[0]"/> - <filter type="filter"> - <value>0.0</value> - </filter> - <connection type="connection"> - <direction>1</direction> - <itemName>CI-Eng-Sample.TANK1.LEVEL</itemName> - <itemAttribute>ItemName</itemAttribute> - </connection> - </action> - <action type="actionConnectTo"> - <property type="property" name="microTrend.itemName[1]"/> - <filter type="filter"> - <value>0.0</value> - </filter> - <connection type="connection"> - <direction>1</direction> - <itemName>CI-Eng-Sample.TANK1.INFLOW</itemName> - <itemAttribute>ItemName</itemAttribute> - </connection> - </action> - </data> - </microTrend> - </coreObjectDefinition> -</visualization> diff --git a/examples/CI-Eng-Sample/displays/CIENG_Trends.xml b/examples/CI-Eng-Sample/displays/CIENG_Trends.xml new file mode 100644 index 0000000..feff209 --- /dev/null +++ b/examples/CI-Eng-Sample/displays/CIENG_Trends.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8" ?> +<visualization protocolVersion="1.3.0.0"> + <globalSection/> + <coreObjectDefinition type="displayDefinition"> +<version type="version" value="1.3.0.0"/> +<title>Trends +true +1880 +760 +24 + +true + + + + + + +500 +true +false +2OverviewAlways showntrue10.0 +3RoughShown when viewing viewing a large areatrue25.0 +4StandardShown when using the default view settingtrue100.0 +5DetailShown only when viewing a small areatrue400.0 +6IntricaciesShown only when viewing a very small areatrue1000.0 +1Layer1 +18 +7940.0380.0380.0380.0940.0940.00.00.0falsetrue +80.01450.0271700.0380.0368.8368.8690.0690.00.00.0truetrue +9false-1true00false@NULLfalse001360715falsefalse@NULLfalsetruetruetruetruefalsetrue0.0truefalsefalsefalsefalsefalsefalsefalse5000truetruefalsetruefalse0050truefalseTank 1 - level and inflowtruetrue0true0@NULLtruetruetrue0truetruetrue@NULL@NULL10.0100.0false<description>Tank 1 level (%)</description><legendText></legendText><titlePlacement>0</titlePlacement><titleRotation>0</titleRotation><labelRotation>0</labelRotation><majorGridVisible>false</majorGridVisible><minorGridVisible>false</minorGridVisible><lowHighLimitGridVisible>false</lowHighLimitGridVisible><lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible><lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible><majorGridColor>@NULL</majorGridColor><minorGridColor>@NULL</minorGridColor><lowHighLimitGridColor>@NULL</lowHighLimitGridColor><lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor><lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor><majorGridStroke type="stroke" width="0.1"/><minorGridStroke type="stroke" width="0.1"/><lowHighLimitGridStroke type="stroke" width="0.1"/><lowLowHighHighLimiGridStroke type="stroke" width="0.1"/><annotationVisible>false</annotationVisible><timeShift>0</timeShift></pen><pen type="pen"><type>0</type><color type="colorSet" r="139" g="92" b="246"/><stroke type="stroke" width="2.0"/><paint>@NULL</paint><visible>true</visible><visibleLegend>true</visibleLegend><source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.INFLOW"/><axisVisible>false</axisVisible><axisPosition>0</axisPosition><labelVisible>true</labelVisible><majorTickVisible>true</majorTickVisible><minorTickVisible>true</minorTickVisible><axisColor>@NULL</axisColor><labelColor>@NULL</labelColor><scaleRangeType>1</scaleRangeType><minimum>0.0</minimum><maximum>500.0</maximum><procentual>false</procentual><title/><description>Tank 1 inflow (m3/h)</description><legendText></legendText><titlePlacement>0</titlePlacement><titleRotation>0</titleRotation><labelRotation>0</labelRotation><majorGridVisible>false</majorGridVisible><minorGridVisible>false</minorGridVisible><lowHighLimitGridVisible>false</lowHighLimitGridVisible><lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible><lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible><majorGridColor>@NULL</majorGridColor><minorGridColor>@NULL</minorGridColor><lowHighLimitGridColor>@NULL</lowHighLimitGridColor><lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor><lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor><majorGridStroke type="stroke" width="0.1"/><minorGridStroke type="stroke" width="0.1"/><lowHighLimitGridStroke type="stroke" width="0.1"/><lowLowHighHighLimiGridStroke type="stroke" width="0.1"/><annotationVisible>false</annotationVisible><timeShift>0</timeShift></pen><timeRange type="timeRangeLast" count="10"><type type="timeUnit" value="TimeUnitMinute"/></timeRange><updateInterval>5</updateInterval><fillHistory>true</fillHistory><updating>true</updating></chartPanel></config><x>700.0</x><y>380.0</y><top>357.6</top><bottom>357.6</bottom><left>680.0</left><right>680.0</right><rotation>0.0</rotation><shear>0.0</shear><data type="data"><action type="actionInternalServiced"/></data></chart> +<rectangle type="componentData"><htmlId>10</htmlId><roundingX>0.0426</roundingX><roundingY>0.0840</roundingY><x>1635.0</x><y>130.2</y><top>119.0</top><bottom>119.0</bottom><left>235.0</left><right>235.0</right><rotation>0.0</rotation><shear>0.0</shear><stroke type="stroke" width="1.0"/><strokeOn>true</strokeOn><strokePaint type="paint"><paint type="colorSet" r="48" g="61" b="77"/></strokePaint><fillOn>true</fillOn><fillPaint type="paint"><paint type="colorSet" r="28" g="35" b="45"/></fillPaint></rectangle> +<text type="componentData"><htmlId>11</htmlId><value>LEVEL</value><font type="font" name="Segoe UI" bold="true" size="11" underline="false" strikethrough="false"/><fillPaint type="paint"><paint type="colorSet" r="139" g="152" b="168"/></fillPaint><justification type="textJustification" value="TextJustificationCenter"/><stroke type="stroke" width="1.0"/><keepOriginalSize>true</keepOriginalSize><x>1435.1</x><y>36.9</y><top>11.0</top><bottom>11.0</bottom><left>15.1</left><right>15.1</right><rotation>0.0</rotation><shear>0.0</shear></text> +<number type="componentData"><htmlId>12</htmlId><value>0.0</value><format>999.9</format><font type="font" name="Consolas" bold="true" size="20" underline="false" strikethrough="false"/><fillPaint type="paint"><paint type="colorSet" r="20" g="184" b="166"/></fillPaint><justification type="textJustification" value="TextJustificationCenter"/><stroke type="stroke" width="1.0"/><keepOriginalSize>true</keepOriginalSize><x>1783.2</x><y>36.9</y><top>15.0</top><bottom>15.0</bottom><left>26.8</left><right>26.8</right><rotation>0.0</rotation><shear>0.0</shear><data type="data"><action type="actionConnectTo"><property type="property" name="number.value"/><filter type="filter"><value>0.0</value></filter><connection type="connection"><direction>1</direction><itemName>CI-Eng-Sample.TANK1.LEVEL</itemName><itemAttribute>ItemValue</itemAttribute></connection></action></data></number> +<text type="componentData"><htmlId>13</htmlId><value>%</value><font type="font" name="Segoe UI" size="11" underline="false" strikethrough="false"/><fillPaint type="paint"><paint type="colorSet" r="139" g="152" b="168"/></fillPaint><justification type="textJustification" value="TextJustificationCenter"/><stroke type="stroke" width="1.0"/><keepOriginalSize>true</keepOriginalSize><x>1818.4</x><y>36.9</y><top>9.0</top><bottom>9.0</bottom><left>4.4</left><right>4.4</right><rotation>0.0</rotation><shear>0.0</shear></text> +<microTrend type="componentData" x="1635.0" y="148.6" top="83.8" bottom="83.8" left="215.0" right="215.0" rotation="0.0" shear="0.0"><htmlId>14</htmlId><numberOfPens>1</numberOfPens><realTime>true</realTime><fillWithHistory>true</fillWithHistory><microTrendBackgroundFillOn>true</microTrendBackgroundFillOn><lowHighFillOn>false</lowHighFillOn><microTrendBackgroundFillColor type="colorSet" r="22" g="27" b="34"/><microTrendBackgroundColor type="colorSet" r="48" g="61" b="77"/><property type="componentProperty"><name>itemName[0]</name><value/></property><property type="componentProperty"><name>scaleMin[0]</name><value>0.0</value></property><property type="componentProperty"><name>scaleMax[0]</name><value>100.0</value></property><property type="componentProperty"><name>color[0]</name><value type="colorSet" r="20" g="184" b="166"/></property><property type="componentProperty"><name>stroke[0]</name><value type="stroke" width="2.0"/></property><data type="data"><action type="actionInternalServiced"/><action type="actionConnectTo"><property type="property" name="microTrend.itemName[0]"/><filter type="filter"><value>0.0</value></filter><connection type="connection"><direction>1</direction><itemName>CI-Eng-Sample.TANK1.LEVEL</itemName><itemAttribute>ItemName</itemAttribute></connection></action></data></microTrend> +<rectangle type="componentData"><htmlId>15</htmlId><roundingX>0.0426</roundingX><roundingY>0.0840</roundingY><x>1635.0</x><y>379.4</y><top>119.0</top><bottom>119.0</bottom><left>235.0</left><right>235.0</right><rotation>0.0</rotation><shear>0.0</shear><stroke type="stroke" width="1.0"/><strokeOn>true</strokeOn><strokePaint type="paint"><paint type="colorSet" r="48" g="61" b="77"/></strokePaint><fillOn>true</fillOn><fillPaint type="paint"><paint type="colorSet" r="28" g="35" b="45"/></fillPaint></rectangle> +<text type="componentData"><htmlId>16</htmlId><value>INFLOW</value><font type="font" name="Segoe UI" bold="true" size="11" underline="false" strikethrough="false"/><fillPaint type="paint"><paint type="colorSet" r="139" g="152" b="168"/></fillPaint><justification type="textJustification" value="TextJustificationCenter"/><stroke type="stroke" width="1.0"/><keepOriginalSize>true</keepOriginalSize><x>1441.0</x><y>286.1</y><top>11.0</top><bottom>11.0</bottom><left>21.0</left><right>21.0</right><rotation>0.0</rotation><shear>0.0</shear></text> +<number type="componentData"><htmlId>17</htmlId><value>0.0</value><format>9999.9</format><font type="font" name="Consolas" bold="true" size="20" underline="false" strikethrough="false"/><fillPaint type="paint"><paint type="colorSet" r="139" g="92" b="246"/></fillPaint><justification type="textJustification" value="TextJustificationCenter"/><stroke type="stroke" width="1.0"/><keepOriginalSize>true</keepOriginalSize><x>1777.8</x><y>286.1</y><top>15.0</top><bottom>15.0</bottom><left>32.2</left><right>32.2</right><rotation>0.0</rotation><shear>0.0</shear><data type="data"><action type="actionConnectTo"><property type="property" name="number.value"/><filter type="filter"><value>0.0</value></filter><connection type="connection"><direction>1</direction><itemName>CI-Eng-Sample.TANK1.INFLOW</itemName><itemAttribute>ItemValue</itemAttribute></connection></action></data></number> +<text type="componentData"><htmlId>18</htmlId><value>m3/h</value><font type="font" name="Segoe UI" size="11" underline="false" strikethrough="false"/><fillPaint type="paint"><paint type="colorSet" r="139" g="152" b="168"/></fillPaint><justification type="textJustification" value="TextJustificationCenter"/><stroke type="stroke" width="1.0"/><keepOriginalSize>true</keepOriginalSize><x>1826.2</x><y>286.1</y><top>9.0</top><bottom>9.0</bottom><left>12.2</left><right>12.2</right><rotation>0.0</rotation><shear>0.0</shear></text> +<microTrend type="componentData" x="1635.0" y="397.9" top="83.8" bottom="83.8" left="215.0" right="215.0" rotation="0.0" shear="0.0"><htmlId>19</htmlId><numberOfPens>1</numberOfPens><realTime>true</realTime><fillWithHistory>true</fillWithHistory><microTrendBackgroundFillOn>true</microTrendBackgroundFillOn><lowHighFillOn>false</lowHighFillOn><microTrendBackgroundFillColor type="colorSet" r="22" g="27" b="34"/><microTrendBackgroundColor type="colorSet" r="48" g="61" b="77"/><property type="componentProperty"><name>itemName[0]</name><value/></property><property type="componentProperty"><name>scaleMin[0]</name><value>0.0</value></property><property type="componentProperty"><name>scaleMax[0]</name><value>500.0</value></property><property type="componentProperty"><name>color[0]</name><value type="colorSet" r="139" g="92" b="246"/></property><property type="componentProperty"><name>stroke[0]</name><value type="stroke" width="2.0"/></property><data type="data"><action type="actionInternalServiced"/><action type="actionConnectTo"><property type="property" name="microTrend.itemName[0]"/><filter type="filter"><value>0.0</value></filter><connection type="connection"><direction>1</direction><itemName>CI-Eng-Sample.TANK1.INFLOW</itemName><itemAttribute>ItemName</itemAttribute></connection></action></data></microTrend> +<rectangle type="componentData"><htmlId>20</htmlId><roundingX>0.0426</roundingX><roundingY>0.0840</roundingY><x>1635.0</x><y>628.7</y><top>119.0</top><bottom>119.0</bottom><left>235.0</left><right>235.0</right><rotation>0.0</rotation><shear>0.0</shear><stroke type="stroke" width="1.0"/><strokeOn>true</strokeOn><strokePaint type="paint"><paint type="colorSet" r="48" g="61" b="77"/></strokePaint><fillOn>true</fillOn><fillPaint type="paint"><paint type="colorSet" r="28" g="35" b="45"/></fillPaint></rectangle> +<text type="componentData"><htmlId>21</htmlId><value>CPU LOAD</value><font type="font" name="Segoe UI" bold="true" size="11" underline="false" strikethrough="false"/><fillPaint type="paint"><paint type="colorSet" r="139" g="152" b="168"/></fillPaint><justification type="textJustification" value="TextJustificationCenter"/><stroke type="stroke" width="1.0"/><keepOriginalSize>true</keepOriginalSize><x>1446.8</x><y>535.4</y><top>11.0</top><bottom>11.0</bottom><left>26.8</left><right>26.8</right><rotation>0.0</rotation><shear>0.0</shear></text> +<number type="componentData"><htmlId>22</htmlId><value>0.0</value><format>999.9</format><font type="font" name="Consolas" bold="true" size="20" underline="false" strikethrough="false"/><fillPaint type="paint"><paint type="colorSet" r="59" g="130" b="246"/></fillPaint><justification type="textJustification" value="TextJustificationCenter"/><stroke type="stroke" width="1.0"/><keepOriginalSize>true</keepOriginalSize><x>1783.2</x><y>535.4</y><top>15.0</top><bottom>15.0</bottom><left>26.8</left><right>26.8</right><rotation>0.0</rotation><shear>0.0</shear><data type="data"><action type="actionConnectTo"><property type="property" name="number.value"/><filter type="filter"><value>0.0</value></filter><connection type="connection"><direction>1</direction><itemName>CI-Eng-Sample.SYSTEM.CPU_LOAD</itemName><itemAttribute>ItemValue</itemAttribute></connection></action></data></number> +<text type="componentData"><htmlId>23</htmlId><value>%</value><font type="font" name="Segoe UI" size="11" underline="false" strikethrough="false"/><fillPaint type="paint"><paint type="colorSet" r="139" g="152" b="168"/></fillPaint><justification type="textJustification" value="TextJustificationCenter"/><stroke type="stroke" width="1.0"/><keepOriginalSize>true</keepOriginalSize><x>1818.4</x><y>535.4</y><top>9.0</top><bottom>9.0</bottom><left>4.4</left><right>4.4</right><rotation>0.0</rotation><shear>0.0</shear></text> +<microTrend type="componentData" x="1635.0" y="647.1" top="83.8" bottom="83.8" left="215.0" right="215.0" rotation="0.0" shear="0.0"><htmlId>24</htmlId><numberOfPens>1</numberOfPens><realTime>true</realTime><fillWithHistory>false</fillWithHistory><microTrendBackgroundFillOn>true</microTrendBackgroundFillOn><lowHighFillOn>false</lowHighFillOn><microTrendBackgroundFillColor type="colorSet" r="22" g="27" b="34"/><microTrendBackgroundColor type="colorSet" r="48" g="61" b="77"/><property type="componentProperty"><name>itemName[0]</name><value/></property><property type="componentProperty"><name>scaleMin[0]</name><value>0.0</value></property><property type="componentProperty"><name>scaleMax[0]</name><value>100.0</value></property><property type="componentProperty"><name>color[0]</name><value type="colorSet" r="59" g="130" b="246"/></property><property type="componentProperty"><name>stroke[0]</name><value type="stroke" width="2.0"/></property><data type="data"><action type="actionInternalServiced"/><action type="actionConnectTo"><property type="property" name="microTrend.itemName[0]"/><filter type="filter"><value>0.0</value></filter><connection type="connection"><direction>1</direction><itemName>CI-Eng-Sample.SYSTEM.CPU_LOAD</itemName><itemAttribute>ItemName</itemAttribute></connection></action></data></microTrend> + </coreObjectDefinition> +</visualization> diff --git a/examples/CI-Eng-Sample/displays/deploy_displays.cmd b/examples/CI-Eng-Sample/displays/deploy_displays.cmd index f4d289a..55ab3ef 100644 --- a/examples/CI-Eng-Sample/displays/deploy_displays.cmd +++ b/examples/CI-Eng-Sample/displays/deploy_displays.cmd @@ -3,12 +3,11 @@ rem Deploy the CI-Eng-Sample displays into the operator interface (deployment DE rem CI Server R1.03.00. Load the sample (load.cmd) first; no admin rights needed. rem Copies the display XML, then creates the HTML (Mobile Operator) version with jwuiutl; rem without -o the HTML goes to %TLS_WAP_PATH%\mobileoperator\operatorInterfaces\DEPLOY. +rem The files are generated by generator\build.py (already in this folder; rerun only after changes). cd /d "%~dp0" set WAP=%TLS_WAP_PATH% if not defined TLS_WAP_PATH set WAP=C:\Users\Public\Yokogawa\tls\wap -copy /y CIENG_Tank.xml "%WAP%\cfg\operatorInterfaces\DEPLOY\displays\" -copy /y CIENG_Menu.xml "%WAP%\cfg\operatorInterfaces\DEPLOY\displays\" -copy /y CIENG_TrendLab.xml "%WAP%\cfg\operatorInterfaces\DEPLOY\displays\" -call jwuiutl.cmd -e HTML -i -f DEPLOY CIENG_Tank -call jwuiutl.cmd -e HTML -i -f DEPLOY CIENG_Menu -call jwuiutl.cmd -e HTML -i -f DEPLOY CIENG_TrendLab +for %%d in (CIENG_Header CIENG_Overview CIENG_Control CIENG_Trends CIENG_Alarms CIENG_System CIENG_AlarmBanner CIENG_TankFaceplate) do ( + copy /y %%d.xml "%WAP%\cfg\operatorInterfaces\DEPLOY\displays\" > nul + call jwuiutl.cmd -e HTML -i -f DEPLOY %%d +) diff --git a/examples/CI-Eng-Sample/displays/generator/.gitignore b/examples/CI-Eng-Sample/displays/generator/.gitignore new file mode 100644 index 0000000..c18dd8d --- /dev/null +++ b/examples/CI-Eng-Sample/displays/generator/.gitignore @@ -0,0 +1 @@ +__pycache__/ diff --git a/examples/CI-Eng-Sample/displays/generator/README.md b/examples/CI-Eng-Sample/displays/generator/README.md new file mode 100644 index 0000000..30d5ee9 --- /dev/null +++ b/examples/CI-Eng-Sample/displays/generator/README.md @@ -0,0 +1,45 @@ +# Display generator (CI-Eng-Sample operator HMI) + +A small Python tool that **writes the CI-Eng-Sample display files** (`..\CIENG_*.xml`) instead of +drawing them in the Edit Module. The XML is the same format the Edit Module saves (display +definition 1.3.0.0, *HTML display* on), so the files run in the Operator Interface (desktop) and in +the HTML display (web), and they can still be opened and changed in the Edit Module afterwards +(but a later generator run overwrites such changes). + +Built and tested with CI Server R1.03.00, Python 3.12 and Pillow, 2026-10-06. + +## Files + +| File | Purpose | +|---|---| +| `cixml.py` | Library: a `Display` class with one method per component (rectangle, text, number, number/text/date-time field, button, toggle, check box, slider, spinner, combo box, data bar, scales, arc / ring gauge, lamp, alarm overview, report, micro trend, trend), item connections, linear and threshold transformations, actions (open / close display, set item value, execute command) and the dark colour theme | +| `build.py` | The eight sample displays: `CIENG_Header`, `CIENG_Overview`, `CIENG_Control`, `CIENG_Trends`, `CIENG_Alarms`, `CIENG_System`, `CIENG_AlarmBanner` (layout `CIENG_Operator`) and `CIENG_TankFaceplate` (layout `CIENG_Popup`) | + +## Use + +``` +python build.py (writes ..\CIENG_*.xml) +python build.py <folder> (writes into another folder) +``` + +Then deploy with `..\deploy_displays.cmd`. Requirements: Python 3, Pillow (`pip install pillow`; +used to measure text widths with the Windows fonts Segoe UI and Consolas). Without Pillow it falls +back to an estimate and left/right-aligned texts land slightly off. + +## How it works (rules learned on R1.03.00) + +- Positions are boxes (left, top, width, height); the file stores the centre plus half sizes. +- Texts and numbers use *keep original size*: the HTML export draws them at their font size centred + on the box (otherwise the text is stretched to the box). The box is therefore shrunk to the + measured text width for left / right alignment. +- Rectangle rounding is stored as a fraction (0..1) of the half size; values above 1 draw an + ellipse (desktop and web). +- The tab displays are designed 1880 x 680 and stretched to 1880 x 760 (`design_h`): panels, bars, + lists and trends grow, texts / controls / round shapes keep their size and only move. +- Arc angles (desktop and web alike, fixed or connected): degrees **clockwise** from 3 o'clock + (screen y points down), negative values allowed - not the counter-clockwise maths convention. + The ring gauges have the gap on the right and the value growing from 9 o'clock up and down. +- The live-data button runs `C:\Users\Public\CI-Eng-Sample\feed\cieng_feed_start.cmd` on the + server (`FEED_START` in `build.py`; installed by `..\..\feed\install_feed.ps1`). +- Trend: `trend(..., web_spares=True)` pads a trend to 50 pens so it also draws on the web; the + sample trend uses `web_spares=False` (2 pens, clean desktop hairline, no line on the web). diff --git a/examples/CI-Eng-Sample/displays/generator/build.py b/examples/CI-Eng-Sample/displays/generator/build.py new file mode 100644 index 0000000..7109dc6 --- /dev/null +++ b/examples/CI-Eng-Sample/displays/generator/build.py @@ -0,0 +1,351 @@ +"""Build the CI-Eng-Sample demo displays (CI Server R1.03.00, HTML mode = desktop + web). + + python build.py [<output folder>] (default: the displays folder, ..) + +See README.md in this folder. + +Displays: CIENG_Header, CIENG_Overview, CIENG_Control, CIENG_Trends, CIENG_Alarms, CIENG_System, +CIENG_AlarmBanner (frames of layout CIENG_Operator) and CIENG_TankFaceplate (layout CIENG_Popup). +""" +import os, sys +sys.path.insert(0, os.path.dirname(__file__)) +from cixml import * + +S = 'CI-Eng-Sample.' +LEVEL, INFLOW, VOLUME = S + 'TANK1.LEVEL', S + 'TANK1.INFLOW', S + 'TANK1.CALC.VOLUME' +LVL_COLORS = [(0, 'red'), (10, 'amber'), (20, 'teal'), (80, 'amber'), (90, 'red')] # LL/L/normal/H/HH +# live-data feed, installed by feed\install_feed.ps1 into a fixed folder outside CI Server +FEED_START = r'cmd /c "C:\Users\Public\CI-Eng-Sample\feed\cieng_feed_start.cmd"' +W, H, HD = 1880, 760, 680 # content displays (tab frames): 1880 x 760 (about 2.5:1, between the + # 16:9 and 16:10 content areas); coordinates below are designed for 680 high +FACEPLATE = act_open('CIENG_TankFaceplate', 'CIENG_Popup', 'default') +FACEPLATE_CLICK = act_open('CIENG_TankFaceplate', 'CIENG_Popup', 'default', event='Clicked b1') + + +def card(d, l, t, w, h, title, sub=None): + d.rect(l, t, w, h, fill='card', stroke='line', r=10) + d.text(l + 20, t + 12, w - 40, 22, title.upper(), 11, 'muted', bold=True) + if sub: + d.text(l + 20, t + 34, w - 40, 18, sub, 10, 'dim') + + +def kv(d, l, t, w, label, item, fmt, unit, size=22, color='text', extra=()): + d.text(l, t, w, 16, label, 10, 'muted') + d.number(l, t + 18, w - 50, 30, item, fmt, size, color, align='Left', extra=extra) + d.text(l + w - 48, t + 26, 48, 18, unit, 11, 'muted') + + +def level_color(prop='number.fillPaint'): + return conn(prop, LEVEL, transform=tr_threshold(LVL_COLORS)) + + +def gauge(d, cx, cy, r, item, mn, mx, fmt, unit, label, color='teal', thresholds=None, extra=()): + d.ring_gauge(cx, cy, r, item, mn, mx, color, 12, thresholds) + d.number(cx - r + 14, cy - 22, 2 * r - 28, 36, item, fmt, 26, align='Center', extra=extra) + d.text(cx - 40, cy + 16, 80, 18, unit, 11, 'muted', align='Center') + d.text(cx - r, cy + r - 6, 2 * r, 20, label, 12, 'text', bold=True, align='Center') + + +def build_header(): + d = Display('CIENG_Header', 1920, 96, 'Header', bg='panel') + d.rect(0, 0, 1920, 96, fill='panel') + d.line(0, 95, 1920, 95, 'line', 1) + d.rect(20, 18, 60, 60, fill='blue', r=14) + d.text(20, 34, 60, 28, 'CI', 22, 'white', bold=True, align='Center') + d.text(96, 18, 380, 30, 'CI-Eng-Sample', 22, 'text', bold=True) + d.text(96, 52, 400, 20, 'Operations dashboard | Tank farm demo', 12, 'muted') + # KPI chips + chips = [(520, 'TANK LEVEL', LEVEL, '999.9', '%', [level_color()]), + (700, 'INFLOW', INFLOW, '9999.9', 'm3/h', []), + (880, 'VOLUME', VOLUME, '9999.9', 'm3', [])] + for x, label, item, fmt, unit, extra in chips: + d.rect(x, 14, 168, 68, fill='card', stroke='line', r=8) + d.text(x + 14, 22, 140, 16, label, 10, 'muted', bold=True) + d.number(x + 14, 40, 100, 32, item, fmt, 22, align='Left', extra=extra) + d.text(x + 118, 50, 46, 18, unit, 11, 'muted') + x = 1060 + d.rect(x, 14, 168, 68, fill='card', stroke='line', r=8) + d.text(x + 14, 22, 140, 16, 'PUMP 1', 10, 'muted', bold=True) + d.lamp(x + 14, 48, 18, S + 'PUMP1.RUNNING') + for txt, col, on in (('RUNNING', 'green', True), ('STOPPED', 'muted', False)): + d.text(x + 40, 44, 120, 24, txt, 14, col, bold=True) + d.parts[-1] = d.parts[-1].replace('</text>', data([conn('text.visible', S + 'PUMP1.RUNNING', + transform=tr_threshold([(False, not on), (True, on)], 'Boolean', 'Boolean'))]) + '</text>') + x = 1240 + d.rect(x, 14, 168, 68, fill='card', stroke='line', r=8) + d.text(x + 14, 22, 140, 16, 'COMMUNICATION', 10, 'muted', bold=True) + d.lamp(x + 14, 50, 14, S + 'PLC1.COMM_OK', off='red') + d.text(x + 34, 46, 50, 20, 'PLC1', 12, 'text') + d.lamp(x + 90, 50, 14, S + 'UA.COMM_OK', off='red') + d.text(x + 110, 46, 50, 20, 'OPC UA', 12, 'text') + # live data start/stop + x = 1424 + d.rect(x, 14, 250, 68, fill='card', stroke='line', r=8) + d.text(x + 14, 22, 120, 16, 'LIVE DATA', 10, 'muted', bold=True) + d.lamp(x + 112, 23, 12, S + 'DEMO.FEED_ON') + d.button(x + 14, 44, 104, 30, 'Start', [act_set(S + 'DEMO.FEED_ON', 1), act_cmd(FEED_START)], fg='white', bg='green', + tip='Start the live-data feed (cieng_feed.ps1) on the server') + d.button(x + 130, 44, 104, 30, 'Stop', [act_set(S + 'DEMO.FEED_ON', 0)], fg='text', bg='card2', + tip='Stop the feed (ends within 5 s)') + # faceplate + clock + d.button(1688, 14, 92, 68, 'Tank 1', [FACEPLATE], fg='white', bg='blue', tip='Open the Tank 1 faceplate popup') + d.text(1792, 22, 120, 16, 'LAST UPDATE', 10, 'muted', bold=True) + d.time_text(1792, 44, 122, 28, S + 'DEMO.COUNTER', 9) + return d + + +def build_overview(): + d = Display('CIENG_Overview', W, H, 'Overview', design_h=HD) + d.rect(0, 0, W, HD, fill='bg') + card(d, 10, 10, 1110, 660, 'Process - Tank 1', 'Click the tank for its faceplate') + # inflow pipe + flow indicator + d.rect(60, 330, 380, 16, fill='track') + d.rect(60, 333, 380, 10, fill='teal', actions=[conn('rectangle.visible', INFLOW, + transform=tr_threshold([(0, False), (5, True)], 'Double', 'Boolean'))]) + d.text(60, 250, 200, 16, 'INFLOW', 10, 'muted', bold=True) + d.number(60, 268, 150, 40, INFLOW, '9999.9', 30, align='Left') + d.text(214, 282, 60, 20, 'm3/h', 12, 'muted') + # tank + d.rect(440, 100, 240, 480, fill='panel', stroke='line', sw=2, r=18, actions=[FACEPLATE_CLICK], + tip='Tank 1 - click for the faceplate') + d.rect(450, 110, 220, 460, fill='blue', r=12, fill_amount=0.5, fill_dir='FillDirectionUp', + actions=[conn('rectangle.fillAmount', LEVEL, transform=tr_linear(0, 100, 0, 1)), + conn('rectangle.fillPaint', LEVEL, transform=tr_threshold( + [(0, (185, 28, 28)), (10, (180, 83, 9)), (20, (37, 99, 235)), (80, (180, 83, 9)), (90, (185, 28, 28))])), + FACEPLATE_CLICK]) + d.text(450, 60, 220, 28, 'TANK 1', 16, 'text', bold=True, align='Center') + d.number(460, 300, 200, 50, LEVEL, '999.9', 40, 'white', align='Center') + d.text(460, 352, 200, 20, '% level', 12, 'text', align='Center') + for pct, lab, col in ((90, 'HH 90', 'red'), (80, 'H 80', 'amber'), (20, 'L 20', 'amber'), (10, 'LL 10', 'red')): + y = 570 - pct * 4.6 + d.line(682, y, 700, y, col, 2) + d.text(706, y - 9, 60, 18, lab, 10, col, bold=True) + d.button(470, 594, 180, 32, 'Open faceplate', [FACEPLATE], fg='white', bg='blue') + # outlet pipe + pump + d.rect(680, 532, 150, 16, fill='track') + d.rect(680, 535, 150, 10, fill='teal', actions=[conn('rectangle.visible', S + 'PUMP1.RUNNING')]) + d.ellipse(830, 495, 90, 90, fill='off', stroke='line', sw=2, actions=[ + conn('ellipse.fillPaint', S + 'PUMP1.RUNNING', transform=tr_threshold([(False, 'off'), (True, 'green')], 'Boolean'))]) + d.text(830, 528, 90, 24, 'P1', 16, 'white', bold=True, align='Center') + d.rect(920, 532, 170, 16, fill='track') + d.rect(920, 535, 170, 10, fill='teal', actions=[conn('rectangle.visible', S + 'PUMP1.RUNNING')]) + d.text(800, 600, 150, 18, 'PUMP 1', 11, 'muted', bold=True, align='Center') + for txt, col, val in (('AUTO', 'teal', 1), ('MANUAL', 'amber', 0)): + d.text(800, 620, 150, 20, txt, 13, col, bold=True, align='Center') + d.parts[-1] = d.parts[-1].replace('</text>', data([conn('text.visible', S + 'PUMP1.MODE', transform=tr_threshold( + [(0, val == 0), (1, val == 1)], 'Double', 'Boolean'))]) + '</text>') + # info column + x = 860 + d.rect(x, 90, 230, 330, fill='panel', stroke='line', r=8) + kv(d, x + 16, 104, 200, 'VOLUME (TANK1.CALC)', VOLUME, '9999.9', 'm3') + kv(d, x + 16, 168, 200, 'FLOW PER SECOND (JFLOW)', S + 'TANK1.JFLOW.sPerMin', '999.99', 'm3/s') + kv(d, x + 16, 232, 200, 'LEVEL MAXIMUM', S + 'TANK1.LEVEL.MAX', '999.9', '%') + kv(d, x + 16, 296, 200, 'COUNTER (DEMO.INCR1)', S + 'DEMO.COUNTER', '999', '') + d.databar(x + 16, 352, 198, 10, S + 'DEMO.COUNTER', 0, 100, 'violet', 'track', 'Right') + d.text(x + 16, 376, 200, 16, 'PUMP RUN TIME', 10, 'muted') + d.number(x + 16, 392, 150, 24, S + 'PUMP1.RUNNING.RUN_SECONDS', '9999999', 16, align='Left') + d.text(x + 170, 396, 40, 18, 's', 11, 'muted') + # gauges + card(d, 1130, 10, 740, 330, 'Key figures') + gauge(d, 1255, 175, 95, LEVEL, 0, 100, '999.9', '%', 'Level', thresholds=LVL_COLORS, extra=[level_color()]) + gauge(d, 1500, 175, 95, INFLOW, 0, 500, '9999', 'm3/h', 'Inflow', 'violet') + gauge(d, 1745, 175, 95, VOLUME, 0, 200, '999.9', 'm3', 'Volume', 'blue') + card(d, 1130, 350, 740, 320, 'Last 10 minutes', 'Micro trend: level (teal, 0-100 %) and inflow (violet, 0-500 m3/h)') + d.micro_trend(1150, 410, 700, 240, [(LEVEL, 0, 100, 'teal'), (INFLOW, 0, 500, 'violet')]) + return d + + +def build_control(): + d = Display('CIENG_Control', W, H, 'Process control', design_h=HD) + d.rect(0, 0, W, HD, fill='bg') + # setpoint -> Modbus loopback + card(d, 10, 10, 925, 325, 'Setpoint -> PLC1 (Modbus loopback)', 'Slider, spinner and input field write PLC1.SETPOINT; READBACK returns through Modbus') + d.slider(40, 70, 600, 64, S + 'PLC1.SETPOINT', 0, 100, 10, 5) + d.text(40, 150, 140, 16, 'SPINNER', 10, 'muted', bold=True) + d.spinner(40, 170, 140, 36, S + 'PLC1.SETPOINT', 0, 100, 5) + d.text(200, 150, 140, 16, 'INPUT FIELD', 10, 'muted', bold=True) + d.number_field(200, 170, 140, 36, S + 'PLC1.SETPOINT', '999', 16) + d.text(360, 150, 160, 16, 'SETPOINT', 10, 'muted', bold=True) + d.number(360, 168, 120, 40, S + 'PLC1.SETPOINT', '999', 28, 'blue', align='Left') + d.text(40, 226, 300, 16, 'READBACK (data bar + scale)', 10, 'muted', bold=True) + d.databar(40, 248, 600, 18, S + 'PLC1.READBACK', 0, 100, 'blue', 'track', 'Right') + d.rect_scale(40, 268, 600, 36, 0, 100, 10, 5, vertical=False) + gauge(d, 790, 175, 95, S + 'PLC1.READBACK', 0, 100, '999', '', 'Readback', 'blue') + d.lamp(700, 30, 12, S + 'PLC1.COMM_OK', off='red') + d.text(718, 26, 200, 18, 'station CIENG_PLC', 11, 'muted') + # digital command + card(d, 945, 10, 925, 325, 'Digital command -> PLC1.CMD', 'Toggle and push buttons write the coil; FEEDBACK is read back from the input bit') + d.toggle(975, 80, 200, 48, 'CMD (toggle)', S + 'PLC1.CMD', 14) + d.button(975, 150, 95, 40, 'Set ON', [act_set(S + 'PLC1.CMD', 1)], fg='white', bg='green') + d.button(1080, 150, 95, 40, 'Set OFF', [act_set(S + 'PLC1.CMD', 0)], fg='text', bg='card2') + d.ellipse(1300, 80, 120, 120, fill='off', stroke='line', sw=3, actions=[ + conn('ellipse.fillPaint', S + 'PLC1.FEEDBACK', transform=tr_threshold([(False, 'off'), (True, 'green')], 'Boolean'))]) + d.text(1300, 128, 120, 24, 'FEEDBACK', 13, 'white', bold=True, align='Center') + d.text(1460, 90, 380, 16, 'LAST CHANGE OF FEEDBACK', 10, 'muted', bold=True) + d.datetime_field(1460, 112, 300, 30, S + 'PLC1.FEEDBACK', 'ItemUpdTime', 13) # date/time field (editable on the web) + d.text(1460, 160, 380, 16, 'STATUS', 10, 'muted', bold=True) + d.text(1460, 180, 380, 24, 'NORMAL', 16, 'text', bold=True) + d.parts[-1] = d.parts[-1].replace('</text>', data([conn('text.value', S + 'PLC1.FEEDBACK', 'ItemStatusMnemonic')]) + '</text>') + # pump + card(d, 10, 345, 925, 325, 'Pump 1', 'Combo box, buttons and check box write PUMP1.MODE / PUMP1.RUNNING (mode changes are audited)') + d.text(40, 400, 160, 16, 'MODE (COMBO BOX)', 10, 'muted', bold=True) + d.combo(40, 420, 200, 34, S + 'PUMP1.MODE', '0;Manual;1;Auto', 14) + d.button(260, 420, 110, 34, 'Manual', [act_set(S + 'PUMP1.MODE', 0)], fg='text', bg='card2') + d.button(380, 420, 110, 34, 'Auto', [act_set(S + 'PUMP1.MODE', 1)], fg='white', bg='blue') + d.text(40, 478, 300, 16, 'RUN COMMAND (CHECK BOX, MANUAL MODE)', 10, 'muted', bold=True) + d.checkbox(40, 498, 240, 32, 'Pump running', S + 'PUMP1.RUNNING', 14) + d.text(40, 552, 300, 16, 'DESCRIPTION (TEXT FIELD)', 10, 'muted', bold=True) + d.text_field(40, 572, 450, 30, S + 'PUMP1.MODE', 'ItemDesc', 13) + d.ellipse(600, 420, 110, 110, fill='off', stroke='line', sw=3, actions=[ + conn('ellipse.fillPaint', S + 'PUMP1.RUNNING', transform=tr_threshold([(False, 'off'), (True, 'green')], 'Boolean'))]) + d.text(600, 462, 110, 24, 'P1', 18, 'white', bold=True, align='Center') + d.text(560, 548, 220, 16, 'RUN TIME (INTEGRATOR)', 10, 'muted', bold=True, align='Center') + d.number(560, 566, 190, 34, S + 'PUMP1.RUNNING.RUN_SECONDS', '9999999', 24, align='Right') + d.text(754, 576, 30, 18, 's', 12, 'muted') + # alarm test + card(d, 945, 345, 925, 325, 'Tank 1 - alarm test', 'Stop live data first, then drive TANK1.LEVEL across its limits (H 80 / HH 90 / L 20 / LL 10)') + d.slider(975, 410, 560, 64, LEVEL, 0, 100, 10, 5) + for i, (lab, v, col, fg) in enumerate((('Low-Low 5', 5, 'red', 'white'), ('Low 15', 15, 'amber', 'white'), + ('Normal 50', 50, 'teal', 'white'), ('High 85', 85, 'amber', 'white'), + ('High-High 95', 95, 'red', 'white'))): + d.button(975 + i * 114, 500, 106, 38, lab, [act_set(LEVEL, v)], fg=fg, bg=col) + d.text(975, 566, 200, 16, 'LEVEL', 10, 'muted', bold=True) + d.number(975, 584, 160, 50, LEVEL, '999.9', 38, align='Left', extra=[level_color()]) + d.text(1180, 566, 300, 16, 'ITEM STATUS', 10, 'muted', bold=True) + d.text(1180, 590, 300, 34, 'NORMAL', 22, 'text', bold=True) + d.parts[-1] = d.parts[-1].replace('</text>', data([conn('text.value', LEVEL, 'ItemStatusMnemonic'), + conn('text.fillPaint', LEVEL, transform=tr_threshold(LVL_COLORS))]) + '</text>') + d.ring_gauge(1720, 520, 90, LEVEL, 0, 100, 'teal', 14, LVL_COLORS) + d.circ_scale(1720, 520, 120, 0, 100, 20, 5) + d.number(1660, 500, 120, 40, LEVEL, '999.9', 26, align='Center') + return d + + +def build_trends(): + d = Display('CIENG_Trends', W, H, 'Trends', design_h=HD) + d.rect(0, 0, W, HD, fill='bg') + d.rect(10, 10, 1380, 660, fill='panel', stroke='line', r=10) + d.trend(20, 20, 1360, 640, [(LEVEL, 'teal', 0, 100, 'Tank 1 level (%)'), + (INFLOW, 'violet', 0, 500, 'Tank 1 inflow (m3/h)')], 10, 'Tank 1 - level and inflow', + web_spares=False) # user choice: hairline shows 2 values; the web main trend then draws no line + for i, (title, item, mn, mx, col, fmt, unit) in enumerate(( + ('Level', LEVEL, 0, 100, 'teal', '999.9', '%'), ('Inflow', INFLOW, 0, 500, 'violet', '9999.9', 'm3/h'), + ('CPU load', S + 'SYSTEM.CPU_LOAD', 0, 100, 'blue', '999.9', '%'))): + t = 10 + i * 223 + card(d, 1400, t, 470, 213, title) + d.number(1660, t + 8, 150, 30, item, fmt, 20, col, align='Right') + d.text(1814, t + 14, 50, 18, unit, 11, 'muted') + d.micro_trend(1420, t + 48, 430, 150, [(item, mn, mx, col)], history=(i < 2)) # CPU_LOAD has no history + return d + + +def build_alarms(): + d = Display('CIENG_Alarms', W, H, 'Alarms', design_h=HD) + d.rect(0, 0, W, HD, fill='bg') + card(d, 10, 10, 1860, 390, 'Current alarms', 'All areas - acknowledge with the check box or right-click') + d.alarm_overview(20, 60, 1840, 330, size=13) + card(d, 10, 410, 1860, 260, 'Alarm history - Tank 1', 'Historical overview filtered on alarm selection area CIENG_TANK1') + d.alarm_overview(20, 460, 1840, 200, 'HistoricalAlarms', asa='CIENG_TANK1', size=13) + return d + + +def build_system(): + d = Display('CIENG_System', W, H, 'System', design_h=HD) + d.rect(0, 0, W, HD, fill='bg') + card(d, 10, 10, 600, 320, 'Server health', 'Real values of this PC, written by the live-data feed') + th = [(0, 'teal'), (80, 'amber'), (90, 'red')] + gauge(d, 160, 180, 100, S + 'SYSTEM.CPU_LOAD', 0, 100, '999.9', '%', 'CPU load', thresholds=th) + gauge(d, 450, 180, 100, S + 'SYSTEM.DISK_C', 0, 100, '999.9', '%', 'Disk C: used', 'blue', thresholds=th) + card(d, 620, 10, 600, 320, 'Communication and processes') + rows = ((S + 'PLC1.COMM_OK', 'Modbus station CIENG_PLC', 'Boolean', None), + (S + 'UA.COMM_OK', 'OPC UA client station CIENG_UA', 'Boolean', None), + (S + 'UA.SRV_STATE', 'OPC UA server state (0 = running)', 'Double', [(0, 'green'), (0.5, 'red')]), + (S + 'SYSTEM.PING_LOCALHOST', 'localhost reachable', 'Double', [(0, 'red'), (0.5, 'green')]), + (S + 'SYSTEM.PROC_ALM', 'ALARM process (alm) running', 'Double', [(0, 'red'), (0.5, 'green')])) + for i, (item, lab, inp, tbl) in enumerate(rows): + y = 60 + i * 52 + d.rect(640, y, 560, 44, fill='panel', r=6) + if inp == 'Boolean': + d.lamp(656, y + 13, 18, item, off='red') + else: + d.lamp(656, y + 13, 18, item, inp='Double', table=tbl) + d.text(688, y + 12, 340, 20, lab, 13, 'text') + d.text(1040, y + 12, 150, 20, 'NORMAL', 12, 'muted', align='Right') + d.parts[-1] = d.parts[-1].replace('</text>', data([conn('text.value', item, 'ItemStatusMnemonic')]) + '</text>') + card(d, 1230, 10, 640, 320, 'OPC UA loopback', 'TANK1.LEVEL read back through CI Server\'s own OPC UA server') + for i, (lab, item, col) in enumerate((('TANK1.LEVEL', LEVEL, 'teal'), ('UA.LEVEL_COPY', S + 'UA.LEVEL_COPY', 'blue'))): + x = 1260 + i * 300 + d.text(x, 70, 260, 16, lab, 10, 'muted', bold=True) + d.number(x, 90, 200, 44, item, '999.9', 32, col, align='Left') + d.databar(x, 150, 260, 18, item, 0, 100, col, 'track', 'Right') + d.text(x, 182, 260, 16, 'LAST UPDATE', 10, 'muted', bold=True) + d.time_text(x, 202, 260, 28, item, 13) + d.rect_scale(1260, 250, 560, 34, 0, 100, 10, 5, vertical=False) + card(d, 10, 340, 1860, 330, 'Reports', 'Report component: select CIENG_TANK1 or CIENG_HTML, generate and view') + d.report(20, 390, 1840, 270) + return d + + +def build_banner(): + d = Display('CIENG_AlarmBanner', 1920, 96, 'Alarm banner', bg='panel') + # Desktop: frames inside a <tab> ignore their zoom attribute; the layout command with a zoom argument + # applies it. Only ONE command can run at a time (more give "IllegalStateException: A command is + # already being executed"), so only the Overview tab is fitted here; the toolbar / menu / F-keys + # open the other tabs with fitDisplay. Web: the plain open action (web ignores ACTION commands). + d.rect(0, 0, 1920, 96, fill='panel', actions=[ + act_open('CIENG_Overview', 'CIENG_Operator', 'ovw', event='On entry'), + act_cmd('ACTION navigate to ovw CIENG_Overview stretchDisplay', server=False, event='On entry')]) + d.line(0, 0, 1920, 0, 'line', 1) + d.rect(10, 7, 170, 82, fill='card', stroke='line', r=8) + d.text(24, 13, 70, 18, 'ALARMS', 12, 'muted', bold=True) + d.ellipse(96, 14, 16, 16, fill='off', actions=[conn('ellipse.fillPaint', LEVEL, transform=tr_threshold( + [(0, 'red'), (10, 'amber'), (20, 'green'), (80, 'amber'), (90, 'red')]))]) + d.text(118, 13, 60, 18, 'Tank 1', 12, 'text') + d.button(24, 44, 142, 34, 'Alarm list', [act_open('CIENG_Alarms', 'CIENG_Operator', 'alm')], fg='white', bg='blue', size=13) + # 4 rows of 20 px (14 px font, web) + border: no empty white area below the rows when 4+ alarms + d.alarm_overview(190, 7, 1722, 82, size=14, banner=True) + return d + + +def build_faceplate(): + d = Display('CIENG_TankFaceplate', 420, 600, 'Tank 1 faceplate', bg='card') + d.rect(0, 0, 420, 600, fill='card') + d.rect(0, 0, 420, 52, fill='card2') + d.text(20, 14, 300, 24, 'TANK 1 | LEVEL', 15, 'text', bold=True) + d.button(370, 10, 36, 32, 'X', [act_close()], fg='text', bg='card', tip='Close') + d.text(20, 64, 380, 18, 'Tank 1 level (%)', 11, 'muted') + d.parts[-1] = d.parts[-1].replace('</text>', data([conn('text.value', LEVEL, 'ItemDesc')]) + '</text>') + d.number(20, 86, 200, 56, LEVEL, '999.9', 44, align='Left', extra=[level_color()]) + d.text(224, 106, 30, 24, '%', 16, 'muted') + d.text(270, 92, 130, 16, 'STATUS', 10, 'muted', bold=True, align='Right') + d.text(250, 110, 150, 26, 'NORMAL', 16, 'text', bold=True, align='Right') + d.parts[-1] = d.parts[-1].replace('</text>', data([conn('text.value', LEVEL, 'ItemStatusMnemonic'), + conn('text.fillPaint', LEVEL, transform=tr_threshold(LVL_COLORS))]) + '</text>') + d.databar(40, 160, 60, 280, LEVEL, 0, 100, 'blue', 'track', 'Up') + d.rect_scale(104, 160, 44, 280, 0, 100, 20, 5) + d.text(190, 160, 210, 16, 'ALARM LIMITS', 10, 'muted', bold=True) + for i, (lab, attr, col) in enumerate((('High-High', 'ItemHHL', 'red'), ('High', 'ItemHL', 'amber'), + ('Low', 'ItemLL', 'amber'), ('Low-Low', 'ItemLLL', 'red'))): + y = 186 + i * 40 + d.rect(190, y, 210, 34, fill='panel', r=6) + d.rect(190, y, 6, 34, fill=col) + d.text(206, y + 8, 100, 18, lab, 12, 'text') + d.number(300, y + 4, 90, 26, LEVEL, '999.9', 16, col, attr=attr) + d.text(190, 352, 210, 16, 'MAXIMUM SEEN', 10, 'muted', bold=True) + d.number(190, 370, 140, 32, S + 'TANK1.LEVEL.MAX', '999.9', 22, align='Left') + d.text(190, 412, 210, 16, 'LAST UPDATE', 10, 'muted', bold=True) + d.time_text(190, 430, 210, 24, LEVEL, 11) + d.micro_trend(20, 460, 380, 80, [(LEVEL, 0, 100, 'teal')]) + d.button(20, 552, 120, 34, 'Trends', [act_open('CIENG_Trends', 'CIENG_Operator', 'trd')], fg='text', bg='card2') + d.button(150, 552, 120, 34, 'Alarms', [act_open('CIENG_Alarms', 'CIENG_Operator', 'alm')], fg='text', bg='card2') + d.button(280, 552, 120, 34, 'Close', [act_close()], fg='white', bg='blue') + return d + + +if __name__ == '__main__': + out = sys.argv[1] if len(sys.argv) > 1 else os.path.join(os.path.dirname(os.path.abspath(__file__)), '..') + for b in (build_header, build_overview, build_control, build_trends, build_alarms, build_system, build_banner, + build_faceplate): + disp = b() + disp.save(out) + print(disp.name, len(disp.parts), 'components') diff --git a/examples/CI-Eng-Sample/displays/generator/cixml.py b/examples/CI-Eng-Sample/displays/generator/cixml.py new file mode 100644 index 0000000..ce24e45 --- /dev/null +++ b/examples/CI-Eng-Sample/displays/generator/cixml.py @@ -0,0 +1,583 @@ +"""Small XML writer for CI Server R1.03 display files (Edit Module format 1.3.0.0). + +Positions are given as boxes (left, top, width, height) in display pixels; CI Server stores a +component as its centre (x, y) plus half sizes (top, bottom, left, right). +Element and property names follow the installed component definitions +(%TLS_WAP_PATH%\\cfg\\operatorInterfaces\\DEPLOY\\components\\*.xml) and factory displays. +""" +from xml.sax.saxutils import escape + +# ---------------------------------------------------------------- theme (dark dashboard) +C = { + 'bg': (13, 17, 23), 'panel': (22, 27, 34), 'card': (28, 35, 45), 'card2': (36, 45, 57), + 'line': (48, 61, 77), 'text': (230, 237, 243), 'muted': (139, 152, 168), 'dim': (88, 100, 116), + 'blue': (59, 130, 246), 'teal': (20, 184, 166), 'green': (34, 197, 94), 'amber': (245, 158, 11), + 'red': (239, 68, 68), 'violet': (139, 92, 246), 'off': (71, 85, 105), 'white': (255, 255, 255), + 'track': (40, 50, 64), +} +FONT_UI = 'Segoe UI' +FONT_NUM = 'Consolas' + + +def rgb(c): + c = C.get(c, c) if isinstance(c, str) else c + return 'r="%d" g="%d" b="%d"' % tuple(c) + + +def colorset(tag, c): + return '<%s type="colorSet" %s/>' % (tag, rgb(c)) + + +def paint(tag, c): + return '<%s type="paint"><paint type="colorSet" %s/></%s>' % (tag, rgb(c), tag) + + +def font(size, bold=False, name=FONT_UI, tag='font'): + b = ' bold="true"' if bold else '' + return '<%s type="font" name="%s"%s size="%d" underline="false" strikethrough="false"/>' % (tag, name, b, size) + + +def esc(s): + return escape(str(s)) + + +def box_attrs(l, t, w, h): + return 'x="%.1f" y="%.1f" top="%.1f" bottom="%.1f" left="%.1f" right="%.1f" rotation="0.0" shear="0.0"' % ( + l + w / 2.0, t + h / 2.0, h / 2.0, h / 2.0, w / 2.0, w / 2.0) + + +def box_elems(l, t, w, h): + return ('<x>%.1f</x><y>%.1f</y><top>%.1f</top><bottom>%.1f</bottom><left>%.1f</left><right>%.1f</right>' + '<rotation>0.0</rotation><shear>0.0</shear>') % (l + w / 2.0, t + h / 2.0, h / 2.0, h / 2.0, w / 2.0, w / 2.0) + + +_FONTS = {} + + +def text_width(s, size, bold=False, name=FONT_UI): + """Width in display pixels, measured with the Windows font (matches the HTML export within ~3 %).""" + try: + from PIL import ImageFont + fn = {(FONT_UI, False): 'segoeui.ttf', (FONT_UI, True): 'segoeuib.ttf', + (FONT_NUM, False): 'consola.ttf', (FONT_NUM, True): 'consolab.ttf'}[(name, bool(bold))] + key = (fn, size) + if key not in _FONTS: + _FONTS[key] = ImageFont.truetype(r'C:\Windows\Fonts\%s' % fn, size) + return _FONTS[key].getlength(s) * 0.975 + except Exception: + return len(s) * size * 0.55 + + +def fit(l, w, s, size, align, bold=False, name=FONT_UI): + """Text and numbers are exported with keepOriginalSize: drawn at natural size, centred on the box. + Shrink the box to the measured text width so 'Left' / 'Right' alignment still lands right.""" + est = min(w, max(4.0, text_width(s, size, bold, name))) + if align == 'Left': + return l, est + if align == 'Right': + return l + w - est, est + return l, w + + +# ---------------------------------------------------------------- data connections +def tr_linear(i0, i1, o0, o1): + return ('<transformation type="transformationLinear"><inputType>java.lang.Double</inputType>' + '<outputType>java.lang.Double</outputType><inputValueStart>%s</inputValueStart>' + '<inputValueEnd>%s</inputValueEnd><outputValueStart>%s</outputValueStart>' + '<outputValueEnd>%s</outputValueEnd></transformation>') % (float(i0), float(i1), float(o0), float(o1)) + + +def tr_threshold(table, inp='Double', out='Paint'): + """table: list of (input, output). Output for Paint = colour key/tuple, Boolean = bool.""" + itype = {'Double': 'java.lang.Double', 'Boolean': 'java.lang.Boolean'}[inp] + otype = {'Paint': 'fasttools.jwui.common.property.paint.PaintSet', 'Boolean': 'java.lang.Boolean', + 'Color': 'fasttools.jtools.common.property.color.ColorSet'}[out] + rows = [] + for i, o in table: + iv = ('true' if i else 'false') if inp == 'Boolean' else repr(float(i)) + if out == 'Paint': + ov = '<thresholdOut type="paint"><paint type="colorSet" %s/></thresholdOut>' % rgb(o) + elif out == 'Color': + ov = '<thresholdOut type="colorSet" %s/>' % rgb(o) + else: + ov = '<thresholdOut>%s</thresholdOut>' % ('true' if o else 'false') + rows.append('<thresholdIn>%s</thresholdIn>%s' % (iv, ov)) + return ('<transformation type="transformationThreshold"><inputType>%s</inputType><outputType>%s</outputType>' + '<thresholdTable type="thresholdTable">%s</thresholdTable></transformation>') % (itype, otype, ''.join(rows)) + + +def conn(prop, item, attr='ItemValue', direction=1, transform=''): + """Connect component property <prop> (e.g. 'number.value') to an item attribute. + direction 1 = read, 2 = write, None = read and write (as the factory toggle buttons).""" + d = '' if direction is None else '<direction>%d</direction>' % direction + return ('<action type="actionConnectTo"><property type="property" name="%s"/>' + '<filter type="filter"><value>0.0</value></filter>%s<connection type="connection">%s' + '<itemName>%s</itemName><itemAttribute>%s</itemAttribute></connection></action>') % ( + prop, transform, d, esc(item), attr) + + +def act_set(item, value): + return ('<action type="actionSetItemAttribute"><event type="event" event="On action"/>' + '<filter type="filter"><value>%s</value></filter><connection type="connection"><direction>2</direction>' + '<location type="nodeName" node="$default$"/><itemName>%s</itemName><itemAttribute>ItemValue</itemAttribute>' + '</connection></action>') % (float(value), esc(item)) + + +def act_open(display, layout=None, frame=None, event='On action'): + lay = '' + if layout or frame: + lay = ('<type type="displayActivationType" value="ActivateSpecific"/><display>%s</display>' + '<layout>%s</layout><layoutFrame>%s</layoutFrame>') % (display, layout or '', frame or '') + return '<action type="actionActivateDisplay"><event type="event" event="%s"/>%s</action>' % (event, lay) + return ('<action type="actionActivateDisplay"><event type="event" event="%s"/><display>%s</display>' + '</action>') % (event, display) + + +def act_close(event='On action'): + return '<action type="actionExitDisplay"><event type="event" event="%s"/></action>' % event + + +def act_cmd(command, server=True, event='On action'): + return ('<action type="actionExecuteCommand"><event type="event" event="%s"/><command>%s</command>' + '<onServer>%s</onServer></action>') % (event, esc(command), 'true' if server else 'false') + + +def data(actions): + return '<data type="data">%s</data>' % ''.join(actions) if actions else '' + + +# ---------------------------------------------------------------- display builder +class Display: + def __init__(self, name, width, height, title, bg='bg', design_h=None): + self.name, self.w, self.h, self.title, self.bg = name, width, height, title, bg + # Coordinates are written for a display design_h high and stretched vertically to height: + # panels, bars and lists grow, text / controls / round shapes keep their size and only move. + self.sy = float(height) / design_h if design_h else 1.0 + self.parts = [] + self.hid = 6 # 1 = layer, 2..6 = visibility groups + + def _b(self, l, t, w, h, stretch): + if self.sy == 1.0: + return l, t, w, h + if stretch: + return l, t * self.sy, w, h * self.sy + return l, (t + h / 2.0) * self.sy - h / 2.0, w, h + + def _id(self): + self.hid += 1 + return '<htmlId>%d</htmlId>' % self.hid + + def add(self, s): + self.parts.append(s) + + # ----- shapes + def rect(self, l, t, w, h, fill='card', stroke=None, sw=1.0, r=0, actions=(), tip=None, fill_amount=None, + fill_dir=None, visible=True): + l, t, w, h = self._b(l, t, w, h, h > 40) + s = '<rectangle type="componentData">' + self._id() + if tip: + s += '<toolTipText>%s</toolTipText>' % esc(tip) + if r: + # stored as a fraction (0..1) of the half width / half height (web client + # ExtendedRectangle: rx = width / 2 * roundingX); pixel values > 1 draw an ellipse + s += '<roundingX>%.4f</roundingX><roundingY>%.4f</roundingY>' % (min(1.0, 2.0 * r / w), min(1.0, 2.0 * r / h)) + s += box_elems(l, t, w, h) + s += '<stroke type="stroke" width="%.1f"/>' % sw + if stroke: + s += '<strokeOn>true</strokeOn>' + paint('strokePaint', stroke) + else: + s += '<strokeOn>false</strokeOn>' + if fill: + s += '<fillOn>true</fillOn>' + paint('fillPaint', fill) + else: + s += '<fillOn>false</fillOn>' + if fill_amount is not None: + s += '<fillAmount>%s</fillAmount>' % fill_amount + if fill_dir: + s += '<fillDirection type="fillDirection" value="%s"/>' % fill_dir + if not visible: + s += '<visible>false</visible>' + s += data(actions) + '</rectangle>' + self.add(s) + + def ellipse(self, l, t, w, h, fill='green', stroke=None, sw=1.0, actions=(), tip=None): + l, t, w, h = self._b(l, t, w, h, False) + s = '<ellipse type="componentData">' + self._id() + if tip: + s += '<toolTipText>%s</toolTipText>' % esc(tip) + s += box_elems(l, t, w, h) + '<stroke type="stroke" width="%.1f"/>' % sw + s += ('<strokeOn>true</strokeOn>' + paint('strokePaint', stroke)) if stroke else '<strokeOn>false</strokeOn>' + s += ('<fillOn>true</fillOn>' + paint('fillPaint', fill)) if fill else '<fillOn>false</fillOn>' + s += data(actions) + '</ellipse>' + self.add(s) + + def arc(self, cx, cy, rad, start, extent, color='blue', sw=10.0, actions=()): + cy = cy * self.sy + s = '<arc type="componentData">' + self._id() + s += '<startAngle>%.1f</startAngle><extentAngle>%.1f</extentAngle><closed>false</closed>' % (start, extent) + s += box_elems(cx - rad, cy - rad, 2 * rad, 2 * rad) + s += '<stroke type="stroke" width="%.1f" endCap="butt"/><strokeOn>true</strokeOn>' % sw + s += paint('strokePaint', color) + '<fillOn>false</fillOn>' + s += data(actions) + '</arc>' + self.add(s) + + def line(self, x1, y1, x2, y2, color='line', sw=2.0, actions=()): + # a line is stored by its bounding box; direction by the sign of the extents is not available, + # so only horizontal / vertical lines are used here + l, t = min(x1, x2), min(y1, y2) + w, h = abs(x2 - x1), abs(y2 - y1) + # drawn as a thin filled rectangle: a <line> without curve points is placed wrongly on the web + if h < w: + self.rect(l, t - sw / 2.0, max(w, 1), sw, fill=color, actions=actions) + else: + self.rect(l - sw / 2.0, t, sw, max(h, 1), fill=color, actions=actions) + + # ----- text and numbers + def text(self, l, t, w, h, value, size=12, color='text', bold=False, align='Left', actions=(), name=FONT_UI, + bgfill=None): + l, t, w, h = self._b(l, t, w, h, False) + s = '<text type="componentData">' + self._id() + '<value>%s</value>' % esc(value) + s += font(size, bold, name) + paint('fillPaint', color) + l, w = fit(l, w, str(value), size, align, bold, name) + s += '<justification type="textJustification" value="TextJustificationCenter"/>' + if bgfill: + s += '<backgroundOn>true</backgroundOn>' + paint('backgroundPaint', bgfill) + s += '<stroke type="stroke" width="1.0"/><keepOriginalSize>true</keepOriginalSize>' + s += box_elems(l, t, w, h) + data(actions) + '</text>' + self.add(s) + + def number(self, l, t, w, h, item, fmt='999.9', size=22, color='text', bold=True, align='Right', attr='ItemValue', + extra=()): + l, t, w, h = self._b(l, t, w, h, False) + s = '<number type="componentData">' + self._id() + '<value>0.0</value><format>%s</format>' % fmt + s += font(size, bold, FONT_NUM) + paint('fillPaint', color) + l, w = fit(l, w, fmt.replace('9', '0'), size, align, bold, FONT_NUM) + s += '<justification type="textJustification" value="TextJustificationCenter"/>' + s += '<stroke type="stroke" width="1.0"/><keepOriginalSize>true</keepOriginalSize>' + s += box_elems(l, t, w, h) + data([conn('number.value', item, attr)] + list(extra)) + '</number>' + self.add(s) + + def number_field(self, l, t, w, h, item, fmt='9999', size=14, editable=True, attr='ItemValue', as_datetime=False): + l, t, w, h = self._b(l, t, w, h, False) + s = '<numberField type="componentData" %s>' % box_attrs(l, t, w, h) + self._id() + s += font(size, True, FONT_NUM) + '<format>%s</format>' % fmt + s += '<editable>%s</editable>' % ('true' if editable else 'false') + if as_datetime: + s += '<asDateTime>true</asDateTime>' + s += colorset('foregroundColor', 'text') + colorset('backgroundColor', 'card2') + s += '<justification type="jTextJustification" value="TextJustificationRight"/>' + s += data([conn('numberField.value', item, attr, direction=None if editable else 1)]) + '</numberField>' + self.add(s) + + def text_field(self, l, t, w, h, item, attr='ItemDescription', size=12): + l, t, w, h = self._b(l, t, w, h, False) + s = '<textField type="componentData" %s>' % box_attrs(l, t, w, h) + self._id() + s += font(size) + '<editable>false</editable>' + s += colorset('foregroundColor', 'text') + colorset('backgroundColor', 'card2') + s += data([conn('textField.value', item, attr)]) + '</textField>' + self.add(s) + + def time_text(self, l, t, w, h, item, size=12, color='text', align='Left'): + """Last update time of an item: number field with asDateTime (epoch seconds -> local date and time).\n The web dateTimeField only shows a value when editable (white input boxes).""" + self.number_field(l, t, w, h, item, '', size, editable=False, attr='ItemUpdTime', as_datetime=True) + def datetime_field(self, l, t, w, h, item, attr='ItemUpdTime', size=12, editable=True): + l, t, w, h = self._b(l, t, w, h, False) + s = '<dateTimeField type="componentData" %s>' % box_attrs(l, t, w, h) + self._id() + s += font(size) + colorset('foregroundColor', 'text') + s += '<editable>%s</editable><secondsVisible>true</secondsVisible>' % ('true' if editable else 'false') + s += colorset('backgroundColor', 'card2') + s += data([conn('dateTimeField.value', item, attr)]) + '</dateTimeField>' + self.add(s) + + # ----- controls + def button(self, l, t, w, h, label, actions, fg='text', bg='card2', size=12, bold=True, tip=None, extra=()): + l, t, w, h = self._b(l, t, w, h, False) + s = '<button type="componentData" %s>' % box_attrs(l, t, w, h) + self._id() + if tip: + s += '<toolTipText>%s</toolTipText>' % esc(tip) + s += '<label>%s</label>' % esc(label) + font(size, bold) + s += colorset('foregroundColor', fg) + colorset('backgroundColor', bg) + s += data(list(actions) + list(extra)) + '</button>' + self.add(s) + + def toggle(self, l, t, w, h, label, item, size=12): + l, t, w, h = self._b(l, t, w, h, False) + s = '<toggleButton type="componentData" %s>' % box_attrs(l, t, w, h) + self._id() + s += '<label>%s</label>' % esc(label) + font(size, True) + s += colorset('foregroundColor', 'text') + colorset('backgroundColor', 'card2') + s += data([conn('toggleButton.value', item, direction=None)]) + '</toggleButton>' + self.add(s) + + def checkbox(self, l, t, w, h, label, item, size=12): + l, t, w, h = self._b(l, t, w, h, False) + s = '<checkBox type="componentData" %s>' % box_attrs(l, t, w, h) + self._id() + s += '<label>%s</label>' % esc(label) + font(size) + s += '<opaque>false</opaque>' + colorset('foregroundColor', 'text') + colorset('backgroundColor', 'card') + s += data([conn('checkBox.value', item, direction=None)]) + '</checkBox>' + self.add(s) + + def slider(self, l, t, w, h, item, mn, mx, major, minor=None, size=10): + l, t, w, h = self._b(l, t, w, h, False) + s = '<slider type="componentData" %s>' % box_attrs(l, t, w, h) + self._id() + s += '<maximum>%s</maximum><minimum>%s</minimum><value>%s</value>' % (float(mx), float(mn), float(mn)) + s += '<majorTickSpacing>%s</majorTickSpacing><minorTickSpacing>%s</minorTickSpacing>' % ( + float(major), float(minor or major)) + s += '<paintLabels>true</paintLabels><paintTicks>true</paintTicks><trackDrag>false</trackDrag>' + s += font(size) + '<opaque>false</opaque>' + colorset('foregroundColor', 'muted') + s += data([conn('slider.value', item, direction=None)]) + '</slider>' + self.add(s) + + def spinner(self, l, t, w, h, item, mn, mx, step=1, size=14): + l, t, w, h = self._b(l, t, w, h, False) + s = '<spinner type="componentData" %s>' % box_attrs(l, t, w, h) + self._id() + s += '<editable>true</editable><step>%s</step><minimum>%s</minimum><maximum>%s</maximum>' % ( + float(step), float(mn), float(mx)) + s += font(size, True, FONT_NUM) + colorset('foregroundColor', 'text') + colorset('backgroundColor', 'card2') + s += '<zoomEnabled>false</zoomEnabled>' + s += data([conn('spinner.value', item, direction=None)]) + '</spinner>' + self.add(s) + + def combo(self, l, t, w, h, item, options, size=12): + l, t, w, h = self._b(l, t, w, h, False) + """options: 'value;Text;value;Text' (web client format).""" + s = '<comboBox type="componentData" %s>' % box_attrs(l, t, w, h) + self._id() + s += '<label>%s</label>' % esc(options) + font(size) + colorset('foregroundColor', 'text') + s += data([conn('comboBox.value', item, direction=None)]) + '</comboBox>' + self.add(s) + + # ----- indicators + def databar(self, l, t, w, h, item, lo=0, hi=100, fg='blue', bg='track', direction='Up', border=None): + l, t, w, h = self._b(l, t, w, h, h > w) + s = '<dataBar type="componentData" %s>' % box_attrs(l, t, w, h) + self._id() + s += '<fillOn>true</fillOn>' + paint('background', bg) + paint('foreground', fg) + s += paint('borderColor', border or bg) + paint('foregroundBorderColor', fg) + s += '<lowLimit>%s</lowLimit><highLimit>%s</highLimit>' % (float(lo), float(hi)) + s += '<growthDirection type="growthDirection" value="GrowthDirection%s"/>' % direction + s += data([conn('dataBar.value', item)]) + '</dataBar>' + self.add(s) + + def rect_scale(self, l, t, w, h, mn, mx, major, minor, vertical=True, fmt='999', size=10): + l, t, w, h = self._b(l, t, w, h, h > w) + s = '<rectangularScale type="componentData" %s>' % box_attrs(l, t, w, h) + self._id() + s += '<maximum>%s</maximum><minimum>%s</minimum><majorTickSpacing>%s</majorTickSpacing>' % ( + float(mx), float(mn), float(major)) + s += '<minorTickSpacing>%s</minorTickSpacing><format>%s</format><vertical>%s</vertical>' % ( + float(minor), fmt, 'true' if vertical else 'false') + s += colorset('color', 'muted') + font(size) + '</rectangularScale>' + self.add(s) + + def circ_scale(self, cx, cy, rad, mn, mx, major, minor, start=225, extent=-270, fmt='999', size=9): + cy = cy * self.sy + s = '<circularScale type="componentData" %s>' % box_attrs(cx - rad, cy - rad, 2 * rad, 2 * rad) + self._id() + s += '<maximum>%s</maximum><minimum>%s</minimum><majorTickSpacing>%s</majorTickSpacing>' % ( + float(mx), float(mn), float(major)) + s += '<minorTickSpacing>%s</minorTickSpacing><format>%s</format>' % (float(minor), fmt) + s += '<startAngle>%s</startAngle><extentAngle>%s</extentAngle>' % (float(start), float(extent)) + s += colorset('color', 'muted') + font(size) + '</circularScale>' + self.add(s) + + def ring_gauge(self, cx, cy, rad, item, mn, mx, color='teal', sw=12.0, thresholds=None): + """270 degree ring with the gap on the right; the value arc grows from 9 o'clock up and down. + Arc angles run clockwise from 3 o'clock on both clients (tested 2026-10-06, fixed and + connected angles): track 45..315 degrees, value arc centred on 180 degrees + (start = 180 - extent / 2).""" + self.arc(cx, cy, rad, 45, 270, 'track', sw) + acts = [conn('arc.extentAngle', item, transform=tr_linear(mn, mx, 0.5, 270)), + conn('arc.startAngle', item, transform=tr_linear(mn, mx, 179.75, 45))] + if thresholds: + acts.append(conn('arc.strokePaint', item, transform=tr_threshold(thresholds))) + self.arc(cx, cy, rad, 179.75, 0.5, color, sw, acts) + + def lamp(self, l, t, d, item, on='green', off='off', inp='Boolean', table=None): + tbl = table or [(False, off), (True, on)] + self.ellipse(l, t, d, d, fill=off, actions=[conn('ellipse.fillPaint', item, + transform=tr_threshold(tbl, inp))]) + + # ----- complex components + def alarm_overview(self, l, t, w, h, overview='CurrentAlarms', asa=None, size=12, banner=False): + l, t, w, h = self._b(l, t, w, h, True) + s = '<alarmOverview type="componentData" %s>' % box_attrs(l, t, w, h) + self._id() + s += '<zoomEnabled>false</zoomEnabled>' + s += '<overviewType type="alarmOverview" value="%s"/>' % overview + # dark rows: background, unacknowledged / acknowledged row colour per priority, text colours + s += '<opaque>true</opaque>' + colorset('backgroundColor', 'panel') + for c, col in (('Alarm', (248, 113, 113)), ('Normal', 'text'), ('Ackn', 'muted'), ('Info', 'muted'), + ('Diag', 'amber'), ('Deactive', 'muted'), ('Recover', 'green')): + s += colorset('eventType%sAckColor' % c, col) + colorset('eventType%sNackColor' % c, col) + for p in range(0, 16): + s += ('<property type="componentProperty"><name>priorityNackColor[%02d]</name><value type="colorSet" %s/></property>' + '<property type="componentProperty"><name>priorityAckColor[%02d]</name><value type="colorSet" %s/></property>' + ) % (p, rgb((64, 24, 30) if p <= 3 else (36, 45, 57)), p, rgb('card')) + s += font(size) + font(size, False, FONT_UI, 'alarmLineFont') + font(size - 1, True, FONT_UI, 'buttonFont') + # explicit columns: order and widths spread over the whole component width (autoFit off) + cols = [('AlarmTime', 200), ('Priority', 70), ('Section', 300), ('Tag', 170), ('ItemDesciption', 320), + ('Text', 300), ('AlarmType', 120), ('Value', 110), ('Acknowledged', 110)] + scale = (w - 24.0) / sum(c[1] for c in cols) + for i, (c, cw) in enumerate(cols): + s += '<column%sVisible>true</column%sVisible><column%sPosition>%d</column%sPosition>' % (c, c, c, i + 1, c) + s += '<column%sWidth>%d</column%sWidth>' % (c, int(cw * scale), c) + hide = ['CEventActor', 'CEventCat', 'CEventCondition', 'CEventSource', 'CEventSubCond', 'EventActor', + 'EventCat', 'EventCondition', 'EventSource', 'EventSubCond', 'Installation', 'ItemName', + 'OriginalTime', 'Quality', 'Unit', 'User', 'Sub', 'EngUnits', 'Location', 'InstallationDescription', + 'UnitDescription', 'SectionDescription', 'AlarmCollection', 'EventID', 'ConditionID', 'BranchID', + 'PriorityText'] # AlarmAttribute is an array property + for c in hide: + s += '<column%sVisible>false</column%sVisible>' % (c, c) + if banner: + s += ('<statusLineVisible>false</statusLineVisible><autoFit>false</autoFit><stopMoreVisible>false' + '</stopMoreVisible><headingVisible>false</headingVisible><dateTimeSelectorVisible>false' + '</dateTimeSelectorVisible><filterSelectorVisible>false</filterSelectorVisible>') + else: + # autoFit in a tab that is hidden while loading squeezes all columns to nothing (web) + s += '<autoFit>false</autoFit>' + s += '<highAlarmPriorityRange>1-1</highAlarmPriorityRange><mediumAlarmPriorityRange>2-2</mediumAlarmPriorityRange>' + s += '<lowAlarmPriorityRange>3-3</lowAlarmPriorityRange><diagnosticAlarmPriorityRange>0-0,4-15</diagnosticAlarmPriorityRange>' + if asa: + s += ('<userDataFilterType type="alarmUserFilter" value="UserDataFilterASA"/>' + '<userDataFilterValue>%s</userDataFilterValue>' + '<dataFilterType type="alarmDataFilter" value="DataFilterUserFiler"/>') % asa + s += '<data type="data"><action type="actionInternalServiced"/></data></alarmOverview>' + self.add(s) + + def report(self, l, t, w, h, report=None): + l, t, w, h = self._b(l, t, w, h, True) + s = '<reporting type="componentData" %s>' % box_attrs(l, t, w, h) + self._id() + if report: + s += '<reportSelected>%s</reportSelected>' % esc(report) + s += '<data type="data"><action type="actionInternalServiced"/></data></reporting>' + self.add(s) + + def micro_trend(self, l, t, w, h, pens, time_range=600, history=True): + l, t, w, h = self._b(l, t, w, h, True) + """pens: list of (item, min, max, colour).""" + s = '<microTrend type="componentData" %s>' % box_attrs(l, t, w, h) + self._id() + s += '<numberOfPens>%d</numberOfPens><realTime>true</realTime><fillWithHistory>%s</fillWithHistory>' % (len(pens), 'true' if history else 'false') + s += '<microTrendBackgroundFillOn>true</microTrendBackgroundFillOn><lowHighFillOn>false</lowHighFillOn>' + s += colorset('microTrendBackgroundFillColor', 'panel') + colorset('microTrendBackgroundColor', 'line') + acts = ['<action type="actionInternalServiced"/>'] + for i, (item, mn, mx, col) in enumerate(pens): + s += ('<property type="componentProperty"><name>itemName[%d]</name><value/></property>' + '<property type="componentProperty"><name>scaleMin[%d]</name><value>%s</value></property>' + '<property type="componentProperty"><name>scaleMax[%d]</name><value>%s</value></property>' + '<property type="componentProperty"><name>color[%d]</name><value type="colorSet" %s/></property>' + '<property type="componentProperty"><name>stroke[%d]</name><value type="stroke" width="2.0"/></property>' + ) % (i, i, float(mn), i, float(mx), i, rgb(col), i) + acts.append(conn('microTrend.itemName[%d]' % i, item, 'ItemName')) + s += data(acts) + '</microTrend>' + self.add(s) + + def trend(self, l, t, w, h, pens, minutes=10, title='', web_spares=True): + l, t, w, h = self._b(l, t, w, h, True) + """pens: list of (item, colour, min, max, description). Padded to 50 visible pens (ISS-041).""" + def pen(item, col, mn, mx, desc, spare=0): + if spare: + col_x = colorset('color', 'panel') + stroke, legend, vis_leg, rng, mn_s, mx_s, typ = '0.0', ' ' * spare, 'false', 1, '1.0E30', '2.0E30', 1 + desc = '' + else: + col_x = colorset('color', col) + stroke, legend, vis_leg, rng, mn_s, mx_s, typ = '2.0', '', 'true', 1, repr(float(mn)), repr(float(mx)), 0 + return ('<pen type="pen"><type>%d</type>%s<stroke type="stroke" width="%s"/><paint>@NULL</paint>' + '<visible>true</visible><visibleLegend>%s</visibleLegend>' + '<source type="sourceID" uri="ci:/item/%s"/><axisVisible>%s</axisVisible><axisPosition>0</axisPosition>' + '<labelVisible>true</labelVisible><majorTickVisible>true</majorTickVisible><minorTickVisible>true</minorTickVisible>' + '<axisColor>@NULL</axisColor><labelColor>@NULL</labelColor><scaleRangeType>%d</scaleRangeType>' + '<minimum>%s</minimum><maximum>%s</maximum><procentual>false</procentual><title/>' + '<description>%s</description><legendText>%s</legendText><titlePlacement>0</titlePlacement>' + '<titleRotation>0</titleRotation><labelRotation>0</labelRotation><majorGridVisible>false</majorGridVisible>' + '<minorGridVisible>false</minorGridVisible><lowHighLimitGridVisible>false</lowHighLimitGridVisible>' + '<lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible>' + '<lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible><majorGridColor>@NULL</majorGridColor>' + '<minorGridColor>@NULL</minorGridColor><lowHighLimitGridColor>@NULL</lowHighLimitGridColor>' + '<lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor>' + '<lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor>' + '<majorGridStroke type="stroke" width="0.1"/><minorGridStroke type="stroke" width="0.1"/>' + '<lowHighLimitGridStroke type="stroke" width="0.1"/><lowLowHighHighLimiGridStroke type="stroke" width="0.1"/>' + '<annotationVisible>false</annotationVisible><timeShift>0</timeShift></pen>') % ( + typ, col_x, stroke, vis_leg, esc(item), 'true' if (not spare and pens and item == pens[0][0]) else 'false', + rng, mn_s, mx_s, esc(desc), legend) + body = ''.join(pen(*p) for p in pens) + if web_spares: # the web trend draws only with 50 visible pens (ISS-041); the desktop hairline then lists 50 values + body += ''.join(pen(pens[0][0], None, 0, 0, '', i) for i in range(1, 51 - len(pens))) + s = ('<chart type="componentData">' + self._id() + + '<config type="graphicInfo"><version type="version" value="1.3.0.0"/>' + '<backgroundBorder type="border" value="BorderEmpty"/><penPanelVisible>false</penPanelVisible>' + '<penPanelHeight>-1</penPanelHeight><toolbarVisible>true</toolbarVisible>' + '<toolbarPosition type="borderLayoutPosition" value="PositionNorth"/><shiftOffset>0</shiftOffset>' + '<shiftLength>0</shiftLength><enterpriseGroupLocation type="nodeName" node="$display$"/>' + '<chartPanel><name/><author/><version type="version" value="1.3.0.0"/><description/>' + '<forAllUsers>false</forAllUsers><template>false</template><group>@NULL</group><XyMode>false</XyMode>' + '<x>0</x><y>0</y><width>%d</width><heigth>%d</heigth><iconized>false</iconized>' + '<backgroundBorder type="border" value="BorderEmpty"/>%s' + '<backgroundPaint type="paint"><paint type="colorSet" %s/></backgroundPaint>' + '<plotAreaBorder type="border" value="BorderEmpty"/><plotAreaTransparent>false</plotAreaTransparent>' + '<plotAreaIcon>@NULL</plotAreaIcon><plotAreaPaint type="paint"><paint type="colorSet" %s/></plotAreaPaint>' + '%s<hairlineVisible>false</hairlineVisible><antialiasingText>true</antialiasingText>' + '<antialiasingData>true</antialiasingData><renderMode type="chartRendering" value="Rendering2d"/>' + '<timeNavigatorVisible>true</timeNavigatorVisible><timeRangeControlVisible>true</timeRangeControlVisible>' + '<autoUpdateInterval>false</autoUpdateInterval><legendVisible>true</legendVisible><legendTitle/>' + '<legendHeading/>%s%s%s<legendTransparancy>0.0</legendTransparancy>' + '<legendBorderType type="border" value="BorderEmpty"/><legendPositionType type="position" value="PositionNorthEast"/>' + '<timeSliderVisible>true</timeSliderVisible><timeSliderAbove>false</timeSliderAbove>' + '<valueSliderVisible>false</valueSliderVisible><valueSliderLeft>false</valueSliderLeft>' + '<xAxisReversed>false</xAxisReversed><yAxisReversed>false</yAxisReversed><projectorReversed>false</projectorReversed>' + '<scalingFonts>false</scalingFonts><maximumPens>50</maximumPens><pensPerPack>0</pensPerPack>' + '<triggerPen>0</triggerPen><timeAxisVisible>true</timeAxisVisible><timeAxisMajorTickVisible>true</timeAxisMajorTickVisible>' + '<timeAxisMinorTickVisible>false</timeAxisMinorTickVisible>%s%s%s' + '<timeAxisLabelVisible>true</timeAxisLabelVisible><timeAxisLongLabelVisible>false</timeAxisLongLabelVisible>' + '<timeAxisLabelRotation>0</timeAxisLabelRotation><timeAxisTitle/><timeAxisTitleRotation>0</timeAxisTitleRotation>' + '<timeAxisTitlePlacement>50</timeAxisTitlePlacement><timeAxisMajorGridVisible>true</timeAxisMajorGridVisible>' + '%s<timeAxisMajorGridStroke type="stroke" width="1.0" endCap="butt" lineJoin="bevel"/>' + '<timeAxisMinorGridVisible>false</timeAxisMinorGridVisible>%s' + '<timeAxisMinorGridStroke type="stroke" width="1.0" endCap="butt" lineJoin="bevel"/>' + '<headerText>%s</headerText>%s%s<headerJustification type="jTextJustification" value="TextJustificationLeft"/>' + '<footerText/>%s%s<footerJustification type="jTextJustification" value="TextJustificationLeft"/>' + '<enterprisePrimarySourceLocation type="nodeName" node="$default$"/>' + '<enterpriseSecondarySourceLocation type="nodeName" node="$default$"/>' + '<enterprisePrimaryHistoryLocation type="nodeName" node="$default$"/>' + '<enterpriseSecondaryHistoryLocation type="nodeName" node="$default$"/>' + '<updateFromHistory>true</updateFromHistory><useSampleInterval>true</useSampleInterval>' + '<sampleInterval>0</sampleInterval><optimised>true</optimised>%s' + '<timeRange type="timeRangeLast" count="%d"><type type="timeUnit" value="TimeUnitMinute"/></timeRange>' + '<updateInterval>5</updateInterval><fillHistory>true</fillHistory><updating>true</updating>' + '</chartPanel></config>%s<data type="data"><action type="actionInternalServiced"/></data></chart>') % ( + w, h, colorset('foregroundColor', 'muted'), rgb('panel'), rgb('panel'), colorset('hairlineColor', 'muted'), + colorset('legendColor', 'text'), colorset('legendBackgroundColor', 'panel'), font(11, False, FONT_UI, 'legendFont'), + colorset('timeAxisColor', 'muted'), font(11, False, FONT_UI, 'timeAxisFont'), colorset('timeAxisLabelColor', 'muted'), + colorset('timeAxisMajorGridColor', 'line'), colorset('timeAxisMinorGridColor', 'line'), + esc(title), colorset('headerColor', 'text'), font(12, True, FONT_UI, 'headerFont'), + colorset('footerColor', 'muted'), font(11, False, FONT_UI, 'footerFont'), body, minutes, box_elems(l, t, w, h)) + self.add(s) + + # ----- output + def xml(self): + vg = '' + for i, (n, d, z) in enumerate([('Overview', 'Always shown', 10.0), ('Rough', 'Shown when viewing viewing a large area', 25.0), + ('Standard', 'Shown when using the default view setting', 100.0), + ('Detail', 'Shown only when viewing a small area', 400.0), + ('Intricacies', 'Shown only when viewing a very small area', 1000.0)]): + vg += ('<visibilityGroup type="componentData"><htmlId>%d</htmlId><name>%s</name><description>%s</description>' + '<minimumZoomEnabled>true</minimumZoomEnabled><minimumZoomFactor>%s</minimumZoomFactor>' + '</visibilityGroup>\n') % (i + 2, n, d, z) + head = ('<?xml version="1.0" encoding="utf-8" ?>\n<visualization protocolVersion="1.3.0.0">\n <globalSection/>\n' + ' <coreObjectDefinition type="displayDefinition">\n<version type="version" value="1.3.0.0"/>\n' + '<title>%s\ntrue\n%d\n%d\n' + '%d\n' + '%s\ntrue\n%s\n%s\n%s\n\n' + '' + '\n' + '\n' + '500\ntrue\nfalse\n' + ) % (esc(self.title), self.w, self.h, self.hid, colorset('backgroundColor', self.bg), + colorset('defaultBgColor', self.bg), colorset('defaultFgColor', 'text'), font(12, False, FONT_UI, 'defaultFont')) + layer = '1Layer1\n' + body = '%d\n' % len(self.parts) + # full-size background rectangle first (the web client ignores the display background colour on some frames) + return (head + vg + layer + body + '\n'.join(self.parts) + + '\n \n\n') + + def save(self, folder): + import os + with open(os.path.join(folder, self.name + '.xml'), 'w', encoding='utf-8', newline='\r\n') as f: + f.write(self.xml()) diff --git a/examples/CI-Eng-Sample/displays/remove_displays.cmd b/examples/CI-Eng-Sample/displays/remove_displays.cmd index 785aacc..3505bb9 100644 --- a/examples/CI-Eng-Sample/displays/remove_displays.cmd +++ b/examples/CI-Eng-Sample/displays/remove_displays.cmd @@ -1,11 +1,9 @@ @echo off rem Remove the CI-Eng-Sample displays (operator interface and HTML version). CI Server R1.03.00. -rem Close CIENG_Tank, CIENG_Menu and CIENG_TrendLab in the Edit Module first. +rem Close them in the Edit Module first. set WAP=%TLS_WAP_PATH% if not defined TLS_WAP_PATH set WAP=C:\Users\Public\Yokogawa\tls\wap -del /q "%WAP%\cfg\operatorInterfaces\DEPLOY\displays\CIENG_Tank.xml" -del /q "%WAP%\mobileoperator\operatorInterfaces\DEPLOY\displays\CIENG_Tank.html" -del /q "%WAP%\cfg\operatorInterfaces\DEPLOY\displays\CIENG_Menu.xml" -del /q "%WAP%\mobileoperator\operatorInterfaces\DEPLOY\displays\CIENG_Menu.html" -del /q "%WAP%\cfg\operatorInterfaces\DEPLOY\displays\CIENG_TrendLab.xml" -del /q "%WAP%\mobileoperator\operatorInterfaces\DEPLOY\displays\CIENG_TrendLab.html" +for %%d in (CIENG_Header CIENG_Overview CIENG_Control CIENG_Trends CIENG_Alarms CIENG_System CIENG_AlarmBanner CIENG_TankFaceplate) do ( + if exist "%WAP%\cfg\operatorInterfaces\DEPLOY\displays\%%d.xml" del /q "%WAP%\cfg\operatorInterfaces\DEPLOY\displays\%%d.xml" + if exist "%WAP%\mobileoperator\operatorInterfaces\DEPLOY\displays\%%d.html" del /q "%WAP%\mobileoperator\operatorInterfaces\DEPLOY\displays\%%d.html" +) diff --git a/examples/CI-Eng-Sample/displays/trend_feed.ps1 b/examples/CI-Eng-Sample/displays/trend_feed.ps1 deleted file mode 100644 index 37049e4..0000000 --- a/examples/CI-Eng-Sample/displays/trend_feed.ps1 +++ /dev/null @@ -1,16 +0,0 @@ -# Feed test values into the CI-Eng-Sample tank items so trends have a moving line. -# CI Server R1.03.00. TANK1.LEVEL and TANK1.INFLOW are internal items: after a restart they -# stay NOT INIT until something writes them. Writes every 5 s with itmval; stop with Ctrl+C. -# LEVEL = 50 +/- 25 % (period 10 min, stays inside the L 20 / H 80 alarm limits) -# INFLOW = 250 +/- 150 m3/h (period 4 min) -param([int]$Seconds = 3600) - -$end = (Get-Date).AddSeconds($Seconds) -while ((Get-Date) -lt $end) { - $t = [double]((Get-Date) - (Get-Date).Date).TotalSeconds - $level = [math]::Round(50 + 25 * [math]::Sin(2 * [math]::PI * $t / 600), 1) - $inflow = [math]::Round(250 + 150 * [math]::Sin(2 * [math]::PI * $t / 240), 1) - itmval -p -n CI-Eng-Sample.TANK1.LEVEL -v $level > $null - itmval -p -n CI-Eng-Sample.TANK1.INFLOW -v $inflow > $null - Start-Sleep -Seconds 5 -} diff --git a/examples/CI-Eng-Sample/feed/cieng_feed.ps1 b/examples/CI-Eng-Sample/feed/cieng_feed.ps1 new file mode 100644 index 0000000..b1128ca --- /dev/null +++ b/examples/CI-Eng-Sample/feed/cieng_feed.ps1 @@ -0,0 +1,79 @@ +# CI-Eng-Sample live data: writes test values into the sample items so displays, trends and alarms +# move (internal items stay NOT INIT after a CI Server start). CI Server R1.03.00. Replaces +# displays\trend_feed.ps1. Not part of the CI Server package: installed with install_feed.ps1 into +# C:\Users\Public\CI-Eng-Sample\feed, from where the display button "Start" runs it. +# +# Usage: powershell -ExecutionPolicy Bypass -File cieng_feed.ps1 [-Seconds 3600] [-UntilFlag] [-Alarms] [-System] [-Cycle 5] +# (default) run for -Seconds (3600) +# -UntilFlag run while CI-Eng-Sample.DEMO.FEED_ON = 1 (display buttons Start / Stop); sets it to 1 +# at start and 0 at the end +# -Alarms LEVEL 50 +/- 33 % (crosses L 20 and H 80: alarms that need an acknowledgement); +# without it 50 +/- 25 % (stays inside the limits) +# -System also write SYSTEM.CPU_LOAD / DISK_C / PING_LOCALHOST / PROC_ALM with this PC's real +# values - skipped automatically while the monitoring processes (intcpumon, intdskmon, +# inttcpmon, intmon; see ..\monitoring) are running, so they do not overwrite each other +# Every cycle (default 5 s): TANK1.LEVEL (sine, 10 min), TANK1.INFLOW (250 +/- 150 m3/h, 4 min); +# PUMP1.RUNNING = 1 while INFLOW > 250, only in auto mode (PUMP1.MODE = 1). +# Only one copy runs at a time; log: %TLS_LST_PATH%\cieng_feed.log (start / stop lines). +param([int]$Seconds = 3600, [switch]$UntilFlag, [switch]$Alarms, [switch]$System, [int]$Cycle = 5) + +$itmval = 'itmval' +if ($env:TLS_ROOT_PATH) { + $exe = Join-Path $env:TLS_ROOT_PATH 'tls\exe\itmval.exe' + if (Test-Path $exe) { $itmval = $exe } +} +$S = 'CI-Eng-Sample.' +$logDir = $env:TLS_LST_PATH +if (-not $logDir) { $logDir = $PSScriptRoot } +$log = Join-Path $logDir 'cieng_feed.log' + +function Get-Val([string]$name) { + $out = & $itmval -g -n ($S + $name) 2>$null + foreach ($l in $out) { if ($l -match '^Value\s*=\s*(.+)$') { return $Matches[1].Trim() } } + return $null +} +function Put([string]$name, $value) { & $itmval -p -n ($S + $name) -v $value > $null 2>&1 } +function Write-Log([string]$text) { + try { Add-Content -Path $log -Value ('{0} {1}' -f (Get-Date -Format s), $text) } catch { } +} + +$created = $false +$mutex = New-Object Threading.Mutex($true, 'Global\CIENG_FEED', [ref]$created) +if (-not $created) { Write-Log 'already running - this copy exits'; exit 0 } + +$amp = 25 +if ($Alarms) { $amp = 33 } +$monitors = @('intcpumon', 'intdskmon', 'inttcpmon', 'intmon') +$mode = 'seconds=' + $Seconds +if ($UntilFlag) { $mode = 'until FEED_ON = 0' } +$end = (Get-Date).AddSeconds($Seconds) +try { + Write-Log ('start ({0}, alarms={1}, system={2}, user {3})' -f $mode, [bool]$Alarms, [bool]$System, [Environment]::UserName) + if ($UntilFlag) { Put 'DEMO.FEED_ON' 1 } + while ($true) { + if ($UntilFlag) { if ((Get-Val 'DEMO.FEED_ON') -ne '1') { break } } + elseif ((Get-Date) -ge $end) { break } + $t = [double]((Get-Date) - (Get-Date).Date).TotalSeconds + $level = [math]::Round(50 + $amp * [math]::Sin(2 * [math]::PI * $t / 600), 1) + $inflow = [math]::Round(250 + 150 * [math]::Sin(2 * [math]::PI * $t / 240), 1) + Put 'TANK1.LEVEL' $level + Put 'TANK1.INFLOW' $inflow + if ((Get-Val 'PUMP1.MODE') -eq '1') { Put 'PUMP1.RUNNING' ([int]($inflow -gt 250)) } + if ($System -and -not (Get-Process -Name $monitors -ErrorAction SilentlyContinue)) { + try { + $cpus = @(Get-CimInstance Win32_Processor) + $cpu = 0; foreach ($c in $cpus) { $cpu += $c.LoadPercentage }; $cpu = $cpu / [math]::Max(1, $cpus.Count) + Put 'SYSTEM.CPU_LOAD' ([math]::Round($cpu, 1)) + $d = Get-CimInstance Win32_LogicalDisk -Filter "DeviceID='C:'" + Put 'SYSTEM.DISK_C' ([math]::Round(100 * ($d.Size - $d.FreeSpace) / $d.Size, 1)) + Put 'SYSTEM.PING_LOCALHOST' ([int](Test-Connection -ComputerName localhost -Count 1 -Quiet)) + Put 'SYSTEM.PROC_ALM' ([int]([bool](Get-Process alm -ErrorAction SilentlyContinue))) + } catch { } + } + Start-Sleep -Seconds $Cycle + } +} finally { + if ($UntilFlag) { Put 'DEMO.FEED_ON' 0 } + Write-Log 'stop' + $mutex.ReleaseMutex() +} diff --git a/examples/CI-Eng-Sample/feed/cieng_feed_start.cmd b/examples/CI-Eng-Sample/feed/cieng_feed_start.cmd new file mode 100644 index 0000000..022d6c9 --- /dev/null +++ b/examples/CI-Eng-Sample/feed/cieng_feed_start.cmd @@ -0,0 +1,6 @@ +@echo off +rem Starts cieng_feed.ps1 in the background (CI Server R1.03.00). Called by the display button +rem "Start" (server-side command, runs as the CI Server service account CIX_PROCESS) from the +rem fixed install folder C:\Users\Public\CI-Eng-Sample\feed (install_feed.ps1). Returns at once; +rem the feed runs until the button "Stop" writes CI-Eng-Sample.DEMO.FEED_ON = 0. +start "" /b powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File "%~dp0cieng_feed.ps1" -UntilFlag -Alarms -System diff --git a/examples/CI-Eng-Sample/feed/install_feed.ps1 b/examples/CI-Eng-Sample/feed/install_feed.ps1 new file mode 100644 index 0000000..adcd746 --- /dev/null +++ b/examples/CI-Eng-Sample/feed/install_feed.ps1 @@ -0,0 +1,18 @@ +# Install or remove the CI-Eng-Sample live-data feed (CI Server R1.03.00). +# Copies cieng_feed.ps1 and cieng_feed_start.cmd to C:\Users\Public\CI-Eng-Sample\feed: a fixed folder +# outside the CI Server installation (the feed is not part of the CI Server package) that the CI +# Server service account can read. The display button "Start" calls the .cmd there. +# No admin rights needed. Usage: powershell -ExecutionPolicy Bypass -File install_feed.ps1 [-Remove] +param([switch]$Remove) +$dest = 'C:\Users\Public\CI-Eng-Sample\feed' +if ($Remove) { + if (Test-Path $dest) { Remove-Item -LiteralPath $dest -Recurse -Force } + $parent = Split-Path $dest + if ((Test-Path $parent) -and -not (Get-ChildItem -LiteralPath $parent -Force)) { Remove-Item -LiteralPath $parent -Force } + 'Feed removed from ' + $dest + return +} +New-Item -ItemType Directory -Force -Path $dest > $null +Copy-Item -LiteralPath (Join-Path $PSScriptRoot 'cieng_feed.ps1') -Destination $dest -Force +Copy-Item -LiteralPath (Join-Path $PSScriptRoot 'cieng_feed_start.cmd') -Destination $dest -Force +'Feed installed in ' + $dest diff --git a/examples/CI-Eng-Sample/layouts/CIENG_Operator.xml b/examples/CI-Eng-Sample/layouts/CIENG_Operator.xml index 205b5ca..09d6b7a 100644 --- a/examples/CI-Eng-Sample/layouts/CIENG_Operator.xml +++ b/examples/CI-Eng-Sample/layouts/CIENG_Operator.xml @@ -1,11 +1,13 @@ - + CIENG_Operator: menu, navigation toolbar, header frame "hdr" (CIENG_Header), tab set "default" + with frames ovw / ctl / trd / alm / sys, alarm banner frame (CIENG_AlarmBanner), status line. + CIENG_Popup: faceplate window (CIENG_TankFaceplate). No AOG displays are used. + Desktop: frames inside a ignore their zoom attribute; the navigate commands carry + stretchDisplay instead (and CIENG_AlarmBanner opens the Overview tab that way at logon). --> - - + + - + + - - - + + + - + + - - - - - - + + + + + + - - - - - + + + + - - + + + + + + + + - - - - - - + + + + + + + + + + + + + - + - + - + - + + + + + + diff --git a/examples/CI-Eng-Sample/layouts/layout.ps1 b/examples/CI-Eng-Sample/layouts/layout.ps1 index 18d6129..d114a38 100644 --- a/examples/CI-Eng-Sample/layouts/layout.ps1 +++ b/examples/CI-Eng-Sample/layouts/layout.ps1 @@ -31,4 +31,4 @@ if (-not $Remove) { # Check that the result is still well-formed XML before writing it. [xml]$null = $text [IO.File]::WriteAllText($file, $text, (New-Object Text.UTF8Encoding($false))) -if ($Remove) { 'CIENG_Operator layout removed' } else { 'CIENG_Operator layout added' } +if ($Remove) { 'CIENG_Operator / CIENG_Popup layouts removed' } else { 'CIENG_Operator / CIENG_Popup layouts added' } diff --git a/examples/CI-Eng-Sample/load.cmd b/examples/CI-Eng-Sample/load.cmd index 11bb469..88eef9a 100644 --- a/examples/CI-Eng-Sample/load.cmd +++ b/examples/CI-Eng-Sample/load.cmd @@ -17,8 +17,10 @@ rem Processing: trigger group, class (compiled on load via COMPILE = 1), object dssqld -i 05_trigger_df.qli -l 05_trigger_df.qlo dssqld -i 06_class_df.qli -l 06_class_df.qlo dssqld -i 07_object_df.qli -l 07_object_df.qlo -rem Authorization: read-only group (no users are created by the sample) +rem Authorization: read-only group CIENG_VIEWER dssqld -i 08_auth_group_df.qli -l 08_auth_group_df.qlo +rem Demo user CIENG (no password; logs on to the CIENG_Operator layout) +dssqld -i 08b_user_df.qli -l 08b_user_df.qlo rem Equipment: Modbus loopback line, station, scan type, points, connected items. rem The station needs the Modbus slave mirror (equipment\eqpciengslv_start.cmd, see README). dssqld -i 09_modbus_line_df.qli -l 09_modbus_line_df.qlo diff --git a/examples/CI-Eng-Sample/remove.cmd b/examples/CI-Eng-Sample/remove.cmd index 3fd02aa..49b7b48 100644 --- a/examples/CI-Eng-Sample/remove.cmd +++ b/examples/CI-Eng-Sample/remove.cmd @@ -1,6 +1,8 @@ @echo off rem Remove CI-Eng-Sample from a CI Server R1.03 TEST system (also deletes its history). rem Run in an elevated prompt while CI Server is running; call this script by full path. +rem Log out every CIENG session first (Operator Interface and web): on R1.03.00 an open session kept +rem its user's authorization group in use (DSSP-E-NODEL ... USER_VAL), and a retry stopped DSSSDA03. rem Order: audit report + selection group, reports, printer, OPC UA, Modbus, auth group, object, class, trigger group, storage links, stop + delete storage groups, items, sections (children first). rem A storage group with an active unit cannot be deleted (HIS-E-GROUPHASUNT), so the rem group first gets a stop time one minute ahead; the script waits until it has passed. diff --git a/knowledge/issues.md b/knowledge/issues.md index c8ba004..56689a7 100644 --- a/knowledge/issues.md +++ b/knowledge/issues.md @@ -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 `` **and** `1.1.268.0.0.1.1.7` 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 `` 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-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-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 "
*"` 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 "
*"` 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 | @@ -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-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: `` provides defaults (`closeTabAllowed`, `stackSize`, …) for its frames, and `maximumTabs`, `minimumTabLabelWidth`, `tabButtonGap`, `tabPosition` control the tabs. Observed: defaults on `` 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 `` 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 `` and on the `` 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 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 ` 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 `.lck` and `.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) | diff --git a/knowledge/manuals/IM36K10C50-01EN.md b/knowledge/manuals/IM36K10C50-01EN.md index d83ae50..1940b60 100644 --- a/knowledge/manuals/IM36K10C50-01EN.md +++ b/knowledge/manuals/IM36K10C50-01EN.md @@ -3,7 +3,7 @@ manual: IM 36K10C50-01EN title: Edit Module edition: 3rd Edition, Sep. 2023 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) @@ -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 displays and displays saved by a newer version are skipped (`*** Display locked `, `… 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) @@ -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 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) - `` with `true`, ``, ``, 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 what counts. Sessions that were already open kept the old binding (value frozen) until the 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) diff --git a/knowledge/manuals/IM36K10L25-01EN.md b/knowledge/manuals/IM36K10L25-01EN.md index 0d89a5b..e92810a 100644 --- a/knowledge/manuals/IM36K10L25-01EN.md +++ b/knowledge/manuals/IM36K10L25-01EN.md @@ -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 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 -`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). ## 4. Setup files (§4.2) diff --git a/knowledge/manuals/IM36K10R30-01EN.md b/knowledge/manuals/IM36K10R30-01EN.md index 883cbe7..927c1dc 100644 --- a/knowledge/manuals/IM36K10R30-01EN.md +++ b/knowledge/manuals/IM36K10R30-01EN.md @@ -3,7 +3,7 @@ manual: IM 36K10R30-01EN title: Graphic Display Setup edition: 3rd Edition, Sep. 2023 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) @@ -38,13 +38,16 @@ empty = `deploy`). - 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). - 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 `_1` / `_2` and let 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 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`, `wsxgap1f/r`, `wuxga1f/r`, `ResizablePopup`, `FixedPopup`, `popup`, `Splash`, `tuningpanel`, `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 `https://:8443/auth/mbl`); user profile fields used: password, authorization group, ASA, shelving group, process areas, logoff timeout, deployment, initial display, locale (layout - not). Login control: `dssana.sup` interface *mobile operator*. -- **Verified**: `http://localhost:8080/mobileoperator/?d=CIENG_Tank` showed the operator + not, per this manual). **Installed software**: the profile's *Layout* is used as well - a + 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 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 @@ -84,7 +89,7 @@ property files and language codes (§3.5). no enterprise displays. Components supported (§4.8): alarm overview, display, group, symbol, trend, visibility group/layer, parameters, web browser (with listed properties). - Full screen F11, Chrome shortcuts or `chrome.exe --app=http://:`. -- **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). 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 diff --git a/knowledge/progress.md b/knowledge/progress.md index 8fd9c2f..c82ea79 100644 --- a/knowledge/progress.md +++ b/knowledge/progress.md @@ -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 | 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. | +| 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` 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. | | 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). |