From 44b33e24b644459038edd956cfce7345ce3236c1 Mon Sep 17 00:00:00 2001
From: Alejandro Acuña <alejandro.acuna@aluvisagrupo.com>
Date: Wed, 18 Dec 2024 08:54:47 +0000
Subject: [PATCH] no message

---
 servers/rtzserver/data/art.servers.rtzserver/symbols/18.5/Controller.svg |  399 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 386 insertions(+), 13 deletions(-)

diff --git a/servers/rtzserver/data/art.servers.rtzserver/symbols/18.5/Controller.svg b/servers/rtzserver/data/art.servers.rtzserver/symbols/18.5/Controller.svg
index bb909a0..1160a0a 100644
--- a/servers/rtzserver/data/art.servers.rtzserver/symbols/18.5/Controller.svg
+++ b/servers/rtzserver/data/art.servers.rtzserver/symbols/18.5/Controller.svg
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    width="27.331806mm"
    height="36.046158mm"
    viewBox="0 0 27.331806 36.046158"
    version="1.1"
    id="svg1894"
-   inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
-   sodipodi:docname="Controller.svg"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:dc="http://purl.org/dc/elements/1.1/">
+   inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
+   sodipodi:docname="Controller.svg">
   <defs
      id="defs1888" />
   <sodipodi:namedview
@@ -24,8 +24,8 @@
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
      inkscape:zoom="3.959798"
-     inkscape:cx="-47.855976"
-     inkscape:cy="66.29126"
+     inkscape:cx="-57.110407"
+     inkscape:cy="95.513044"
      inkscape:document-units="mm"
      inkscape:current-layer="g4133"
      showgrid="false"
@@ -34,7 +34,7 @@
      fit-margin-right="0"
      fit-margin-bottom="0"
      inkscape:window-width="1920"
-     inkscape:window-height="1017"
+     inkscape:window-height="1027"
      inkscape:window-x="-8"
      inkscape:window-y="-8"
      inkscape:window-maximized="1"
@@ -43,7 +43,380 @@
      inkscape:deskcolor="#d1d1d1" />
   <metadata
      id="Metadata"
