Alejandro Acuña
2024-12-18 44b33e24b644459038edd956cfce7345ce3236c1
no message
6 files added
29 files modified
4431 ■■■■■ changed files
servers/gost-access-server-git.rar patch | view | raw | blame | history
servers/macroserver.rar patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/17.5/Controller.svg 399 ●●●●● patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/17.5/Thumbs.db patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/17/Controller.svg 399 ●●●●● patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/17/Thumbs.db patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/18.5/Controller.svg 399 ●●●●● patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/18.5/Thumbs.db patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/18/Controller.svg 399 ●●●●● patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/18/Thumbs.db patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/19.5/Controller.svg 399 ●●●●● patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/19.5/Thumbs.db patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/19/Controller.svg 399 ●●●●● patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/19/Thumbs.db patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/20.5/Controller.svg 399 ●●●●● patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/20.5/Thumbs.db patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/20/Controller.svg 399 ●●●●● patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/20/Thumbs.db patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/21.5/Controller.svg 399 ●●●●● patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/21.5/Thumbs.db patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/21/Controller.svg 399 ●●●●● patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/21/Thumbs.db patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/22/Controller.svg 181 ●●●● patch | view | raw | blame | history
servers/rtzserver/data/art.servers.rtzserver/symbols/22/Thumbs.db patch | view | raw | blame | history
svgDevicesTest/build/built-jar.properties 2 ●●● patch | view | raw | blame | history
svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest.class patch | view | raw | blame | history
svgDevicesTest/build/classes/AccessEnforcement/mockers/AccessEnforcementMockerMap.class patch | view | raw | blame | history
svgDevicesTest/build/classes/Rtz/RtzMapComplex.class patch | view | raw | blame | history
svgDevicesTest/build/classes/Rtz/mockers/RtzMockerMapComplex.class patch | view | raw | blame | history
svgDevicesTest/build/classes/svgdevicestest/mock/DeviceMocker.class patch | view | raw | blame | history
svgDevicesTest/src/AAAMain/SvgDeviceStatusTest.java 2 ●●● patch | view | raw | blame | history
svgDevicesTest/src/AccessEnforcement/mockers/AccessEnforcementMockerMap.java 20 ●●●● patch | view | raw | blame | history
svgDevicesTest/src/Rtz/RtzMapComplex.java 182 ●●●● patch | view | raw | blame | history
svgDevicesTest/src/Rtz/mockers/RtzMockerMapComplex.java 50 ●●●● patch | view | raw | blame | history
svgDevicesTest/src/svgdevicestest/mock/DeviceMocker.java 4 ●●●● patch | view | raw | blame | history
servers/gost-access-server-git.rar
Binary files differ
servers/macroserver.rar
Binary files differ
servers/rtzserver/data/art.servers.rtzserver/symbols/17.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="">
servers/rtzserver/data/art.servers.rtzserver/symbols/17.5/Thumbs.db
Binary files differ
servers/rtzserver/data/art.servers.rtzserver/symbols/17/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="">
servers/rtzserver/data/art.servers.rtzserver/symbols/17/Thumbs.db
Binary files differ
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="">
servers/rtzserver/data/art.servers.rtzserver/symbols/18.5/Thumbs.db
Binary files differ
servers/rtzserver/data/art.servers.rtzserver/symbols/18/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="">
servers/rtzserver/data/art.servers.rtzserver/symbols/18/Thumbs.db
Binary files differ
servers/rtzserver/data/art.servers.rtzserver/symbols/19.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="">
servers/rtzserver/data/art.servers.rtzserver/symbols/19.5/Thumbs.db
Binary files differ
servers/rtzserver/data/art.servers.rtzserver/symbols/19/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="">
servers/rtzserver/data/art.servers.rtzserver/symbols/19/Thumbs.db
Binary files differ
servers/rtzserver/data/art.servers.rtzserver/symbols/20.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="">
servers/rtzserver/data/art.servers.rtzserver/symbols/20.5/Thumbs.db
Binary files differ
servers/rtzserver/data/art.servers.rtzserver/symbols/20/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="">
servers/rtzserver/data/art.servers.rtzserver/symbols/20/Thumbs.db
Binary files differ
servers/rtzserver/data/art.servers.rtzserver/symbols/21.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="">
servers/rtzserver/data/art.servers.rtzserver/symbols/21.5/Thumbs.db
Binary files differ
servers/rtzserver/data/art.servers.rtzserver/symbols/21/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="">
servers/rtzserver/data/art.servers.rtzserver/symbols/21/Thumbs.db
Binary files differ
servers/rtzserver/data/art.servers.rtzserver/symbols/22/Controller.svg
@@ -23,9 +23,9 @@
     borderopacity="1.0"
     inkscape:pageopacity="0.0"
     inkscape:pageshadow="2"
     inkscape:zoom="2.8"
     inkscape:cx="-18.366845"
     inkscape:cy="133.59352"
     inkscape:zoom="3.959798"
     inkscape:cx="-57.110407"
     inkscape:cy="95.513044"
     inkscape:document-units="mm"
     inkscape:current-layer="g4133"
     showgrid="false"
