From 51cbca5cad0ce939cc453d6f33c1d2ea1492a97f Mon Sep 17 00:00:00 2001
From: Benjamin Renard <benjamin.renard@akka.eu>
Date: Tue, 1 Sep 2015 15:22:39 +0200
Subject: [PATCH] Add constants definitions

---
 src/InputOutput/IHMImpl/Params/PlotImpl/IHMInputOutputParamsPlotClass.php              | 54 ++++++++++++++++++++++++++++++++++++++++++------------
 src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotAxisElementNodeClass.php |  7 ++++++-
 src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotConstantNodeClass.php    | 29 +++++++++++++++++++++++++++++
 3 files changed, 77 insertions(+), 13 deletions(-)
 create mode 100644 src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotConstantNodeClass.php

diff --git a/src/InputOutput/IHMImpl/Params/PlotImpl/IHMInputOutputParamsPlotClass.php b/src/InputOutput/IHMImpl/Params/PlotImpl/IHMInputOutputParamsPlotClass.php
index 0a70809..cd1c462 100644
--- a/src/InputOutput/IHMImpl/Params/PlotImpl/IHMInputOutputParamsPlotClass.php
+++ b/src/InputOutput/IHMImpl/Params/PlotImpl/IHMInputOutputParamsPlotClass.php
@@ -303,7 +303,7 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass
 		
 		//Axes
 		foreach ($panelData->{'axes'} as $axisData)
-			$this->unmarshallAxis($axisData, $plotNode);
+			$this->unmarshallAxis($axisData, $panelData->{'constants'}, $plotNode);
 		
 		//Params
 		$this->unmarshallParams($panelData->{'params'}, $paramsNode, $plotNode, $panelNode, $statusPlotNode, $tickPlotNode);
@@ -368,28 +368,34 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass
 		return $plotNode;
 	}
 	
-	protected function unmarshallAxis($axisData, $plotNode)
+	protected function unmarshallAxis($axisData, $constantsData, $plotNode)
 	{
 		//axis type
+		$constantAxisId = '';
 		switch ($axisData->{'axis-type'})
 		{
 			case 'time' :
 				$axisNode = $plotNode->getTimeAxis();
 				$axisNode->setFormat($axisData->{'axis-time-format'});
+				$constantAxisId = 'x';
 				break;
 			case 'epoch' :
 				$axisNode = $plotNode->getEpochAxis();
 				$axisNode->setNormalized($axisData->{'axis-epoch-normalized'} ? "true" : "false");
+				$constantAxisId = 'x';
 				break;
 			case 'x' :
 				$axisNode = $plotNode->getXAxis();
+				$constantAxisId = 'x';
 				break;
 			case 'y-left' :
 				$axisNode = $plotNode->addYAxis('y-left');
+				$constantAxisId = 'y-left';
 				break;
 			case 'y-right' :
 				$axisNode = $plotNode->addYAxis('y-right');
 				$axisNode->setPosition(RequestOutputPlotAxisElementPosition::RIGHT);
+				$constantAxisId = 'y-right';
 				break;
 			case 'color' :
 				$axisNode = $plotNode->getZAxis();
@@ -452,6 +458,14 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass
 		
 		//Show tick marks
 		$axisNode->setShowTickMarks($axisData->{'axis-tick-showmarks'} ? "true" : "false");
+		
+		//Add constants
+		if ($constantAxisId != '')
+		{
+			foreach ($constantsData as $constantData)
+				if ($constantData->{'constant-axis-id'} == $constantAxisId)
+					$this->unmarshallConstant($constantData,$axisNode);
+		}
 	}
 	
 	protected function unmarshallParams($paramsData, $requestParamsNode, $plotNode, $panelNode, $statusPlotNode, $tickPlotNode)
@@ -597,7 +611,7 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass
 				}
 			}
 			//Line
-			$this->unmarshallLine($paramDrawingData, 'serie', $serieNode->getLine());
+			$this->unmarshallLine($paramDrawingData, 'serie', $serieNode->getLine(), $paramDrawingData->{"serie-lines-activated"} ? RequestOutputPlotLineTypeEnum::LINE : RequestOutputPlotLineTypeEnum::NO);
 			//Symbol
 			if (!$paramDrawingData->{"serie-symbols-activated"})
 				$serieNode->getSymbol()->setType(RequestOutputPlotSymbolTypeEnum::NO);
@@ -649,7 +663,7 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass
 		$iserieNode->setTableOnXAxis($paramDrawingData->{'iserie-tableonx'} ? "true" : "false");
 		
 		//Line