-     art.script="    public void status()&#10;    {&#10;        try&#10;        {&#10;            statusSubcontroller();&#10;        } catch (Exception e)&#10;        {&#10;        }&#10;    }&#10;&#10;    public void statusSubcontroller()&#10;    {     &#10;        art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller controller = (art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller) getDevice();&#10;        art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerStatus controllerStatus = (art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerStatus) controller.getDeviceStatus();&#10;        art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation controllerInformation = (art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation) controller.getDeviceInformation();&#10;        art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status subcontrollerStatus = controllerStatus.rtz32;&#10;        art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerRealtime subcontrollerRealtime = (art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerRealtime) device.getDeviceRealtime();&#10;        art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerConfiguration subcontrollerConfiguration = (art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerConfiguration) device.getDeviceConfiguration();&#10;&#10;        SVGElement emergency = getElement(&quot;Emergency&quot;);&#10;        SVGElement lock = getElement(&quot;Lock&quot;);&#10;        SVGElement run = getElement(&quot;Run&quot;);&#10;        SVGElement remote = getElement(&quot;Remote&quot;);&#10;        SVGElement background = getElement(&quot;Background&quot;);&#10;        SVGElement border = getElement(&quot;Border&quot;);&#10;        SVGElement ribbon = getElement(&quot;Ribbon&quot;);&#10;        SVGElement elapsed1 = getElement(&quot;Elapsed1&quot;);&#10;        SVGElement elapsed2 = getElement(&quot;Elapsed2&quot;);&#10;        setAttribute(emergency, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);&#10;        setAttribute(lock, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);&#10;        setAttribute(run, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);&#10;        setAttribute(remote, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);&#10;        setAttribute(emergency, &quot;fill&quot;, &quot;#804080&quot;, 999);&#10;        setAttribute(lock, &quot;fill&quot;, &quot;#804080&quot;, 999);&#10;        setAttribute(run, &quot;fill&quot;, &quot;#804080&quot;, 999);&#10;        setAttribute(remote, &quot;fill&quot;, &quot;#804080&quot;, 999);&#10;        setText(&quot;Text number&quot;, String.format(&quot;%05d&quot;, controllerInformation.number));&#10;        setText(&quot;Text information&quot;, &quot;&quot;);&#10;        setText(&quot;Text offset&quot;, &quot;&quot;);&#10;        setText(&quot;Text cycle&quot;, &quot;&quot;);&#10;        setText(&quot;Text elapsed&quot;, &quot;&quot;);&#10;&#10;		if (art.client.models.Shared.configuration.general.darkMap == true)&#10;		{&#10;			setAttribute(&quot;Text number&quot;, &quot;fill&quot;, &quot;#FFFFFF&quot;);&#10;			setAttribute(&quot;Text information&quot;, &quot;fill&quot;, &quot;#FFFFFF&quot;);&#10;			setAttribute(&quot;Text offset&quot;, &quot;fill&quot;, &quot;#FFFFFF&quot;);&#10;			setAttribute(&quot;Text cycle&quot;, &quot;fill&quot;, &quot;#FFFFFF&quot;);&#10;		}&#10;		else&#10;		{&#10;			setAttribute(&quot;Text number&quot;, &quot;fill&quot;, &quot;#000000&quot;);&#10;			setAttribute(&quot;Text information&quot;, &quot;fill&quot;, &quot;#000000&quot;);&#10;			setAttribute(&quot;Text offset&quot;, &quot;fill&quot;, &quot;#000000&quot;);&#10;			setAttribute(&quot;Text cycle&quot;, &quot;fill&quot;, &quot;#000000&quot;);&#10;		}&#10;&#10;        setAttribute(elapsed1, &quot;display&quot;, &quot;none&quot;);&#10;        setAttribute(elapsed2, &quot;display&quot;, &quot;none&quot;);&#10;        setAttribute(border, &quot;stroke&quot;, &quot;#800080&quot;);&#10;        setAttribute(border, &quot;display&quot;, &quot;inline&quot;);&#10;        setAttribute(border, &quot;stroke-width&quot;, 6.5);&#10;        setAttribute(border, &quot;stroke-opacity&quot;, 0.75);&#10;        setAttribute(ribbon, &quot;stroke-opacity&quot;, 0.50);&#10;        setAttribute(ribbon, &quot;stroke&quot;, &quot;#FF80FF&quot;);&#10;        setAttribute(background, &quot;fill&quot;, &quot;#FF80FF&quot;);&#10;        &#10;        switch (controllerStatus.status)&#10;        {&#10;            case art.library.model.devices.DeviceStatus.STATUS_ONLINE:&#10;                break;&#10;            case art.library.model.devices.DeviceStatus.STATUS_WARNING:&#10;                break;&#10;            case art.library.model.devices.DeviceStatus.STATUS_ALARM:&#10;&#10;&#10;&#10;&#10;                break;&#10;            case art.library.model.devices.DeviceStatus.STATUS_DISABLE:&#10;                setAttribute(background, &quot;fill&quot;, &quot;#404040&quot;);&#10;                setAttribute(ribbon, &quot;stroke&quot;, &quot;#404040&quot;);&#10;                setAttribute(border, &quot;stroke&quot;, &quot;#808080&quot;);&#10;                setAttribute(border, &quot;display&quot;, &quot;inline&quot;);&#10;                setAttribute(border, &quot;stroke-width&quot;, 6.5);&#10;                setAttribute(border, &quot;stroke-opacity&quot;, 1.0);&#10;                setAttribute(emergency, &quot;fill-opacity&quot;, &quot;0.0&quot;, 999);&#10;                setAttribute(lock, &quot;fill-opacity&quot;, &quot;0.0&quot;, 999);&#10;                setAttribute(run, &quot;fill-opacity&quot;, &quot;0.0&quot;, 999);&#10;                setAttribute(remote, &quot;fill-opacity&quot;, &quot;0.0&quot;, 999);&#10;                return;&#10;            case art.library.model.devices.DeviceStatus.STATUS_SIMULATION:&#10;                setAttribute(background, &quot;fill&quot;, &quot;#0000FF&quot;);&#10;                setAttribute(ribbon, &quot;stroke&quot;, &quot;#0000FF&quot;);&#10;                setAttribute(border, &quot;stroke&quot;, &quot;#000080&quot;);&#10;                setAttribute(border, &quot;display&quot;, &quot;inline&quot;);&#10;                setAttribute(border, &quot;stroke-width&quot;, 6.5);&#10;                setAttribute(border, &quot;stroke-opacity&quot;, 1.0);&#10;                break;&#10;            case art.library.model.devices.DeviceStatus.STATUS_INVALID:&#10;            case art.library.model.devices.DeviceStatus.STATUS_OFFLINE:&#10;            case art.library.model.devices.DeviceStatus.STATUS_UNKNOWN:&#10;                setAttribute(background, &quot;fill&quot;, &quot;#FF00FF&quot;);&#10;                setAttribute(ribbon, &quot;stroke&quot;, &quot;#FF00FF&quot;);&#10;                setAttribute(border, &quot;stroke&quot;, &quot;#FF00FF&quot;);&#10;                setAttribute(border, &quot;display&quot;, &quot;inline&quot;);&#10;                setAttribute(border, &quot;stroke-width&quot;, 6.5);&#10;                setAttribute(border, &quot;stroke-opacity&quot;, 1.0);&#10;                return;&#10;        }&#10;       &#10;        if (subcontrollerStatus.forcings != null&#10;                &amp;&amp; (subcontrollerStatus.forcings.centralized != null&#10;                || subcontrollerStatus.forcings.colorsMode != null&#10;                || subcontrollerStatus.forcings.computerMode != null&#10;                || subcontrollerStatus.forcings.control != null&#10;                || subcontrollerStatus.forcings.plan != null))&#10;        {&#10;            setAttribute(lock, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);&#10;            setAttribute(lock, &quot;fill&quot;, &quot;#FF0000&quot;, 999);&#10;        } else&#10;        {&#10;            setAttribute(lock, &quot;fill-opacity&quot;, &quot;0.15&quot;, 999);&#10;            setAttribute(lock, &quot;fill&quot;, &quot;#000000&quot;, 999);&#10;        }&#10;         if (subcontrollerStatus.general.emergency == true)&#10;        {&#10;            setAttribute(emergency, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);&#10;        } else if (subcontrollerStatus.general.emergency == false)&#10;        {&#10;            setAttribute(emergency, &quot;fill-opacity&quot;, &quot;0.15&quot;, 999);&#10;            setAttribute(emergency, &quot;fill&quot;, &quot;#000000&quot;, 999);&#10;        }&#10;        &#10;         switch (subcontrollerStatus.general.planMode)&#10;        {&#10;            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_ONLINE_ORDERS:&#10;            {&#10;                break;&#10;            }&#10;            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_TIMETABLE:&#10;            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_DELAYED_ORDERS:&#10;            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_DYNAMIC_SELECTION:&#10;            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_FORCED:&#10;            {&#10;                break;&#10;            }&#10;        }&#10;&#10;        setAttribute(&quot;Text information&quot;, &quot;display&quot;, &quot;iniline&quot;, 999);&#10;        setAttribute(&quot;Text offset&quot;, &quot;display&quot;, &quot;iniline&quot;, 999);&#10;        setAttribute(&quot;Text cycle&quot;, &quot;display&quot;, &quot;iniline&quot;, 999);&#10;&#10;        if ((subcontrollerStatus.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_COMPUTER))&#10;        {&#10;            setAttribute(remote, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);&#10;            setAttribute(remote, &quot;fill&quot;, &quot;#0000FF&quot;, 999);&#10;        } else &#10;        {&#10;            setAttribute(remote, &quot;fill-opacity&quot;, &quot;0.15&quot;, 999);&#10;            setAttribute(remote, &quot;fill&quot;, &quot;#000000&quot;, 999);&#10;        }&#10;        if (subcontrollerRealtime != null &amp;&amp; subcontrollerRealtime.rtz32 != null &amp;&amp; subcontrollerRealtime.rtz32.junctionRealtime == true)&#10;        {&#10;            setAttribute(run, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);&#10;            setAttribute(run, &quot;fill&quot;, &quot;#0000FF&quot;, 999);&#10;        } else&#10;        {&#10;            setAttribute(run, &quot;fill-opacity&quot;, &quot;0.15&quot;, 999);&#10;            setAttribute(run, &quot;fill&quot;, &quot;#000000&quot;, 999);&#10;        }&#10;        double strokeopacity = Math.pow(2, controller.getDeviceAlarms().getServerityAlarm()) / 32;&#10;        if (controller.getDeviceAlarms().getServerityAlarm() &gt; 0)&#10;        {&#10;            setAttribute(border, &quot;display&quot;, &quot;inline&quot;);&#10;            setAttribute(border, &quot;stroke&quot;, &quot;#FF0000&quot;);&#10;            setAttribute(border, &quot;stroke-opacity&quot;, strokeopacity);&#10;            setAttribute(border, &quot;stroke-width&quot;, 6.5 + (6.5 * strokeopacity));&#10;        } else&#10;        {&#10;            setAttribute(border, &quot;stroke&quot;, &quot;#808080&quot;);&#10;            setAttribute(border, &quot;display&quot;, &quot;inline&quot;);&#10;            setAttribute(border, &quot;stroke-width&quot;, 6.5);&#10;            setAttribute(border, &quot;stroke-opacity&quot;, 1.0);&#10;        }&#10;        &#10;        java.util.Calendar calendardate = java.util.Calendar.getInstance();&#10;        calendardate.set(java.util.Calendar.MILLISECOND, 0);&#10;        long seconds = calendardate.getTimeInMillis() / 1000;&#10;        boolean even = seconds % 2 == 0;&#10;&#10;        switch (subcontrollerStatus.general.state)&#10;        {&#10;            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_UNKNOWN:&#10;                setAttribute(background, &quot;fill&quot;, &quot;#808080&quot;);&#10;                setAttribute(ribbon, &quot;stroke&quot;, &quot;#808080&quot;);&#10;                setAttribute(elapsed2, &quot;fill&quot;, &quot;#808080&quot;);&#10;                setText(&quot;Text information&quot;, &quot;OFF&quot;);&#10;                return;&#10;          &#10;            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_FLASHING:&#10;                setAttribute(&quot;Text information&quot;, &quot;display&quot;,&quot;none&quot;,999);&#10;                setAttribute(&quot;Text offset&quot;, &quot;display&quot;,&quot;none&quot;,999);&#10;                setAttribute(&quot;Text cycle&quot;, &quot;display&quot;,&quot;none&quot;,999);&#10;&#10;                if (even)&#10;                {&#10;                    setAttribute(background, &quot;fill&quot;, &quot;#FFFF00&quot;);&#10;                    setAttribute(ribbon, &quot;stroke&quot;, &quot;#FFFF00&quot;);&#10;                    setAttribute(elapsed2, &quot;fill&quot;, &quot;#FFFF00&quot;);&#10;                } else&#10;                {&#10;                    setAttribute(background, &quot;fill&quot;, &quot;#808000&quot;);&#10;                    setAttribute(ribbon, &quot;stroke&quot;, &quot;#808000&quot;);&#10;                    setAttribute(elapsed2, &quot;fill&quot;, &quot;#808000&quot;);&#10;                }&#10;                setText(&quot;Text information&quot;, &quot;Y^&quot;);&#10;                break;&#10;            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_STARTUP:&#10;                if (subcontrollerStatus.general.emergency == true)&#10;                {&#10;                    setAttribute(background, &quot;fill&quot;, even ? &quot;#FF8000&quot; : &quot;#804000&quot;);&#10;                    setAttribute(ribbon, &quot;stroke&quot;, even ? &quot;#FF8000&quot; : &quot;#804000&quot;);&#10;                    setAttribute(elapsed2, &quot;fill&quot;, even ? &quot;#FF8000&quot; : &quot;#804000&quot;);&#10;                } else if (subcontrollerStatus.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_LOCAL)&#10;                {&#10;                    setAttribute(background, &quot;fill&quot;, even ? &quot;#008000&quot; : &quot;#004000&quot;);&#10;                    setAttribute(ribbon, &quot;stroke&quot;, even ?&quot;#008000&quot; : &quot;#004000&quot;);&#10;                    setAttribute(elapsed2, &quot;fill&quot;,even ? &quot;#008000&quot; : &quot;#004000&quot;);&#10;                } else&#10;                {&#10;                    setAttribute(background, &quot;fill&quot;, even ? &quot;#00FF00&quot; : &quot;#008000&quot;);&#10;                    setAttribute(ribbon, &quot;stroke&quot;, even ? &quot;#00FF00&quot; : &quot;#008000&quot;);&#10;                    setAttribute(elapsed2, &quot;fill&quot;, even ? &quot;#00FF00&quot; : &quot;#008000&quot;);&#10;                }&#10;                break;&#10;            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_COLORS:&#10;                if (subcontrollerStatus.general.emergency == true)&#10;                {&#10;                    setAttribute(background, &quot;fill&quot;, &quot;#FF8000&quot;);&#10;                    setAttribute(ribbon, &quot;stroke&quot;, &quot;#FF8000&quot;);&#10;                    setAttribute(elapsed2, &quot;fill&quot;, &quot;#FF8000&quot;);&#10;                } &#10;                else if (subcontrollerStatus.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_LOCAL)&#10;                {&#10;                    setAttribute(background, &quot;fill&quot;, &quot;#008000&quot;);&#10;                    setAttribute(ribbon, &quot;stroke&quot;, &quot;#008000&quot;);&#10;                    setAttribute(elapsed2, &quot;fill&quot;, &quot;#008000&quot;);&#10;                } else&#10;                {&#10;                    setAttribute(background, &quot;fill&quot;, &quot;#00FF00&quot;);&#10;                    setAttribute(ribbon, &quot;stroke&quot;, &quot;#00FF00&quot;);&#10;                    setAttribute(elapsed2, &quot;fill&quot;, &quot;#00FF00&quot;);&#10;                }&#10;                break;&#10;        }&#10;        art.library.model.devices.colors.controller.RTZ32.configuration.RTZ32_Configuration_Program plan = null;&#10;        if (subcontrollerStatus.plan != null &amp;&amp; subcontrollerStatus.plan.number &gt; 0)&#10;        {&#10;            try&#10;            {&#10;                plan = subcontrollerConfiguration.rtz32.getProgram(subcontrollerStatus.plan.number);&#10;            } catch (Exception e)&#10;            {&#10;            }&#10;        }&#10;        &#10;        if (plan != null)&#10;        {&#10;        &#10;            String information = &quot;&quot;;&#10;&#10;             if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED)&#10;                information = &quot;C&quot;;&#10;             else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_MASTER)&#10;                information = &quot;M&quot;;&#10;             else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_MASTER_SLAVE)&#10;                information = &quot;M-E&quot;;&#10;             else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_SLAVE)&#10;                information = &quot;E&quot;;&#10;             else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_SLAVE_MASTER)&#10;                information = &quot;E-M&quot;;&#10;             else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_TROLLEY)&#10;                information = &quot;CTw&quot;;&#10;             else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_NON_CENTRALIZED)&#10;                information = &quot;NC&quot;;&#10;             else&#10;                information = &quot;?&quot;;&#10;&#10;            information = information + plan.number;&#10;&#10;            switch (subcontrollerStatus.general.planMode)&#10;            {&#10;                case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_DELAYED_ORDERS:&#10;                    information = information + &quot;d&quot;;&#10;                    break;&#10;                case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_DYNAMIC_SELECTION:&#10;                    information = information + &quot;ds&quot;;&#10;                    break;&#10;                case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_FORCED:&#10;                    information = information + &quot;f&quot;;&#10;                    break;&#10;                case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_ONLINE_ORDERS:&#10;                    information = information + &quot;o&quot;;&#10;                    break;&#10;                case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_TIMETABLE:&#10;                    information = information + &quot;t&quot;;&#10;                    break;&#10;            }&#10;            &#10;            setText(&quot;Text information&quot;, information);&#10;            if (plan.offset &gt; 0)&#10;            {&#10;                setText(&quot;Text offset&quot;, &quot;&quot; + plan.offset);&#10;            } else&#10;            {&#10;                setText(&quot;Text offset&quot;, &quot;&quot;);&#10;            }&#10;            setText(&quot;Text cycle&quot;, &quot;&quot; + plan.cycle);&#10;            &#10;            if (subcontrollerRealtime != null)&#10;            {&#10;                try&#10;                {&#10;                    String text = subcontrollerRealtime.rtz32.phase.phaseNumber + &quot;:&quot; + subcontrollerRealtime.rtz32.counters.cycle;&#10;&#10;                    setText(&quot;Text elapsed&quot;, text);&#10;                    setAttribute(elapsed1, &quot;display&quot;, &quot;inline&quot;);&#10;                    setAttribute(elapsed2, &quot;display&quot;, &quot;inline&quot;);&#10;                    int elapsedWidth = getAttributeInteger(elapsed1, &quot;width&quot;) - 2;&#10;                    float ratio = 1;&#10;                    setAttribute(elapsed2, &quot;width&quot;, (elapsedWidth * Math.min(1.0f, ratio)));&#10;                    update(elapsed2);&#10;                } catch (Exception ex)&#10;                {&#10;                }&#10;            }&#10;       &#10;            java.awt.Color bckColor = java.awt.Color.decode(background.getStyleAbsolute(&quot;fill&quot;).getStringValue());&#10;            java.awt.Color darkerColor = bckColor.darker();&#10;            String darkHex = String.format(&quot;#%02x%02x%02x&quot;, darkerColor.darker().getRed(), darkerColor.darker().getGreen(), darkerColor.darker().getBlue());&#10;&#10;            setAttribute(&quot;Text information&quot;, &quot;fill&quot;, darkHex, 999);&#10;            setAttribute(&quot;Text offset&quot;, &quot;fill&quot;, darkHex, 999);&#10;            setAttribute(&quot;Text cycle&quot;, &quot;fill&quot;, darkHex, 999);&#10;&#10;            setAttribute(emergency, &quot;fill&quot;, darkHex, 999);&#10;            setAttribute(lock, &quot;fill&quot;, darkHex, 999);&#10;            setAttribute(run, &quot;fill&quot;, darkHex, 999);&#10;            setAttribute(remote, &quot;fill&quot;, darkHex, 999);&#10;        }&#10;    }&#10;&#10;    public void paintNoStatusAvailable()&#10;    {&#10;        art.library.model.devices.colors.controller.M.M_Controller controller = (art.library.model.devices.colors.controller.M.M_Controller) getDevice();&#10;        SVGElement thunderbolt = getElement(&quot;Thunderbolt&quot;);&#10;        SVGElement emergency = getElement(&quot;Emergency&quot;);&#10;        SVGElement lock = getElement(&quot;Lock&quot;);&#10;        SVGElement calendar = getElement(&quot;Calendar&quot;);&#10;        SVGElement run = getElement(&quot;Run&quot;);&#10;        SVGElement remote = getElement(&quot;Remote&quot;);&#10;        SVGElement background = getElement(&quot;Background&quot;);&#10;        SVGElement border = getElement(&quot;Border&quot;);&#10;        SVGElement ribbon = getElement(&quot;Ribbon&quot;);&#10;        SVGElement elapsed1 = getElement(&quot;Elapsed1&quot;);&#10;        SVGElement elapsed2 = getElement(&quot;Elapsed2&quot;);&#10;        setAttribute(thunderbolt, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);&#10;        setAttribute(emergency, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);&#10;        setAttribute(lock, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);&#10;        setAttribute(calendar, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);&#10;        setAttribute(run, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);&#10;        setAttribute(remote, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);&#10;        setAttribute(thunderbolt, &quot;fill&quot;, &quot;#804080&quot;, 999);&#10;        setAttribute(emergency, &quot;fill&quot;, &quot;#804080&quot;, 999);&#10;        setAttribute(lock, &quot;fill&quot;, &quot;#804080&quot;, 999);&#10;        setAttribute(calendar, &quot;fill&quot;, &quot;#804080&quot;, 999);&#10;        setAttribute(run, &quot;fill&quot;, &quot;#804080&quot;, 999);&#10;        setAttribute(remote, &quot;fill&quot;, &quot;#804080&quot;, 999);&#10;        setText(&quot;Text number&quot;, String.format(&quot;%05d&quot;, controller.getDeviceInformation().number));&#10;        setText(&quot;Text information&quot;, &quot;&quot;);&#10;        setText(&quot;Text offset&quot;, &quot;&quot;);&#10;        setText(&quot;Text cycle&quot;, &quot;&quot;);&#10;        setText(&quot;Text elapsed&quot;, &quot;&quot;);&#10;        setAttribute(elapsed1, &quot;display&quot;, &quot;none&quot;);&#10;        setAttribute(elapsed2, &quot;display&quot;, &quot;none&quot;);&#10;        setAttribute(ribbon, &quot;stroke-opacity&quot;, 0.50);&#10;        setAttribute(background, &quot;fill&quot;, &quot;#FF00FF&quot;);&#10;        setAttribute(ribbon, &quot;stroke&quot;, &quot;#FF00FF&quot;);&#10;        setAttribute(border, &quot;stroke&quot;, &quot;#FF00FF&quot;);&#10;        setAttribute(border, &quot;display&quot;, &quot;inline&quot;);&#10;        setAttribute(border, &quot;stroke-width&quot;, 6.5);&#10;        setAttribute(border, &quot;stroke-opacity&quot;, 1.0);&#10;    }&#10;&#10;    public void commands()&#10;    {&#10;        final String colorNoCommandsBorder = &quot;#00007C&quot;;&#10;        final String colorNoCommandsBackground = &quot;#7C7CFA&quot;;&#10;        &#10;        final String colorCommandsBorder = &quot;#007C00&quot;;&#10;        final String colorCommandsBackground = &quot;#7CFA7C&quot;;&#10;        &#10;        art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller controller = (art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller) getDevice();&#10;        art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation controllerInformation = (art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation) controller.getDeviceInformation();&#10;&#10;        SVGElement background = getElement(&quot;Background&quot;);&#10;        SVGElement border = getElement(&quot;Border&quot;);&#10;        SVGElement ribbon = getElement(&quot;Ribbon&quot;);&#10;&#10;        SVGElement emergency = getElement(&quot;Emergency&quot;);&#10;        SVGElement lock = getElement(&quot;Lock&quot;);&#10;        SVGElement run = getElement(&quot;Run&quot;);&#10;        SVGElement remote = getElement(&quot;Remote&quot;);&#10;&#10;        setAttribute(border, &quot;stroke&quot;, !getDeviceCommands().isEmpty() ? colorCommandsBorder : colorNoCommandsBorder);&#10;        setAttribute(border, &quot;display&quot;, &quot;inline&quot;);&#10;        setAttribute(border, &quot;stroke-width&quot;, 6.5);&#10;        setAttribute(border, &quot;stroke-opacity&quot;, 0.75);&#10;        setAttribute(ribbon, &quot;stroke-opacity&quot;, 0.50);&#10;        setAttribute(ribbon, &quot;stroke&quot;, !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground);&#10;        setAttribute(background, &quot;fill&quot;, !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground);&#10;&#10;        setAttribute(emergency, &quot;fill&quot;, !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999);&#10;        setAttribute(lock, &quot;fill&quot;, !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999);&#10;        setAttribute(run, &quot;fill&quot;, !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999);&#10;        setAttribute(remote, &quot;fill&quot;, !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999);&#10;&#10;        setText(&quot;Text number&quot;, String.format(&quot;%05d&quot;, controllerInformation.number));&#10;        setAttribute(&quot;Text information&quot;, &quot;display&quot;, &quot;none&quot;, 999);&#10;        setAttribute(&quot;Text offset&quot;, &quot;display&quot;, &quot;none&quot;, 999);&#10;        setAttribute(&quot;Text cycle&quot;, &quot;display&quot;, &quot;none&quot;, 999);&#10;        setAttribute(&quot;Text elapsed&quot;, &quot;display&quot;, &quot;none&quot;, 999);&#10;&#10;    }    &#10;">
+     art.script="public void status()
+    {
+        try
+        {
+            statusSubcontroller();
+        } catch (Exception e)
+        {
+        }
+    }
+
+    public void statusSubcontroller()
+    {
+        java.util.Calendar calendardate = java.util.Calendar.getInstance();
+        calendardate.set(java.util.Calendar.MILLISECOND, 0);
+        long seconds = calendardate.getTimeInMillis() / 1000;
+        boolean even = seconds % 2 == 0;
+        art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller controller = (art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller) getDevice();
+        art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerStatus controllerStatus = (art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerStatus) controller.getDeviceStatus();
+        art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation controllerInformation = (art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation) controller.getDeviceInformation();
+        art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status subcontrollerStatus = controllerStatus.rtz32;
+        art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerRealtime subcontrollerRealtime = (art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerRealtime) device.getDeviceRealtime();
+        art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerConfiguration subcontrollerConfiguration = (art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerConfiguration) device.getDeviceConfiguration();
+        SVGElement emergency = getElement(&quot;Emergency&quot;);
+        SVGElement lock = getElement(&quot;Lock&quot;);
+        SVGElement run = getElement(&quot;Run&quot;);
+        SVGElement remote = getElement(&quot;Remote&quot;);
+        SVGElement background = getElement(&quot;Background&quot;);
+        SVGElement border = getElement(&quot;Border&quot;);
+        SVGElement ribbon = getElement(&quot;Ribbon&quot;);
+        SVGElement elapsed1 = getElement(&quot;Elapsed1&quot;);
+        SVGElement elapsed2 = getElement(&quot;Elapsed2&quot;);
+        setAttribute(emergency, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);
+        setAttribute(lock, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);
+        setAttribute(run, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);
+        setAttribute(remote, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);
+        setAttribute(emergency, &quot;fill&quot;, &quot;#804080&quot;, 999);
+        setAttribute(lock, &quot;fill&quot;, &quot;#804080&quot;, 999);
+        setAttribute(run, &quot;fill&quot;, &quot;#804080&quot;, 999);
+        setAttribute(remote, &quot;fill&quot;, &quot;#804080&quot;, 999);
+        setText(&quot;Text number&quot;, String.format(&quot;%04d&quot;, controllerInformation.number));
+        setText(&quot;Text information&quot;, &quot;&quot;);
+        setText(&quot;Text offset&quot;, &quot;&quot;);
+        setText(&quot;Text cycle&quot;, &quot;&quot;);
+        setText(&quot;Text elapsed&quot;, &quot;&quot;);
+        try
+        {
+            if (art.client.models.Shared.configuration.general.darkMap == true)
+            {
+                setAttribute(&quot;Text number&quot;, &quot;fill&quot;, &quot;#FFFFFF&quot;);
+                setAttribute(&quot;Text information&quot;, &quot;fill&quot;, &quot;#FFFFFF&quot;);
+                setAttribute(&quot;Text offset&quot;, &quot;fill&quot;, &quot;#FFFFFF&quot;);
+                setAttribute(&quot;Text cycle&quot;, &quot;fill&quot;, &quot;#FFFFFF&quot;);
+            } else
+            {
+                setAttribute(&quot;Text number&quot;, &quot;fill&quot;, &quot;#000000&quot;);
+                setAttribute(&quot;Text information&quot;, &quot;fill&quot;, &quot;#000000&quot;);
+                setAttribute(&quot;Text offset&quot;, &quot;fill&quot;, &quot;#000000&quot;);
+                setAttribute(&quot;Text cycle&quot;, &quot;fill&quot;, &quot;#000000&quot;);
+            }
+        } catch (Exception ex)
+        {
+        }
+        setAttribute(elapsed1, &quot;display&quot;, &quot;none&quot;);
+        setAttribute(elapsed2, &quot;display&quot;, &quot;none&quot;);
+        /* setAttribute(border, &quot;stroke&quot;, &quot;#800080&quot;);*/ setAttribute(border, &quot;display&quot;, &quot;inline&quot;);
+        setAttribute(border, &quot;stroke-width&quot;, 6.5);
+        setAttribute(border, &quot;stroke-opacity&quot;, 0.75);
+        setAttribute(ribbon, &quot;stroke-opacity&quot;, 0.50);
+        setAttribute(ribbon, &quot;stroke&quot;, &quot;#FF80FF&quot;);
+        setAttribute(background, &quot;fill&quot;, &quot;#FF80FF&quot;);
+        if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_NON_CENTRALIZED)
+        {
+            setAttribute(border, &quot;stroke&quot;, &quot;#FFFFFF&quot;, 999);
+            setAttribute(background, &quot;fill&quot;, &quot;#FFFFFF&quot;, 999);
+            setAttribute(ribbon, &quot;stroke&quot;, &quot;#FFFFFF&quot;, 999);
+        } else
+        {
+            setAttribute(border, &quot;display&quot;, &quot;none&quot;, 999);
+            if (controllerStatus.rtz32.centralized.centralized == false)
+            {
+                setAttribute(border, &quot;fill&quot;, &quot;#808080&quot;, 999);
+                setAttribute(background, &quot;fill&quot;, &quot;#808080&quot;, 999);
+                setAttribute(ribbon, &quot;stroke&quot;, &quot;#808080&quot;, 999);
+                 setAttribute(background, &quot;display&quot;, &quot;inline&quot;);
+            } else
+            {
+                boolean semiactuated = controllerStatus.rtz32.general.semiactuated;
+                boolean offline = false;
+                if (device.getAlarm(&quot;alarm_controller_offline&quot;) &gt; 0 || device.getAlarm(&quot;alarm_offline&quot;) &gt; 0)
+                {
+                    offline = true;
+                    setAttribute(background, &quot;display&quot;, even ? &quot;inline&quot; : &quot;none&quot;, 999);
+                }
+                if (controllerStatus.rtz32.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_COMPUTER)
+                {
+                    setAttribute(background, &quot;fill&quot;, &quot;#00FF00&quot;, 999);
+                    setAttribute(ribbon, &quot;stroke&quot;, &quot;#00FF00&quot;, 999);
+                    if (offline == true)
+                    {
+                        setAttribute(background, &quot;display&quot;, even || semiactuated ? &quot;none&quot; : &quot;inline&quot;, 999);
+                    }
+                } else if (controllerStatus.rtz32.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_LOCAL)
+                {
+                    setAttribute(background, &quot;fill&quot;, &quot;#FF0000&quot;, 999);
+                    setAttribute(ribbon, &quot;stroke&quot;, &quot;#FF0000&quot;, 999);
+                    if (offline == true)
+                    {
+                        setAttribute(background, &quot;display&quot;, even ? &quot;none&quot; : &quot;inline&quot;, 999);
+                    }
+                }
+                if (device.getAlarm(&quot;alarm_controller_offline&quot;) &lt;= 0 &amp;&amp; device.getAlarm(&quot;alarm_offline&quot;) &lt;= 0)
+                {
+                    if (art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller.class.cast(device).getDeviceAlarms().rtz32.flashing.getServerityAlarm() &gt; 0)
+                    {
+                        setAttribute(background, &quot;fill&quot;, &quot;#FFFF00&quot;, 999);
+                        setAttribute(ribbon, &quot;stroke&quot;, &quot;#FFFF00&quot;, 999);
+                        setAttribute(background, &quot;display&quot;, even ? &quot;inline&quot; : &quot;none&quot;, 999);
+                    }
+                }
+            }
+        }
+        if (subcontrollerStatus.forcings != null &amp;&amp; (subcontrollerStatus.forcings.centralized != null || subcontrollerStatus.forcings.colorsMode != null || subcontrollerStatus.forcings.computerMode != null || subcontrollerStatus.forcings.control != null || subcontrollerStatus.forcings.plan != null))
+        {
+            setAttribute(lock, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);
+            setAttribute(lock, &quot;fill&quot;, &quot;#FF0000&quot;, 999);
+        } else
+        {
+            setAttribute(lock, &quot;fill-opacity&quot;, &quot;0.15&quot;, 999);
+            setAttribute(lock, &quot;fill&quot;, &quot;#000000&quot;, 999);
+        }
+        if (subcontrollerStatus.general.emergency == true)
+        {
+            setAttribute(emergency, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);
+        } else if (subcontrollerStatus.general.emergency == false)
+        {
+            setAttribute(emergency, &quot;fill-opacity&quot;, &quot;0.15&quot;, 999);
+            setAttribute(emergency, &quot;fill&quot;, &quot;#000000&quot;, 999);
+        }
+        setAttribute(&quot;Text information&quot;, &quot;display&quot;, &quot;iniline&quot;, 999);
+        setAttribute(&quot;Text offset&quot;, &quot;display&quot;, &quot;iniline&quot;, 999);
+        setAttribute(&quot;Text cycle&quot;, &quot;display&quot;, &quot;iniline&quot;, 999);
+        if ((subcontrollerStatus.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_COMPUTER))
+        {
+            setAttribute(remote, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);
+            setAttribute(remote, &quot;fill&quot;, &quot;#0000FF&quot;, 999);
+        } else
+        {
+            setAttribute(remote, &quot;fill-opacity&quot;, &quot;0.15&quot;, 999);
+            setAttribute(remote, &quot;fill&quot;, &quot;#000000&quot;, 999);
+        }
+        if (subcontrollerRealtime != null &amp;&amp; subcontrollerRealtime.rtz32 != null &amp;&amp; subcontrollerRealtime.rtz32.junctionRealtime == true)
+        {
+            setAttribute(run, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);
+            setAttribute(run, &quot;fill&quot;, &quot;#0000FF&quot;, 999);
+        } else
+        {
+            setAttribute(run, &quot;fill-opacity&quot;, &quot;0.15&quot;, 999);
+            setAttribute(run, &quot;fill&quot;, &quot;#000000&quot;, 999);
+        }
+        double strokeopacity = Math.pow(2, controller.getDeviceAlarms().getServerityAlarm()) / 32;
+        /* if (controller.getDeviceAlarms().getServerityAlarm() &gt; 0)         {             setAttribute(border, &quot;display&quot;, &quot;inline&quot;);             setAttribute(border, &quot;stroke&quot;, &quot;#FF0000&quot;);             setAttribute(border, &quot;stroke-opacity&quot;, strokeopacity);             setAttribute(border, &quot;stroke-width&quot;, 6.5 + (6.5 * strokeopacity));         } else         {             setAttribute(border, &quot;stroke&quot;, &quot;#808080&quot;);             setAttribute(border, &quot;display&quot;, &quot;inline&quot;);             setAttribute(border, &quot;stroke-width&quot;, 6.5);             setAttribute(border, &quot;stroke-opacity&quot;, 1.0);         }*/ switch (subcontrollerStatus.general.state)
+        {
+            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_UNKNOWN:
+                /*setAttribute(background, &quot;fill&quot;, &quot;#808080&quot;);                 setAttribute(ribbon, &quot;stroke&quot;, &quot;#808080&quot;);*/ setAttribute(elapsed2, &quot;fill&quot;, &quot;#808080&quot;);
+                setText(&quot;Text information&quot;, &quot;OFF&quot;);
+                return;
+            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_FLASHING:
+                setAttribute(&quot;Text information&quot;, &quot;display&quot;, &quot;none&quot;, 999);
+                setAttribute(&quot;Text offset&quot;, &quot;display&quot;, &quot;none&quot;, 999);
+                setAttribute(&quot;Text cycle&quot;, &quot;display&quot;, &quot;none&quot;, 999);
+                if (even)
+                {
+                    /*   setAttribute(background, &quot;fill&quot;, &quot;#FFFF00&quot;);                     setAttribute(ribbon, &quot;stroke&quot;, &quot;#FFFF00&quot;);*/ setAttribute(elapsed2, &quot;fill&quot;, &quot;#FFFF00&quot;);
+                } else
+                {
+                    /*        setAttribute(background, &quot;fill&quot;, &quot;#808000&quot;);                     setAttribute(ribbon, &quot;stroke&quot;, &quot;#808000&quot;);*/ setAttribute(elapsed2, &quot;fill&quot;, &quot;#808000&quot;);
+                }
+                setText(&quot;Text information&quot;, &quot;Y^&quot;);
+                break;
+            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_STARTUP:
+                if (subcontrollerStatus.general.emergency == true)
+                {
+                    /*      setAttribute(background, &quot;fill&quot;, even ? &quot;#FF8000&quot; : &quot;#804000&quot;);                     setAttribute(ribbon, &quot;stroke&quot;, even ? &quot;#FF8000&quot; : &quot;#804000&quot;);*/ setAttribute(elapsed2, &quot;fill&quot;, even ? &quot;#FF8000&quot; : &quot;#804000&quot;);
+                } else if (subcontrollerStatus.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_LOCAL)
+                {
+                    /*     setAttribute(background, &quot;fill&quot;, even ? &quot;#008000&quot; : &quot;#004000&quot;);                     setAttribute(ribbon, &quot;stroke&quot;, even ?&quot;#008000&quot; : &quot;#004000&quot;);*/ setAttribute(elapsed2, &quot;fill&quot;, even ? &quot;#008000&quot; : &quot;#004000&quot;);
+                } else
+                {
+                    /*    setAttribute(background, &quot;fill&quot;, even ? &quot;#00FF00&quot; : &quot;#008000&quot;);                     setAttribute(ribbon, &quot;stroke&quot;, even ? &quot;#00FF00&quot; : &quot;#008000&quot;);*/ setAttribute(elapsed2, &quot;fill&quot;, even ? &quot;#00FF00&quot; : &quot;#008000&quot;);
+                }
+                break;
+            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_COLORS:
+                if (subcontrollerStatus.general.emergency == true)
+                {
+                    /*     setAttribute(background, &quot;fill&quot;, &quot;#FF8000&quot;); */ setAttribute(ribbon, &quot;stroke&quot;, &quot;#FF8000&quot;);
+                    setAttribute(elapsed2, &quot;fill&quot;, &quot;#FF8000&quot;);
+                } else if (subcontrollerStatus.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_LOCAL)
+                {
+                    /*   setAttribute(background, &quot;fill&quot;, &quot;#008000&quot;);                     setAttribute(ribbon, &quot;stroke&quot;, &quot;#008000&quot;);*/ setAttribute(elapsed2, &quot;fill&quot;, &quot;#008000&quot;);
+                } else
+                {
+                    /*      setAttribute(background, &quot;fill&quot;, &quot;#00FF00&quot;);                      setAttribute(ribbon, &quot;stroke&quot;, &quot;#00FF00&quot;);*/ setAttribute(elapsed2, &quot;fill&quot;, &quot;#00FF00&quot;);
+                }
+                break;
+        }
+        art.library.model.devices.colors.controller.RTZ32.configuration.RTZ32_Configuration_Program plan = null;
+        if (subcontrollerStatus.plan != null &amp;&amp; subcontrollerStatus.plan.number &gt; 0)
+        {
+            try
+            {
+                plan = subcontrollerConfiguration.rtz32.getProgram(subcontrollerStatus.plan.number);
+            } catch (Exception e)
+            {
+            }
+        }
+        if (plan != null)
+        {
+            String information = &quot;&quot;;
+            if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED)
+            {
+                information = &quot;C&quot;;
+            } else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_MASTER)
+            {
+                information = &quot;M&quot;;
+            } else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_MASTER_SLAVE)
+            {
+                information = &quot;M-E&quot;;
+            } else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_SLAVE)
+            {
+                information = &quot;E&quot;;
+            } else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_SLAVE_MASTER)
+            {
+                information = &quot;E-M&quot;;
+            } else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_TROLLEY)
+            {
+                information = &quot;CTw&quot;;
+            } else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_NON_CENTRALIZED)
+            {
+                information = &quot;NC&quot;;
+            } else
+            {
+                information = &quot;?&quot;;
+            }
+            information = information + plan.number;
+            switch (subcontrollerStatus.general.planMode)
+            {
+                case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_DELAYED_ORDERS:
+                    information = information + &quot;d&quot;;
+                    break;
+                case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_DYNAMIC_SELECTION:
+                    information = information + &quot;ds&quot;;
+                    break;
+                case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_FORCED:
+                    information = information + &quot;f&quot;;
+                    break;
+                case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_ONLINE_ORDERS:
+                    information = information + &quot;o&quot;;
+                    break;
+                case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_TIMETABLE:
+                    information = information + &quot;t&quot;;
+                    break;
+            }
+            setText(&quot;Text information&quot;, information);
+            if (plan.offset &gt; 0)
+            {
+                setText(&quot;Text offset&quot;, &quot;&quot; + plan.offset);
+            } else
+            {
+                setText(&quot;Text offset&quot;, &quot;&quot;);
+            }
+            setText(&quot;Text cycle&quot;, &quot;&quot; + plan.cycle);
+            if (subcontrollerRealtime != null)
+            {
+                try
+                {
+                    String text = subcontrollerRealtime.rtz32.phase.phaseNumber + &quot;:&quot; + subcontrollerRealtime.rtz32.counters.cycle;
+                    setText(&quot;Text elapsed&quot;, text);
+                    setAttribute(elapsed1, &quot;display&quot;, &quot;inline&quot;);
+                    setAttribute(elapsed2, &quot;display&quot;, &quot;inline&quot;);
+                    int elapsedWidth = getAttributeInteger(elapsed1, &quot;width&quot;) - 2;
+                    float ratio = 1;
+                    setAttribute(elapsed2, &quot;width&quot;, (elapsedWidth * Math.min(1.0f, ratio)));
+                    update(elapsed2);
+                } catch (Exception ex)
+                {
+                }
+            }
+            java.awt.Color bckColor = java.awt.Color.decode(background.getStyleAbsolute(&quot;fill&quot;).getStringValue());
+            java.awt.Color darkerColor = bckColor.darker();
+            String darkHex = String.format(&quot;#%02x%02x%02x&quot;, darkerColor.darker().getRed(), darkerColor.darker().getGreen(), darkerColor.darker().getBlue());
+            setAttribute(&quot;Text information&quot;, &quot;fill&quot;, darkHex, 999);
+            setAttribute(&quot;Text offset&quot;, &quot;fill&quot;, darkHex, 999);
+            setAttribute(&quot;Text cycle&quot;, &quot;fill&quot;, darkHex, 999);
+            setAttribute(emergency, &quot;fill&quot;, darkHex, 999);
+            setAttribute(lock, &quot;fill&quot;, darkHex, 999);
+            setAttribute(run, &quot;fill&quot;, darkHex, 999);
+            setAttribute(remote, &quot;fill&quot;, darkHex, 999);
+        }
+    }
+
+    public void paintNoStatusAvailable()
+    {
+        art.library.model.devices.colors.controller.M.M_Controller controller = (art.library.model.devices.colors.controller.M.M_Controller) getDevice();
+        SVGElement thunderbolt = getElement(&quot;Thunderbolt&quot;);
+        SVGElement emergency = getElement(&quot;Emergency&quot;);
+        SVGElement lock = getElement(&quot;Lock&quot;);
+        SVGElement calendar = getElement(&quot;Calendar&quot;);
+        SVGElement run = getElement(&quot;Run&quot;);
+        SVGElement remote = getElement(&quot;Remote&quot;);
+        SVGElement background = getElement(&quot;Background&quot;);
+        SVGElement border = getElement(&quot;Border&quot;);
+        SVGElement ribbon = getElement(&quot;Ribbon&quot;);
+        SVGElement elapsed1 = getElement(&quot;Elapsed1&quot;);
+        SVGElement elapsed2 = getElement(&quot;Elapsed2&quot;);
+        setAttribute(thunderbolt, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);
+        setAttribute(emergency, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);
+        setAttribute(lock, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);
+        setAttribute(calendar, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);
+        setAttribute(run, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);
+        setAttribute(remote, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);
+        setAttribute(thunderbolt, &quot;fill&quot;, &quot;#804080&quot;, 999);
+        setAttribute(emergency, &quot;fill&quot;, &quot;#804080&quot;, 999);
+        setAttribute(lock, &quot;fill&quot;, &quot;#804080&quot;, 999);
+        setAttribute(calendar, &quot;fill&quot;, &quot;#804080&quot;, 999);
+        setAttribute(run, &quot;fill&quot;, &quot;#804080&quot;, 999);
+        setAttribute(remote, &quot;fill&quot;, &quot;#804080&quot;, 999);
+        setText(&quot;Text number&quot;, String.format(&quot;%04d&quot;, controller.getDeviceInformation().number));
+        setText(&quot;Text information&quot;, &quot;&quot;);
+        setText(&quot;Text offset&quot;, &quot;&quot;);
+        setText(&quot;Text cycle&quot;, &quot;&quot;);
+        setText(&quot;Text elapsed&quot;, &quot;&quot;);
+        setAttribute(elapsed1, &quot;display&quot;, &quot;none&quot;);
+        setAttribute(elapsed2, &quot;display&quot;, &quot;none&quot;);
+        setAttribute(ribbon, &quot;stroke-opacity&quot;, 0.50);
+        setAttribute(background, &quot;fill&quot;, &quot;#FF00FF&quot;);
+        setAttribute(ribbon, &quot;stroke&quot;, &quot;#FF00FF&quot;);
+        setAttribute(border, &quot;stroke&quot;, &quot;#FF00FF&quot;);
+        setAttribute(border, &quot;display&quot;, &quot;inline&quot;);
+        setAttribute(border, &quot;stroke-width&quot;, 6.5);
+        setAttribute(border, &quot;stroke-opacity&quot;, 1.0);
+    }
+
+    public void commands()
+    {
+        final String colorNoCommandsBorder = &quot;#00007C&quot;;
+        final String colorNoCommandsBackground = &quot;#7C7CFA&quot;;
+        final String colorCommandsBorder = &quot;#007C00&quot;;
+        final String colorCommandsBackground = &quot;#7CFA7C&quot;;
+        art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller controller = (art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller) getDevice();
+        art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation controllerInformation = (art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation) controller.getDeviceInformation();
+        SVGElement background = getElement(&quot;Background&quot;);
+        SVGElement border = getElement(&quot;Border&quot;);
+        SVGElement ribbon = getElement(&quot;Ribbon&quot;);
+        SVGElement emergency = getElement(&quot;Emergency&quot;);
+        SVGElement lock = getElement(&quot;Lock&quot;);
+        SVGElement run = getElement(&quot;Run&quot;);
+        SVGElement remote = getElement(&quot;Remote&quot;);
+        setAttribute(border, &quot;stroke&quot;, !getDeviceCommands().isEmpty() ? colorCommandsBorder : colorNoCommandsBorder);
+        setAttribute(border, &quot;display&quot;, &quot;inline&quot;);
+        setAttribute(border, &quot;stroke-width&quot;, 6.5);
+        setAttribute(border, &quot;stroke-opacity&quot;, 0.75);
+        setAttribute(ribbon, &quot;stroke-opacity&quot;, 0.50);
+        setAttribute(ribbon, &quot;stroke&quot;, !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground);
+        setAttribute(background, &quot;fill&quot;, !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground);
+        setAttribute(emergency, &quot;fill&quot;, !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999);
+        setAttribute(lock, &quot;fill&quot;, !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999);
+        setAttribute(run, &quot;fill&quot;, !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999);
+        setAttribute(remote, &quot;fill&quot;, !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999);
+        setText(&quot;Text number&quot;, String.format(&quot;%04d&quot;, controllerInformation.number));
+        setAttribute(&quot;Text information&quot;, &quot;display&quot;, &quot;none&quot;, 999);
+        setAttribute(&quot;Text offset&quot;, &quot;display&quot;, &quot;none&quot;, 999);
+        setAttribute(&quot;Text cycle&quot;, &quot;display&quot;, &quot;none&quot;, 999);
+        setAttribute(&quot;Text elapsed&quot;, &quot;display&quot;, &quot;none&quot;, 999);
+    }">
     <rdf:RDF>
       <cc:Work
          rdf:about="">

--
Gitblit v1.10.0