@@ -43,7 +43,7 @@
     inkscape:deskcolor="#d1d1d1" />
  <metadata
     id="Metadata"
     art.script="    public void status()
     art.script="public void status()
    {
        try
        {
@@ -54,19 +54,17 @@
    }
    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;);
@@ -89,7 +87,6 @@
        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)
@@ -108,85 +105,66 @@
        } 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&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;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);
            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);
            }
            else
                 setAttribute(background, &quot;display&quot;, &quot;inline&quot;);
            } else
            {
                boolean semiactuated = controllerStatus.rtz32.general.semiactuated ;
                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)
                    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)
                } 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);
                    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(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))
        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);
@@ -195,7 +173,7 @@
            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)
        if (subcontrollerStatus.general.emergency == true)
        {
            setAttribute(emergency, &quot;fill-opacity&quot;, &quot;1.0&quot;, 999);
        } else if (subcontrollerStatus.general.emergency == false)
@@ -203,18 +181,14 @@
            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
        } else
        {
            setAttribute(remote, &quot;fill-opacity&quot;, &quot;0.15&quot;, 999);
            setAttribute(remote, &quot;fill&quot;, &quot;#000000&quot;, 999);
@@ -228,87 +202,49 @@
            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)
        /* 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;);
                /*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);
                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;);
                    /*   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;);
                    /*        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;);
                    /*      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;);
                    /*     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;);
                    /*    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(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)
                } 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;);
                    /*   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;);
                    /*      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;
        }
@@ -322,31 +258,35 @@
            {
            }
        }
        if (plan != null)
        {
            String information = &quot;&quot;;
             if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED)
            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)
            } 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)
            } 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)
            } 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)
            } 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)
            } 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)
            } else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_NON_CENTRALIZED)
            {
                information = &quot;NC&quot;;
             else
            } 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:
@@ -365,7 +305,6 @@
                    information = information + &quot;t&quot;;
                    break;
            }
            setText(&quot;Text information&quot;, information);
            if (plan.offset &gt; 0)
            {
@@ -375,13 +314,11 @@
                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;);
@@ -393,15 +330,12 @@
                {
                }
            }
            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);
@@ -455,22 +389,17 @@
    {
        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);
@@ -478,20 +407,16 @@
        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="">
servers/rtzserver/data/art.servers.rtzserver/symbols/22/Thumbs.db
Binary files differ
svgDevicesTest/build/built-jar.properties
@@ -1,4 +1,4 @@
#Mon, 14 Oct 2024 14:28:16 +0200
#Fri, 29 Nov 2024 11:24:46 +0100
D\:\\LocalBackup\\svgDevicesTest=
svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest.class
Binary files differ
svgDevicesTest/build/classes/AccessEnforcement/mockers/AccessEnforcementMockerMap.class
Binary files differ
svgDevicesTest/build/classes/Rtz/RtzMapComplex.class
Binary files differ
svgDevicesTest/build/classes/Rtz/mockers/RtzMockerMapComplex.class
Binary files differ
svgDevicesTest/build/classes/svgdevicestest/mock/DeviceMocker.class
Binary files differ
svgDevicesTest/src/AAAMain/SvgDeviceStatusTest.java
@@ -54,7 +54,7 @@
public class SvgDeviceStatusTest
{
    
    private static final SvgMocker SELECTED_MOCKER = SvgMocker.ParkingUrbiotica;
    private static final SvgMocker SELECTED_MOCKER = SvgMocker.RTZMapComplex;
    
    public static String mapPath;
    
svgDevicesTest/src/AccessEnforcement/mockers/AccessEnforcementMockerMap.java
@@ -1,9 +1,15 @@
package AccessEnforcement.mockers;
import AccessEnforcement.AccessEnforcementMap;
import Mocker.IDeviceMocker;
import SpeedEnforcement.SpeedEnforcementMap;
import art.library.interop.serialization.Serialization;
import art.library.interop.serialization.SerializationException;
import art.library.model.devices.Device;
import art.library.model.devices.gost.access.AccessEnforcement;
import devices.mockers.LocalFileDeviceMocker;
import java.io.File;
import java.util.logging.Level;
import java.util.logging.Logger;
import svgdevicestest.mock.*;
public class AccessEnforcementMockerMap extends DeviceMocker implements IDeviceMocker
@@ -22,13 +28,19 @@
    @Override
    public void updateDevice(boolean active)
    {
        try
        {
            device = (Device)Serialization.deserialize(AccessEnforcement.class, new File("C:\\Users\\Konstantin\\Desktop\\zpr14.txt"));
        } catch (SerializationException ex)
        {
            Logger.getLogger(AccessEnforcementMockerMap.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    @Override
    public String getFilePath()
    {
        return "C:\\Users\\Konstantin\\Documents\\LocalBackup\\Obras\\Oviedo\\gost-access-server\\data\\art.servers.gost-access-server\\symbols\\18\\Access.svg";
        return "D:\\LocalBackup\\servers\\gost-access-server-git\\data\\art.servers.gost-access-server\\symbols\\20\\Access.svg";
    }
    @Override
@@ -40,6 +52,6 @@
    @Override
    public Class getScriptClass()
    {
        return SpeedEnforcementMap.class;
        return AccessEnforcementMap.class;
    }
}
svgDevicesTest/src/Rtz/RtzMapComplex.java
@@ -17,30 +17,29 @@
        super(device, commands, diagram);
    }
        public void status()
    public void status()
    {
        try
        {
            statusSubcontroller();
        } catch (Exception e)
        }
        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("Emergency");
        SVGElement lock = getElement("Lock");
        SVGElement run = getElement("Run");
@@ -63,7 +62,6 @@
        setText("Text offset", "");
        setText("Text cycle", "");
        setText("Text elapsed", "");
        try
        {
            if (art.client.models.Shared.configuration.general.darkMap == true)
@@ -82,85 +80,66 @@
        } catch (Exception ex)
        {
        }
        setAttribute(elapsed1, "display", "none");
        setAttribute(elapsed2, "display", "none");
        /* setAttribute(border, "stroke", "#800080");*/
        setAttribute(border, "display", "inline");
        /* setAttribute(border, "stroke", "#800080");*/ setAttribute(border, "display", "inline");
        setAttribute(border, "stroke-width", 6.5);
        setAttribute(border, "stroke-opacity", 0.75);
        setAttribute(ribbon, "stroke-opacity", 0.50);
        setAttribute(ribbon, "stroke", "#FF80FF");
        setAttribute(background, "fill", "#FF80FF");
        if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_NON_CENTRALIZED)
        {
            setAttribute(border, "stroke", "#FFFFFF",999);
            setAttribute(background, "fill", "#FFFFFF",999);
            setAttribute(ribbon, "stroke", "#FFFFFF",999);
        }
        else
            setAttribute(border, "stroke", "#FFFFFF", 999);
            setAttribute(background, "fill", "#FFFFFF", 999);
            setAttribute(ribbon, "stroke", "#FFFFFF", 999);
        } else
        {
              setAttribute(border, "display", "none", 999);
            setAttribute(border, "display", "none", 999);
            if (controllerStatus.rtz32.centralized.centralized == false)
            {
                setAttribute(border, "fill", "#808080", 999);
                setAttribute(background, "fill", "#808080", 999);
                setAttribute(ribbon, "stroke", "#808080", 999);
            }
            else
                 setAttribute(background, "display", "inline");
            } else
            {
                boolean semiactuated = controllerStatus.rtz32.general.semiactuated ;
                boolean semiactuated = controllerStatus.rtz32.general.semiactuated;
                boolean offline = false;
                if (device.getAlarm("alarm_controller_offline") > 0 || device.getAlarm("alarm_offline") > 0)
                {
                    offline = true;
                    setAttribute(background, "display", even ? "inline" : "none", 999);
                }
                if (controllerStatus.rtz32.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_COMPUTER)
                {
                    setAttribute(background, "fill", "#00FF00", 999);
                    setAttribute(ribbon, "stroke", "#00FF00", 999);
                    if(offline == true)
                    if (offline == true)
                    {
                        setAttribute(background, "display", even || semiactuated ? "none" : "inline", 999);
                    }
                }
                else if (controllerStatus.rtz32.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_LOCAL)
                } else if (controllerStatus.rtz32.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_LOCAL)
                {
                    setAttribute(background, "fill", "#FF0000", 999);
                         setAttribute(ribbon, "stroke", "#FF0000", 999);
                    setAttribute(ribbon, "stroke", "#FF0000", 999);
                    if (offline == true)
                    {
                        setAttribute(background, "display", even ? "none" : "inline", 999);
                    }
                }
                if (device.getAlarm("alarm_controller_offline") <= 0 && device.getAlarm("alarm_offline") <= 0)
                {
                    if (art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller.class.cast(device).getDeviceAlarms().rtz32.flashing.getServerityAlarm() > 0)
                    {
                        setAttribute(background, "fill", "#FFFF00", 999);
                         setAttribute(ribbon, "stroke", "#FFFF00", 999);
                        setAttribute(ribbon, "stroke", "#FFFF00", 999);
                        setAttribute(background, "display", even ? "inline" : "none", 999);
                    }
                }
            }
        }
        if (subcontrollerStatus.forcings != null
                && (subcontrollerStatus.forcings.centralized != null
                || subcontrollerStatus.forcings.colorsMode != null
                || subcontrollerStatus.forcings.computerMode != null
                || subcontrollerStatus.forcings.control != null
                || subcontrollerStatus.forcings.plan != null))
        if (subcontrollerStatus.forcings != null && (subcontrollerStatus.forcings.centralized != null || subcontrollerStatus.forcings.colorsMode != null || subcontrollerStatus.forcings.computerMode != null || subcontrollerStatus.forcings.control != null || subcontrollerStatus.forcings.plan != null))
        {
            setAttribute(lock, "fill-opacity", "1.0", 999);
            setAttribute(lock, "fill", "#FF0000", 999);
@@ -169,7 +148,7 @@
            setAttribute(lock, "fill-opacity", "0.15", 999);
            setAttribute(lock, "fill", "#000000", 999);
        }
         if (subcontrollerStatus.general.emergency == true)
        if (subcontrollerStatus.general.emergency == true)
        {
            setAttribute(emergency, "fill-opacity", "1.0", 999);
        } else if (subcontrollerStatus.general.emergency == false)