-		$this->unmarshallLine($paramDrawingData, 'iserie', $iserieNode->getLine());
+		$this->unmarshallLine($paramDrawingData, 'iserie', $iserieNode->getLine(), $paramDrawingData->{"iserie-lines-activated"} ? RequestOutputPlotLineTypeEnum::LINE : RequestOutputPlotLineTypeEnum::NO);
 
 		//Symbol
 		if (!$paramDrawingData->{"iserie-symbols-activated"})
@@ -782,6 +796,27 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass
 			$this->unmarshallFont($textLegendData, 'legend-text-font', $legendNode->getFont());
 	}
 	
+	protected function unmarshallConstant($constantData,$axisNode)
+	{
+		$constantNode = $axisNode->addConstant();
+		
+		//Constant value
+		switch ($axisNode->getName())
+		{
+			case REQUESTOUTPUTPLOTTIMEAXIS_NAME :
+				date_default_timezone_set('UTC');
+				$timeStamp = strtotime($constantData->{'constant-time-value'});
+				$time = CommonClass::timeStampToDDTime($timeStamp);
+				$constantNode->setConstantValue($time);
+				break;
+			default :
+				$constantNode->setConstantValue($constantData->{'constant-float-value'});
+		}
+		
+		//Curve options
+		$this->unmarshallCurve($constantData, "constant-line", $constantNode);
+	}
+	
 	protected function unmarshallTitle($inputData, $keyPrefix, $titleNode)
 	{
 		if ($inputData->{$keyPrefix.'-text'} != '')
@@ -888,15 +923,10 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass
 			$curveNode->setColor($this->hexColor2KernelColor($inputData->{$keyPrefix.'-color'}));
 	}
 	
-	protected function unmarshallLine($inputData, $keyPrefix, $lineNode)
+	protected function unmarshallLine($inputData, $keyPrefix, $lineNode, $lineType)
 	{
-		if (!$inputData->{$keyPrefix."-lines-activated"})
-			$lineNode->setType(RequestOutputPlotLineTypeEnum::NO);
-		else
-		{
-			$lineNode->setType(RequestOutputPlotLineTypeEnum::LINE);
-			$this->unmarshallCurve($inputData, $keyPrefix."-lines", $lineNode);
-		}
+		$lineNode->setType($lineType);
+		$this->unmarshallCurve($inputData, $keyPrefix."-lines", $lineNode);
 	}
 	
 	protected function unmarshallSymbol($inputData, $keyPrefix, $symbolNode)
diff --git a/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotAxisElementNodeClass.php b/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotAxisElementNodeClass.php
index 858d555..b4ba789 100644
--- a/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotAxisElementNodeClass.php
+++ b/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotAxisElementNodeClass.php
@@ -188,7 +188,12 @@ class RequestOutputPlotAxisElementNodeClass extends NodeClass
 		return $this->getFirstChildByName(REQUESTOUTPUTPLOTAXISELEMENTLEGEND_NAME);
 	}
 
-	/* ToDo constantLine */
+	public function addConstant()
+	{
+		$node = new RequestOutputPlotConstantNodeClass();
+		$this->addChild($node);
+		return $node;
+	}
 
 	/* ToDo origin */
 
diff --git a/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotConstantNodeClass.php b/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotConstantNodeClass.php
new file mode 100644
index 0000000..90cd35e
--- /dev/null
+++ b/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotConstantNodeClass.php
@@ -0,0 +1,29 @@
+<?php
+
+define ("REQUESTOUTPUTPLOTCONSTANT_NAME", "constantLine");
+define ("REQUESTOUTPUTPLOTCONSTANT_VALUE", "value");
+
+/**
+ * @class RequestOutputPlotConstantNodeClass
+ * @brief Definition of a constant element for a plot
+ * @details
+ */
+class RequestOutputPlotConstantNodeClass extends RequestOutputPlotCurveNodeClass
+{
+	public function __construct()
+	{
+		parent::__construct(REQUESTOUTPUTPLOTCONSTANT_NAME);
+	}
+	
+	public function setConstantValue($value)
+	{
+		$this->setAttribute(REQUESTOUTPUTPLOTCONSTANT_VALUE, $value);
+	}
+	
+	public function getConstantValue()
+	{
+		return $this->getAttribute(REQUESTOUTPUTPLOTCONSTANT_VALUE);
+	}
+}
+
+?>
\ No newline at end of file
--
libgit2 0.21.2