package art.client.maps;
|
|
import art.client.models.Shared;
|
import art.library.model.devices.Device;
|
import art.library.model.devices.DeviceGraphicsRuntime;
|
import art.library.model.devices.DeviceStatus;
|
import art.library.model.devices.colors.controller.M.realtime.M_ControllerRealtimeGroup;
|
import art.library.model.devices.signalsboard.SignalsBoard;
|
import art.library.model.devices.signalsboard.SignalsBoardStatus;
|
import art.library.model.devices.signalsboard.status.SignalStatus;
|
import com.kitfox.svg.*;
|
import java.text.DecimalFormat;
|
|
|
public class LUENGO_TRAFFIC extends DeviceGraphicsRuntime
|
{
|
public LUENGO_TRAFFIC (Device device ,SVGDiagram diagram)
|
{
|
super(device, diagram);
|
}
|
|
public void status()
|
{
|
SignalsBoard device = (art.library.model.devices.signalsboard.SignalsBoard) getDevice();
|
SignalsBoardStatus status = device.getDeviceStatus();
|
|
switch (status.status)
|
{
|
case DeviceStatus.STATUS_ONLINE:
|
case DeviceStatus.STATUS_WARNING:
|
case DeviceStatus.STATUS_ALARM:
|
case DeviceStatus.STATUS_SIMULATION:
|
{
|
try
|
{
|
getElementsContainingField("art.translate").forEach(this::translate);
|
getElementsContainingField("art.queue.signal").forEach(this::processQueueSignal);
|
getElementsContainingField("art.time.signal").forEach(this::processTimeSignal);
|
getElementsContainingField("art.detector.signal").forEach(this::processTableDetectorSignal);
|
getElementsContainingField("art.signal").forEach(this::processColorSignal);
|
getElementsContainingField("art.table.group").forEach(this::processTextGroup);
|
}
|
catch (Exception ex){}
|
}
|
break;
|
default:
|
break;
|
}
|
}
|
|
private void translate(SVGElement element)
|
{
|
try
|
{
|
setText(element, Shared.getMessage(getText(element)));
|
}
|
catch(Exception ex){}
|
}
|
|
private void processTableDetectorSignal(SVGElement element)
|
{
|
try
|
{
|
SignalsBoard device = (art.library.model.devices.signalsboard.SignalsBoard) getDevice();
|
SignalsBoardStatus status = device.getDeviceStatus();
|
SignalStatus signal = status.getSignal(getAttribute(element, "art.detector.signal"));
|
|
if (signal != null)
|
{
|
switch (signal.format)
|
{
|
case SignalStatus.FORMAT_DURATION:
|
setText(element, getTimeddHHMMSS(Long.valueOf(signal.value)));
|
break;
|
default:
|
setText(element, signal.value + Shared.getMessage(signal.units).replace("veh", ""));
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
}
|
}
|
|
private void processQueueSignal(SVGElement element)
|
{
|
try
|
{
|
SignalsBoard device = (art.library.model.devices.signalsboard.SignalsBoard) getDevice();
|
SignalsBoardStatus status = device.getDeviceStatus();
|
SignalStatus signal = status.getSignal(getAttribute(element, "art.queue.signal"));
|
|
boolean showElement = false;
|
|
if (signal != null)
|
{
|
showElement = "true".equals(signal.value);
|
}
|
|
setAttribute(element, "fill", showElement ? "#FF0000" : "#C8C8C8", 999);
|
setAttribute(element, "fill-opacity", showElement ? 1 : 0.5, 999);
|
}
|
catch (Exception ex){}
|
}
|
|
private void processColorSignal(SVGElement element)
|
{
|
SignalsBoard device = (art.library.model.devices.signalsboard.SignalsBoard) getDevice();
|
SignalsBoardStatus status = device.getDeviceStatus();
|
SignalStatus signal = status.getSignal(getAttribute(element, "art.signal"));
|
|
boolean displayElement = false;
|
|
if (signal != null)
|
{
|
try
|
{
|
long signalColor = Long.valueOf(signal.value);
|
|
String elementType = getAttribute(element, "art.type");
|
|
if ("go".equals(elementType) && (signalColor == M_ControllerRealtimeGroup.M_GROUP_COLOR_GREEN
|
|| signalColor == M_ControllerRealtimeGroup.M_GROUP_COLOR_YELLOW
|
|| signalColor == M_ControllerRealtimeGroup.M_GROUP_COLOR_FLAHING_YELLOW))
|
{
|
displayElement = true;
|
|
if (signalColor == M_ControllerRealtimeGroup.M_GROUP_COLOR_GREEN)
|
{
|
setAttribute(element, "fill", "#00FF00", 999);
|
}
|
else if (signalColor == M_ControllerRealtimeGroup.M_GROUP_COLOR_YELLOW)
|
{
|
setAttribute(element, "fill", "#e6e600", 999);
|
}
|
else if (signalColor == M_ControllerRealtimeGroup.M_GROUP_COLOR_FLAHING_YELLOW)
|
{
|
setAttribute(element, "fill", "#e6e600", 999);
|
displayElement = (position == 0);
|
}
|
}
|
else if ("stop".equals(elementType) && signalColor == M_ControllerRealtimeGroup.M_GROUP_COLOR_RED)
|
{
|
displayElement = true;
|
}
|
|
} catch (Exception ex)
|
{
|
}
|
}
|
|
setAttribute(element, "display", displayElement ? "inline" : "none", 999);
|
}
|
|
private void processTimeSignal(SVGElement element)
|
{
|
try
|
{
|
SignalsBoard device = (art.library.model.devices.signalsboard.SignalsBoard) getDevice();
|
SignalsBoardStatus status = device.getDeviceStatus();
|
SignalStatus signal = status.getSignal(getAttribute(element, "art.time.signal"));
|
setText(element, signal.value);
|
}
|
catch(Exception ex){}
|
}
|
|
private void processTextGroup(SVGElement element)
|
{
|
try
|
{
|
setText(element, getAttribute(element, "art.table.group"));
|
}
|
catch(Exception ex){}
|
}
|
|
private DecimalFormat formato2 = new DecimalFormat("00");
|
|
private String getTimeddHHMMSS(long timestamp)
|
{
|
if (timestamp < 0)
|
{
|
return "";
|
}
|
|
long difference = timestamp;
|
int dias = (int) (difference / 86400000L);
|
int horas = (int) ((difference - (dias * 86400000L)) / 3600000L);
|
int minutos = (int) ((difference - (dias * 86400000L) - (horas * 3600000L)) / 60000L);
|
int segundos = (int) ((difference - (dias * 86400000L) - (horas * 3600000L) - (minutos * 60000L)) / 1000L);
|
|
String result = "";
|
|
if (dias > 0)
|
{
|
result = result + dias + " " + "d" + " ";
|
}
|
result = result + formato2.format(horas) + ":";
|
result = result + formato2.format(minutos) + ":";
|
result = result + formato2.format(segundos);
|
|
return result.trim();
|
}
|
|
private int position = 0;
|
|
public void timer()
|
{
|
position = (position + 1) % 2;
|
}
|
|
}
|