@@ -177,18 +156,14 @@
            setAttribute(emergency, "fill-opacity", "0.15", 999);
            setAttribute(emergency, "fill", "#000000", 999);
        }
        setAttribute("Text information", "display", "iniline", 999);
        setAttribute("Text offset", "display", "iniline", 999);
        setAttribute("Text cycle", "display", "iniline", 999);
        if ((subcontrollerStatus.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_COMPUTER))
        {
            setAttribute(remote, "fill-opacity", "1.0", 999);
            setAttribute(remote, "fill", "#0000FF", 999);
        } else
        } else
        {
            setAttribute(remote, "fill-opacity", "0.15", 999);
            setAttribute(remote, "fill", "#000000", 999);
@@ -202,87 +177,49 @@
            setAttribute(run, "fill-opacity", "0.15", 999);
            setAttribute(run, "fill", "#000000", 999);
        }
        double strokeopacity = Math.pow(2, controller.getDeviceAlarms().getServerityAlarm()) / 32;
       /* if (controller.getDeviceAlarms().getServerityAlarm() > 0)
        {
            setAttribute(border, "display", "inline");
            setAttribute(border, "stroke", "#FF0000");
            setAttribute(border, "stroke-opacity", strokeopacity);
            setAttribute(border, "stroke-width", 6.5 + (6.5 * strokeopacity));
        } else
        {
            setAttribute(border, "stroke", "#808080");
            setAttribute(border, "display", "inline");
            setAttribute(border, "stroke-width", 6.5);
            setAttribute(border, "stroke-opacity", 1.0);
        }*/
        switch (subcontrollerStatus.general.state)
        /* if (controller.getDeviceAlarms().getServerityAlarm() > 0)         {             setAttribute(border, "display", "inline");             setAttribute(border, "stroke", "#FF0000");             setAttribute(border, "stroke-opacity", strokeopacity);             setAttribute(border, "stroke-width", 6.5 + (6.5 * strokeopacity));         } else         {             setAttribute(border, "stroke", "#808080");             setAttribute(border, "display", "inline");             setAttribute(border, "stroke-width", 6.5);             setAttribute(border, "stroke-opacity", 1.0);         }*/ switch (subcontrollerStatus.general.state)
        {
            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_UNKNOWN:
                /*setAttribute(background, "fill", "#808080");
                setAttribute(ribbon, "stroke", "#808080");*/
                setAttribute(elapsed2, "fill", "#808080");
                /*setAttribute(background, "fill", "#808080");                 setAttribute(ribbon, "stroke", "#808080");*/ setAttribute(elapsed2, "fill", "#808080");
                setText("Text information", "OFF");
                return;
            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_FLASHING:
                setAttribute("Text information", "display","none",999);
                setAttribute("Text offset", "display","none",999);
                setAttribute("Text cycle", "display","none",999);
                setAttribute("Text information", "display", "none", 999);
                setAttribute("Text offset", "display", "none", 999);
                setAttribute("Text cycle", "display", "none", 999);
                if (even)
                {
                 /*   setAttribute(background, "fill", "#FFFF00");
                    setAttribute(ribbon, "stroke", "#FFFF00");*/
                    setAttribute(elapsed2, "fill", "#FFFF00");
                    /*   setAttribute(background, "fill", "#FFFF00");                     setAttribute(ribbon, "stroke", "#FFFF00");*/ setAttribute(elapsed2, "fill", "#FFFF00");
                } else
                {
            /*        setAttribute(background, "fill", "#808000");
                    setAttribute(ribbon, "stroke", "#808000");*/
                    setAttribute(elapsed2, "fill", "#808000");
                    /*        setAttribute(background, "fill", "#808000");                     setAttribute(ribbon, "stroke", "#808000");*/ setAttribute(elapsed2, "fill", "#808000");
                }
                setText("Text information", "Y^");
                break;
            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_STARTUP:
                if (subcontrollerStatus.general.emergency == true)
                {
              /*      setAttribute(background, "fill", even ? "#FF8000" : "#804000");
                    setAttribute(ribbon, "stroke", even ? "#FF8000" : "#804000");*/
                    setAttribute(elapsed2, "fill", even ? "#FF8000" : "#804000");
                    /*      setAttribute(background, "fill", even ? "#FF8000" : "#804000");                     setAttribute(ribbon, "stroke", even ? "#FF8000" : "#804000");*/ setAttribute(elapsed2, "fill", even ? "#FF8000" : "#804000");
                } else if (subcontrollerStatus.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_LOCAL)
                {
               /*     setAttribute(background, "fill", even ? "#008000" : "#004000");
                    setAttribute(ribbon, "stroke", even ?"#008000" : "#004000");*/
                    setAttribute(elapsed2, "fill",even ? "#008000" : "#004000");
                    /*     setAttribute(background, "fill", even ? "#008000" : "#004000");                     setAttribute(ribbon, "stroke", even ?"#008000" : "#004000");*/ setAttribute(elapsed2, "fill", even ? "#008000" : "#004000");
                } else
                {
                /*    setAttribute(background, "fill", even ? "#00FF00" : "#008000");
                    setAttribute(ribbon, "stroke", even ? "#00FF00" : "#008000");*/
                    setAttribute(elapsed2, "fill", even ? "#00FF00" : "#008000");
                    /*    setAttribute(background, "fill", even ? "#00FF00" : "#008000");                     setAttribute(ribbon, "stroke", even ? "#00FF00" : "#008000");*/ setAttribute(elapsed2, "fill", even ? "#00FF00" : "#008000");
                }
                break;
            case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_COLORS:
                if (subcontrollerStatus.general.emergency == true)
                {
               /*     setAttribute(background, "fill", "#FF8000"); */
                    setAttribute(ribbon, "stroke", "#FF8000");
                    /*     setAttribute(background, "fill", "#FF8000"); */ setAttribute(ribbon, "stroke", "#FF8000");
                    setAttribute(elapsed2, "fill", "#FF8000");
                }
                else if (subcontrollerStatus.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_LOCAL)
                } else if (subcontrollerStatus.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_LOCAL)
                {
                 /*   setAttribute(background, "fill", "#008000");
                    setAttribute(ribbon, "stroke", "#008000");*/
                    setAttribute(elapsed2, "fill", "#008000");
                    /*   setAttribute(background, "fill", "#008000");                     setAttribute(ribbon, "stroke", "#008000");*/ setAttribute(elapsed2, "fill", "#008000");
                } else
                {
              /*      setAttribute(background, "fill", "#00FF00");
                    setAttribute(ribbon, "stroke", "#00FF00");*/
                    setAttribute(elapsed2, "fill", "#00FF00");
                    /*      setAttribute(background, "fill", "#00FF00");                      setAttribute(ribbon, "stroke", "#00FF00");*/ setAttribute(elapsed2, "fill", "#00FF00");
                }
                break;
        }
