package art.client.maps;
|
|
import art.library.model.devices.*;
|
import art.library.model.devices.colors.controller.M.M_Controller;
|
import art.library.model.devices.colors.controller.M.M_ControllerRealtime;
|
import art.library.model.devices.colors.controller.M.M_ControllerStatus;
|
import art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller;
|
import art.library.model.devices.colors.controller.M.M_SubcontrollerConfiguration;
|
import art.library.model.devices.colors.controller.M.configuration.M_Plan;
|
import art.library.model.devices.colors.controller.M.realtime.M_ControllerRealtimeGroup;
|
import art.library.model.devices.colors.controller.M.realtime.M_ControllerRealtimeSubcontroller;
|
import com.kitfox.svg.*;
|
import java.util.*;
|
|
|
public class Corridor extends DeviceGraphicsRuntime
|
{
|
private boolean even = false;
|
|
|
public Corridor(SVGDiagram diagram)
|
{
|
super(diagram);
|
}
|
|
|
public void status()
|
{
|
Calendar calendardate = java.util.Calendar.getInstance();
|
calendardate.set(java.util.Calendar.MILLISECOND, 0);
|
long seconds = calendardate.getTimeInMillis()/1000;
|
even = (seconds % 2) == 0;
|
|
try
|
{
|
List<SVGElement> lelement = getElementsContainingField("art.device");
|
|
for (SVGElement element : lelement)
|
{
|
try
|
{
|
SVGElement arrow = getChildContainingField(element, "art.id", "Arrow");
|
|
if (arrow == null)
|
{
|
statusBox(element);
|
}
|
else
|
{
|
statusGroup(element);
|
}
|
}
|
catch (Exception e)
|
{
|
}
|
}
|
}
|
catch (Exception e)
|
{
|
|
}
|
}
|
|
|
|
private void statusBox(SVGElement element) throws Exception
|
{
|
String identifier = getAttribute(element, "art.device");
|
|
SVGElement background = getChildContainingField(element, "art.id", "Background");
|
SVGElement border = getChildContainingField(element, "art.id", "Border");
|
SVGElement alarm = getChildContainingField(element, "art.id", "Alarm");
|
SVGElement textInformation = getChildContainingField(element, "art.id", "Text information");
|
SVGElement textCycle = getChildContainingField(element, "art.id", "Text cycle");
|
SVGElement textOffset = getChildContainingField(element, "art.id", "Text offset");
|
SVGElement textElapsed = getChildContainingField(element, "art.id", "Text elapsed");
|
|
setAttribute(background, "fill", "#F000F0");
|
setAttribute(border, "stroke", "#F000F0");
|
setAttribute(alarm, "display", "none");
|
setText(textInformation, "");
|
setText(textCycle, "");
|
setText(textElapsed, "");
|
setText(textOffset, "");
|
setAttribute(border, "stroke-width", 0.75);
|
|
M_Controller controller = (M_Controller)art.client.models.Shared.model.modelDevices.getDevice(identifier);
|
M_ControllerStatus controllerStatus = controller.getDeviceStatus();
|
M_ControllerStatusSubcontroller subcontrollerStatus = null;
|
M_ControllerRealtimeSubcontroller subcontrollerRealtime = null;
|
M_SubcontrollerConfiguration subcontrollerConfiguration = null;
|
if (controller.status != null) subcontrollerStatus = controller.getDeviceStatus().getStatusSubcontroller();
|
if (controller.realtime != null) subcontrollerRealtime = controller.getDeviceRealtime().getRealtimeSubcontroller();
|
if (controller.configuration != null) subcontrollerConfiguration = controller.getDeviceConfiguration().getSubcontroller();
|
|
/* Alarm */
|
|
int severityAlarm = controller.getDeviceAlarms().getServerityAlarm();
|
double strokeopacity = Math.pow(2, severityAlarm)/32;
|
|
if (severityAlarm > 0)
|
{
|
setAttribute(alarm, "display", "inline");
|
setAttribute(alarm, "stroke", "#FF0000", 999);
|
setAttribute(alarm, "stroke-opacity", strokeopacity, 999);
|
setAttribute(alarm, "stroke-width", (0.5 + (1 * strokeopacity)), 999);
|
setAttribute(alarm, "stroke-width", 2, 999);
|
}
|
|
/* Status */
|
|
switch (controllerStatus.status)
|
{
|
case DeviceStatus.STATUS_ONLINE:
|
case DeviceStatus.STATUS_WARNING:
|
case DeviceStatus.STATUS_ALARM:
|
{
|
switch (subcontrollerStatus.colorsMode)
|
{
|
case M_ControllerStatusSubcontroller.COLORS_OFF :
|
setAttribute(background, "fill", "#808080");
|
setAttribute(border, "stroke", "#404040");
|
setText(textInformation, "OFF");
|
break;
|
|
case M_ControllerStatusSubcontroller.COLORS_FLASHING :
|
setText(textInformation, "Y^");
|
|
if (even == true)
|
{
|
setAttribute(background, "fill", "#F0F0F0");
|
}
|
else
|
{
|
setAttribute(background, "fill", "#FFFF00");
|
}
|
break;
|
|
case M_ControllerStatusSubcontroller.COLORS_COLORS :
|
setAttribute(background, "fill", "#F0F0F0");
|
break;
|
}
|
}
|
break;
|
}
|
|
|
/* State, cycle */
|
|
if (subcontrollerStatus.colorsMode == M_ControllerStatusSubcontroller.COLORS_COLORS)
|
{
|
M_Plan plan = null;
|
|
if (subcontrollerStatus.plan > 0)
|
{
|
try
|
{
|
plan = subcontrollerConfiguration.getMPlan(subcontrollerRealtime.plan);
|
}
|
catch (Exception e)
|
{
|
}
|
}
|
else
|
{
|
plan = subcontrollerStatus.recordablePlan;
|
}
|
|
if (plan != null)
|
{
|
|
String information = "";
|
|
switch (subcontrollerStatus.operationMode)
|
{
|
case M_ControllerStatusSubcontroller.OPERATIONMODE_FIXED: information = "F"; break;
|
case M_ControllerStatusSubcontroller.OPERATIONMODE_SEMIACTUATED: information = "S"; break;
|
case M_ControllerStatusSubcontroller.OPERATIONMODE_ACTUATED: information = "A"; break;
|
}
|
|
information = information + plan.number;
|
|
switch (subcontrollerStatus.planSelection)
|
{
|
case M_ControllerStatusSubcontroller.PLANSELECTION_TIMETABLE: information = information + "t"; break;
|
case M_ControllerStatusSubcontroller.PLANSELECTION_EXTERNAL_PLANS: information = information + "e"; break;
|
case M_ControllerStatusSubcontroller.PLANSELECTION_ICF: information = information + "i"; break;
|
case M_ControllerStatusSubcontroller.PLANSELECTION_COMPUTER: information = information + "c"; break;
|
}
|
|
switch (subcontrollerStatus.planSelectionComputer)
|
{
|
case M_ControllerStatusSubcontroller.PLANSELECTION_COMPUTER_MACRO: information = information + ""; break;
|
case M_ControllerStatusSubcontroller.PLANSELECTION_COMPUTER_PLAN_SELECTION: information = information + "+"; break;
|
case M_ControllerStatusSubcontroller.PLANSELECTION_COMPUTER_PLAN_GENERATION: information = information + "+"; break;
|
case M_ControllerStatusSubcontroller.PLANSELECTION_COMPUTER_ADAPTATIVE: information = information + "+"; break;
|
}
|
|
|
setText(textInformation, information);
|
|
if (plan.offset > 0)
|
{
|
setText(textOffset, "" + plan.offset);
|
}
|
|
|
setText(textCycle, "" + plan.cycleTime);
|
|
if (subcontrollerRealtime != null)
|
{
|
String text = subcontrollerRealtime.phase + ":" + subcontrollerRealtime.cycle;
|
|
switch (subcontrollerRealtime.adjust)
|
{
|
case M_ControllerRealtimeSubcontroller.ADJUST_POSITIVE: text = text + "+"; break;
|
case M_ControllerRealtimeSubcontroller.ADJUST_NEGATIVE: text = text + "-"; break;
|
}
|
|
setText(textElapsed, text);
|
}
|
}
|
}
|
}
|
|
|
|
|
|
|
|
private void statusGroup(SVGElement element) throws Exception
|
{
|
String identifier = getAttribute(element, "art.device");
|
String group = getAttribute(element, "art.device.group");
|
|
SVGElement background = getChildContainingField(element, "art.id", "Background");
|
SVGElement border = getChildContainingField(element, "art.id", "Border");
|
SVGElement arrow = getChildContainingField(element, "art.id", "Arrow");
|
|
setAttribute(background, "fill", "#F000F0");
|
setAttribute(border, "display", "none");
|
setAttribute(arrow, "fill", "#FFFFFF");
|
|
M_Controller controller = (M_Controller)art.client.models.Shared.model.modelDevices.getDevice(identifier);
|
M_ControllerStatus controllerStatus = controller.getDeviceStatus();
|
M_ControllerRealtime controllerRealtime = controller.getDeviceRealtime();
|
|
|
/* Status */
|
|
if (controllerStatus.getStatusGroup(Integer.parseInt(group)).hasAlarm() == true)
|
{
|
if (even == true)
|
{
|
setAttribute(border, "display", "inline");
|
setAttribute(border, "stroke", "#FF0000");
|
setAttribute(border, "stroke-width", 1.0);
|
}
|
}
|
|
|
/* Realtime */
|
|
if (even == true)
|
{
|
switch (controllerRealtime.getStatusGroup(Integer.parseInt(group)).getColor())
|
{
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_OFF: setAttribute(background, "fill", "#4B4B4B"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_GREEN: setAttribute(background, "fill", "#00E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_YELLOW: setAttribute(background, "fill", "#E0E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_RED: setAttribute(background, "fill", "#E00000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_FAST_FLASHING_GREEN: setAttribute(background, "fill", "#00E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_FLAHING_YELLOW:setAttribute(background, "fill", "#E0E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_GREEN_FLASHING_YELLOW_DOUBLE: setAttribute(background, "fill", "#00E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_FLASHING_GREEN_RED: setAttribute(background, "fill", "#00E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_RED_YELLOW: setAttribute(background, "fill", "#E00000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_GREEN_FLASHING_YELLOW_PROTECTION: setAttribute(background, "fill", "#00E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_FAST_FLASHING_GREEN_FLASHING_YELLOW_PROTECTION: setAttribute(background, "fill", "#00E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_RED_FLASHING_YELLOW_PROTECTION: setAttribute(background, "fill", "#E00000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_SLOW_FLASHING_GREEN: setAttribute(background, "fill", "#00E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_SLOW_FLASHING_RED: setAttribute(background, "fill", "#E00000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_FLASHING_YELLOW_DOUBLE: setAttribute(background, "fill", "#E0E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_FAST_FLASHING_RED_FLASHING_YELLOW: setAttribute(background, "fill", "#E00000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_FLASHING_YELLOW_DOUBLE_WITH_GREEN_SIGNAL: setAttribute(background, "fill", "#E0E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_GREEN_FLASHING_YELOW_DOUBLE_WITH_RED_SIGNAL: setAttribute(background, "fill", "#E0E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_GREEN_YELLOW: setAttribute(background, "fill", "#00E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_UNKNOWN: setAttribute(background, "fill", "#E000E0"); break;
|
default:
|
}
|
}
|
else
|
{
|
switch (controllerRealtime.getStatusGroup(Integer.parseInt(group)).getColor())
|
{
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_OFF: setAttribute(background, "fill", "#4B4B4B"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_GREEN: setAttribute(background, "fill", "#00E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_YELLOW: setAttribute(background, "fill", "#E0E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_RED: setAttribute(background, "fill", "#E00000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_FAST_FLASHING_GREEN: setAttribute(background, "fill", "#4B4B4B"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_FLAHING_YELLOW:setAttribute(background, "fill", "#4B4B4B"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_GREEN_FLASHING_YELLOW_DOUBLE: setAttribute(background, "fill", "#E0E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_FLASHING_GREEN_RED: setAttribute(background, "fill", "#E00000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_RED_YELLOW: setAttribute(background, "fill", "#E0E0000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_GREEN_FLASHING_YELLOW_PROTECTION: setAttribute(background, "fill", "#E0E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_FAST_FLASHING_GREEN_FLASHING_YELLOW_PROTECTION: setAttribute(background, "fill", "#E0E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_RED_FLASHING_YELLOW_PROTECTION: setAttribute(background, "fill", "#E0E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_SLOW_FLASHING_GREEN: setAttribute(background, "fill", "#4B4B4B"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_SLOW_FLASHING_RED: setAttribute(background, "fill", "#4B4B4B"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_FLASHING_YELLOW_DOUBLE: setAttribute(background, "fill", "#4B4B4B"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_FAST_FLASHING_RED_FLASHING_YELLOW: setAttribute(background, "fill", "#E0E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_FLASHING_YELLOW_DOUBLE_WITH_GREEN_SIGNAL: setAttribute(background, "fill", "#00E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_GREEN_FLASHING_YELOW_DOUBLE_WITH_RED_SIGNAL: setAttribute(background, "fill", "#E00000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_GREEN_YELLOW: setAttribute(background, "fill", "#E0E000"); break;
|
case M_ControllerRealtimeGroup.M_GROUP_COLOR_UNKNOWN: setAttribute(background, "fill", "#E000E0"); break;
|
default:
|
}
|
}
|
}
|
}
|