package art.runtime.diagrams.devices.signalboard.riello;
|
|
import art.client.models.Shared;
|
import art.library.model.devices.Device;
|
import art.library.model.devices.DeviceAlarms.MyAlarm;
|
import art.library.model.devices.DeviceCommands;
|
import art.library.model.devices.DeviceGraphicsRuntime;
|
import art.library.model.devices.DeviceStatus;
|
import art.library.model.devices.signalsboard.SignalsBoard;
|
import art.library.model.devices.signalsboard.SignalsBoardAlarms;
|
import art.library.model.devices.signalsboard.SignalsBoardStatus;
|
import art.library.model.devices.signalsboard.status.SignalStatus;
|
import art.library.utils.common.DateUtils;
|
import com.kitfox.svg.SVGDiagram;
|
import com.kitfox.svg.SVGElement;
|
import java.text.DecimalFormat;
|
import java.util.HashMap;
|
|
public class MyDeviceGraphicsRuntime_RIELLO_POWER extends DeviceGraphicsRuntime
|
{
|
|
private boolean initialisedStatus = false;
|
private DecimalFormat formatter1 = new DecimalFormat("###,###.##");
|
|
public MyDeviceGraphicsRuntime_RIELLO_POWER(SVGDiagram diagram)
|
{
|
super(diagram);
|
}
|
|
public MyDeviceGraphicsRuntime_RIELLO_POWER(Device device, SVGDiagram diagram)
|
{
|
super(device, diagram);
|
}
|
|
public MyDeviceGraphicsRuntime_RIELLO_POWER(Device device, DeviceCommands commands, SVGDiagram diagram)
|
{
|
super(device, commands, diagram);
|
}
|
private int position = 0;
|
|
public void timer()
|
{
|
position = (position + 1) % 2;
|
}
|
|
public void status()
|
{
|
try
|
{
|
if (initialisedStatus == false)
|
{
|
for (SVGElement element : getElementsContainingField("art.translate"))
|
{
|
setText(element, Shared.getMessage(getText(element)));
|
}
|
initialisedStatus = true;
|
}
|
|
SignalsBoard device = (art.library.model.devices.signalsboard.SignalsBoard) getDevice();
|
SignalsBoardStatus status = device.getDeviceStatus();
|
SignalsBoardAlarms alarms = device.getDeviceAlarms();
|
switch (status.status)
|
{
|
case DeviceStatus.STATUS_ONLINE:
|
case DeviceStatus.STATUS_WARNING:
|
case DeviceStatus.STATUS_ALARM:
|
case DeviceStatus.STATUS_SIMULATION:
|
{
|
for (SVGElement element : getElementsContainingField("art.device.signal"))
|
{
|
String deviceIdentifier = getAttribute(element, "art.device");
|
String signalName = getAttribute(element, "art.device.signal");
|
SignalStatus signal = status.getSignal(signalName);
|
|
|
if ((signal == null) && (deviceIdentifier.equalsIgnoreCase(device.getIdentifier())))
|
{
|
specialSignals(signalName, element, status, alarms);
|
}
|
if ((signal != null) && (deviceIdentifier.equalsIgnoreCase(device.getIdentifier())))
|
{
|
switch (signal.format)
|
{
|
case SignalStatus.FORMAT_DURATION:
|
setText(element, DateUtils.getTimeddHHMMSS(Long.parseLong(signal.value)));
|
break;
|
|
case SignalStatus.FORMAT_LONG:
|
setText(element, formatter1.format(Long.parseLong(signal.value)));
|
break;
|
|
case SignalStatus.FORMAT_DOUBLE:
|
setText(element, formatter1.format(Double.parseDouble(signal.value)));
|
break;
|
|
case SignalStatus.FORMAT_BOOLEAN:
|
if (signal.value.equalsIgnoreCase("true"))
|
{
|
setText(element, Shared.getMessage("Yes"));
|
}
|
setText(element, Shared.getMessage("No"));
|
break;
|
|
default:
|
setText(element, Shared.getMessage(signal.value));
|
break;
|
}
|
}
|
}
|
|
HashMap<String,Boolean> existingAlarms = new HashMap();
|
|
for (MyAlarm alarm : alarms.getAlarms())
|
{
|
SVGElement element = getElement(alarm.name);
|
if (element != null)
|
{
|
if(existingAlarms.containsKey(alarm.name))
|
{
|
if(alarm.timestamp > 0)
|
existingAlarms.put(alarm.name, true);
|
}
|
else
|
{
|
existingAlarms.put(alarm.name, alarm.timestamp > 0);
|
}
|
|
SVGElement unknown = element.getChild(0);
|
setAttribute(unknown, "display", "none");
|
SVGElement ko = element.getChild(1);
|
SVGElement ok = element.getChild(2);
|
|
if (!existingAlarms.get(alarm.name))
|
{
|
getElementsContainingField(alarm.name.replace(" ", "") + "ok").forEach(el -> setAttribute(el, "display", "inline", 999));
|
getElementsContainingField(alarm.name.replace(" ", "") + "ko").forEach(el -> setAttribute(el, "display", "none", 999));
|
} else
|
{
|
getElementsContainingField(alarm.name.replace(" ", "") + "ko").forEach(el -> setAttribute(el, "display", "inline", 999));
|
getElementsContainingField(alarm.name.replace(" ", "") + "ok").forEach(el -> setAttribute(el, "display", "none", 999));
|
}
|
}
|
}
|
}
|
break;
|
|
|
default:
|
{
|
for (SVGElement element : getElementsContainingField("art.device.signal"))
|
{
|
String deviceIdentifier = getAttribute(element, "art.device");
|
String signalName = getAttribute(element, "art.device.signal");
|
SignalStatus signal = status.getSignal(signalName);
|
|
if ((signal == null) && (deviceIdentifier.equalsIgnoreCase(device.getIdentifier())))
|
{
|
specialSignals(signalName, element, status, alarms);
|
}
|
|
if ((signal != null) && (deviceIdentifier.equalsIgnoreCase(device.getIdentifier())))
|
{
|
setText(element, "");
|
}
|
}
|
|
for (MyAlarm alarm : alarms.getAlarms())
|
{
|
SVGElement element = getElement(alarm.name);
|
if (element != null)
|
{
|
SVGElement unknown = element.getChild(0);
|
SVGElement ko = element.getChild(1);
|
SVGElement ok = element.getChild(2);
|
setAttribute(unknown, "display", "inline");
|
setAttribute(ko, "display", "none");
|
setAttribute(ok, "display", "none");
|
}
|
}
|
}
|
break;
|
}
|
} catch (Exception e)
|
{
|
}
|
}
|
|
private void specialSignals(String signalName, SVGElement element, SignalsBoardStatus status, SignalsBoardAlarms alarms)
|
{
|
switch (status.status)
|
{
|
case DeviceStatus.STATUS_ONLINE:
|
case DeviceStatus.STATUS_WARNING:
|
case DeviceStatus.STATUS_ALARM:
|
case DeviceStatus.STATUS_SIMULATION:
|
{
|
if (signalName.equalsIgnoreCase("Company to UPS") == true)
|
{
|
if (Long.parseLong(status.getSignal("Input voltage L1").value) > 0)
|
{
|
setAttribute(element, "fill", "#00E000");
|
}
|
else
|
{
|
setAttribute(element, "fill", "#E0E0E0");
|
}
|
}
|
else if (signalName.equalsIgnoreCase("Company bypass UPS") == true)
|
{
|
if (alarms.getAlarm("Alarm on bypass") > 0)
|
{
|
if (Long.parseLong(status.getSignal("Input voltage L1").value) > 0)
|
{
|
setAttribute(element, "fill", "#00E000");
|
} else
|
{
|
setAttribute(element, "fill", "#800000");
|
}
|
} else
|
{
|
setAttribute(element, "fill", "#E0E0E0");
|
}
|
}
|
else if (signalName.equalsIgnoreCase("Battery to UPS") == true)
|
{
|
if (alarms.getAlarm("Alarm on battery") > 0)
|
{
|
if ((alarms.getAlarm("Alarm battery bad") > 0) || (alarms.getAlarm("Alarm on battery") > 0))
|
{
|
setAttribute(element, "fill", "#E00000");
|
} else if ((alarms.getAlarm("Alarm low battery") > 0) || (alarms.getAlarm("Alarm shutdown inminent") > 0))
|
{
|
setAttribute(element, "fill", "#E0E000");
|
} else
|
{
|
setAttribute(element, "fill", "#00E000");
|
}
|
}
|
else
|
{
|
setAttribute(element, "fill", "#E0E0E0");
|
}
|
}
|
else if (signalName.equalsIgnoreCase("UPS to output") == true)
|
{
|
if (Long.parseLong(status.getSignal("Output load L1").value) > 0)
|
{
|
setAttribute(element, "fill", "#00E000");
|
}
|
else
|
{
|
setAttribute(element, "fill", "#E0E0E0");
|
}
|
}
|
}
|
break;
|
default:
|
{
|
setAttribute(element, "fill", "#E000E0");
|
}
|
break;
|
}
|
}
|
}
|