@@ -296,31 +233,35 @@
            {
            }
        }
        if (plan != null)
        {
            String information = "";
             if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED)
            if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED)
            {
                information = "C";
             else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_MASTER)
            } else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_MASTER)
            {
                information = "M";
             else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_MASTER_SLAVE)
            } else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_MASTER_SLAVE)
            {
                information = "M-E";
             else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_SLAVE)
            } else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_SLAVE)
            {
                information = "E";
             else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_SLAVE_MASTER)
            } else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_SLAVE_MASTER)
            {
                information = "E-M";
             else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_TROLLEY)
            } else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_TROLLEY)
            {
                information = "CTw";
             else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_NON_CENTRALIZED)
            } else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_NON_CENTRALIZED)
            {
                information = "NC";
             else
            } else
            {
                information = "?";
            }
            information = information + plan.number;
            switch (subcontrollerStatus.general.planMode)
            {
                case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_DELAYED_ORDERS:
@@ -339,7 +280,6 @@
                    information = information + "t";
                    break;
            }
            setText("Text information", information);
            if (plan.offset > 0)
            {
@@ -349,13 +289,11 @@
                setText("Text offset", "");
            }
            setText("Text cycle", "" + plan.cycle);
            if (subcontrollerRealtime != null)
            {
                try
                {
                    String text = subcontrollerRealtime.rtz32.phase.phaseNumber + ":" + subcontrollerRealtime.rtz32.counters.cycle;
                    setText("Text elapsed", text);
                    setAttribute(elapsed1, "display", "inline");
                    setAttribute(elapsed2, "display", "inline");
@@ -367,15 +305,12 @@
                {
                }
            }
            java.awt.Color bckColor = java.awt.Color.decode(background.getStyleAbsolute("fill").getStringValue());
            java.awt.Color darkerColor = bckColor.darker();
            String darkHex = String.format("#%02x%02x%02x", darkerColor.darker().getRed(), darkerColor.darker().getGreen(), darkerColor.darker().getBlue());
            setAttribute("Text information", "fill", darkHex, 999);
            setAttribute("Text offset", "fill", darkHex, 999);
            setAttribute("Text cycle", "fill", darkHex, 999);
            setAttribute(emergency, "fill", darkHex, 999);
            setAttribute(lock, "fill", darkHex, 999);
            setAttribute(run, "fill", darkHex, 999);
@@ -429,22 +364,17 @@
    {
        final String colorNoCommandsBorder = "#00007C";
        final String colorNoCommandsBackground = "#7C7CFA";
        final String colorCommandsBorder = "#007C00";
        final String colorCommandsBackground = "#7CFA7C";
        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("Background");
        SVGElement border = getElement("Border");
        SVGElement ribbon = getElement("Ribbon");
        SVGElement emergency = getElement("Emergency");
        SVGElement lock = getElement("Lock");
        SVGElement run = getElement("Run");
        SVGElement remote = getElement("Remote");
        setAttribute(border, "stroke", !getDeviceCommands().isEmpty() ? colorCommandsBorder : colorNoCommandsBorder);
        setAttribute(border, "display", "inline");
        setAttribute(border, "stroke-width", 6.5);
@@ -452,22 +382,14 @@
        setAttribute(ribbon, "stroke-opacity", 0.50);
        setAttribute(ribbon, "stroke", !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground);
        setAttribute(background, "fill", !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground);
        setAttribute(emergency, "fill", !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999);
        setAttribute(lock, "fill", !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999);
        setAttribute(run, "fill", !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999);
        setAttribute(remote, "fill", !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999);
        setText("Text number", String.format("%04d", controllerInformation.number));
        setAttribute("Text information", "display", "none", 999);
        setAttribute("Text offset", "display", "none", 999);
        setAttribute("Text cycle", "display", "none", 999);
        setAttribute("Text elapsed", "display", "none", 999);
    }
//    java.io.StringWriter sw = new java.io.StringWriter();
//    art.library.gui.flat.FlatDialog.showDialog(null, "Error", e.getMessage() + "\n\n" + sw.toString(), true, art.library.gui.flat.FlatDialog.DIALOG_ERROR);
//
    }
}
svgDevicesTest/src/Rtz/mockers/RtzMockerMapComplex.java
@@ -2,11 +2,9 @@
import Mocker.IDeviceMocker;
import art.library.interop.serialization.Serialization;
import art.library.interop.serialization.SerializationException;
import art.library.model.devices.Device;
import art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller;
import art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation;
import art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General;
import devices.mockers.LocalFileDeviceMocker;
import java.io.File;
import java.util.Random;
import svgdevicestest.mock.*;
@@ -15,9 +13,9 @@
{
    private final static Random rnd = new Random();
    public RtzMockerMapComplex()
    public RtzMockerMapComplex() throws SerializationException
    {
        super(new LocalFileDeviceMocker<RTZ32_Controller>(RTZ32_Controller.class).getDevice(), new LocalFileDeviceMocker<RTZ32_Controller>(RTZ32_Controller.class).getDevice().getDeviceCommandsEmpty());
        super((Device)Serialization.deserialize(RTZ32_Controller.class, new File("C:\\Users\\Konstantin\\Desktop\\rtz_svg.txt")));
    }
    public RtzMockerMapComplex getMocker() 
@@ -41,27 +39,27 @@
//                information.mode = RTZ32_ControllerInformation.MODE_NON_CENTRALIZED;
//            }
            
            Device d = Serialization.deserialize(RTZ32_Controller.class, new File("C:\\Users\\Konstantin\\Desktop\\rtz.txt"));
            RTZ32_Controller controller = (RTZ32_Controller) d;
            d.setAlarm("alarm_offline", false);
            controller.getDeviceAlarms().rtz32.flashing.alarm_flashing_bus_I2C = 1000;
            controller.getDeviceInformation().mode = RTZ32_ControllerInformation.MODE_CENTRALIZED;
//            controller.getDeviceStatus().rtz32.centralized = new RTZ32_Status_Centralized();
//            {
//            controller.getDeviceStatus().rtz32.centralized.centralized = false;
//            }
            controller.getDeviceStatus().rtz32.general.control = RTZ32_Status_General.CONTROL_LOCAL;
            device.status =  controller.status;
            device.information = controller.information;
            device.configuration = controller.configuration;
            device.alarms = controller.alarms;
            Device d = Serialization.deserialize(RTZ32_Controller.class, new File("C:\\Users\\Konstantin\\Desktop\\rtz_svg.txt"));
            device = d;
//            RTZ32_Controller controller = (RTZ32_Controller) d;
//
//            d.setAlarm("alarm_offline", false);
//
//            controller.getDeviceAlarms().rtz32.flashing.alarm_flashing_bus_I2C = 1000;
//
//            controller.getDeviceInformation().mode = RTZ32_ControllerInformation.MODE_CENTRALIZED;
//
////            controller.getDeviceStatus().rtz32.centralized = new RTZ32_Status_Centralized();
////            {
////            controller.getDeviceStatus().rtz32.centralized.centralized = false;
////            }
//
//            controller.getDeviceStatus().rtz32.general.control = RTZ32_Status_General.CONTROL_LOCAL;
//
//            device.status =  controller.status;
//            device.information = controller.information;
//            device.configuration = controller.configuration;
//            device.alarms = controller.alarms;
            
            
//     
svgDevicesTest/src/svgdevicestest/mock/DeviceMocker.java
@@ -5,7 +5,7 @@
public abstract class DeviceMocker <T extends Device, Y extends DeviceCommands>  {
    public final T device;
    public  T device;
    public final Y commands;
    
    public DeviceMocker(T device) {
@@ -14,7 +14,7 @@
    }
    
    public DeviceMocker(T device, Y commands) {
        this.device = device;
        this.device = device;
        this.commands = commands;
    }