diff --git a/src/InputOutput/IHMImpl/Params/PlotImpl/IHMInputOutputParamsPlotClass.php b/src/InputOutput/IHMImpl/Params/PlotImpl/IHMInputOutputParamsPlotClass.php index cd1c462..20fccfb 100644 --- a/src/InputOutput/IHMImpl/Params/PlotImpl/IHMInputOutputParamsPlotClass.php +++ b/src/InputOutput/IHMImpl/Params/PlotImpl/IHMInputOutputParamsPlotClass.php @@ -269,9 +269,11 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass //Plot type $plotNode = $this->unmarshallPlotType($panelData, $panelNode); + $isTimePlot = ($plotNode->getName() == REQUESTOUTPUTPLOTELEMENTTIME_NAME); + //Tick plot $tickPlotNode = NULL; - if ($plotNode->getName() == REQUESTOUTPUTPLOTELEMENTTIME_NAME) + if ($isTimePlot) { if ($this->hasTickBar($panelData->{'params'})) { @@ -283,7 +285,7 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass //Status plot $statusPlotNode = NULL; - if ($plotNode->getName() == REQUESTOUTPUTPLOTELEMENTTIME_NAME) + if ($isTimePlot) { if ($this->hasStatusBar($panelData->{'params'})) { @@ -308,6 +310,10 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass //Params $this->unmarshallParams($panelData->{'params'}, $paramsNode, $plotNode, $panelNode, $statusPlotNode, $tickPlotNode); + //Additional objects + if ($plotNode->getAdditionalObjects() != NULL) + $this->unmarshallAdditionalObjects($panelData, $plotNode->getAdditionalObjects(), $isTimePlot); + return $panelNode; } @@ -817,6 +823,67 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass $this->unmarshallCurve($constantData, "constant-line", $constantNode); } + protected function unmarshallAdditionalObjects($panelData, $addObjectsNode, $isTimePlot) + { + foreach ($panelData->{'textObjs'} as $textData) + $this->unmarshallTextObject($textData, $addObjectsNode, $isTimePlot); + } + + protected function unmarshallTextObject($textData, $addObjectsNode, $isTimePlot) + { + $textNode = $addObjectsNode->addTextObject(); + + $textNode->setText($textData->{'text-value'}); + + switch ($textData->{'text-y-axis'}) + { + case 'y-right' : + $textNode->setYAxis('y-right'); + break; + case 'y-left' : + $textNode->setYAxis('y-left'); + break; + } + + if ($isTimePlot && !$textData->{'text-x-relative'}) + { + date_default_timezone_set('UTC'); + $timeStamp = strtotime($textData->{'text-x-timevalue'}); + $time = CommonClass::timeStampToDDTime($timeStamp); + $textNode->setX($time); + } + else if ($textData->{'text-x-relative'}) + $textNode->setX(($textData->{'text-x-floatvalue'}*100)."%"); + else + $textNode->setX($textData->{'text-x-floatvalue'}); + + if ($textData->{'text-y-relative'}) + $textNode->setY(($textData->{'text-y-value'}*100)."%"); + else + $textNode->setY($textData->{'text-y-value'}); + + $textNode->setAngle($textData->{'text-angle'}); + + $textNode->setColor($this->hexColor2KernelColor($textData->{'text-color'})); + + switch ($textData->{'text-align'}) + { + case 'center' : + $textNode->setAlign(RequestOutputPlotTextAlign::CENTER); + break; + case 'right' : + $textNode->setAlign(RequestOutputPlotTextAlign::RIGHT); + break; + case 'left' : + default: + $textNode->setAlign(RequestOutputPlotTextAlign::LEFT); + } + + //Font + if ($textData->{'text-font-activated'}) + $this->unmarshallFont($textData, 'text-font', $textNode->getFont()); + } + protected function unmarshallTitle($inputData, $keyPrefix, $titleNode) { if ($inputData->{$keyPrefix.'-text'} != '') diff --git a/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotAdditionalObjectsNodeClass.php b/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotAdditionalObjectsNodeClass.php new file mode 100644 index 0000000..64df3c9 --- /dev/null +++ b/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotAdditionalObjectsNodeClass.php @@ -0,0 +1,25 @@ +<?php + +define ("REQUESTOUTPUTPLOTADDITIONALOBJECTS_NAME", "additionalObjects"); + +/** + * @class RequestOutputPlotAdditionalObjectsNodeClass + * @brief Definition of additional objects for a plot + * @details + */ +class RequestOutputPlotAdditionalObjectsNodeClass extends NodeClass +{ + public function __construct() + { + parent::__construct(REQUESTOUTPUTPLOTADDITIONALOBJECTS_NAME); + } + + public function addTextObject() + { + $node = new RequestOutputPlotTextNodeClass(); + $this->addChild($node); + return $node; + } +} + +?> \ No newline at end of file diff --git a/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotElementNodeClass.php b/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotElementNodeClass.php index 3da8701..3e35b27 100644 --- a/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotElementNodeClass.php +++ b/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotElementNodeClass.php @@ -37,12 +37,12 @@ class RequestOutputPlotElementNodeClass extends NodeClass $this->addChild($node); } - //ToDo additional objects - /*if ($defineAdditionalObjects) - { - $node = new RequestOutputPlotAdditionalObjectsNodeClass(); - $this->addChild($node); - }*/ + //additional objects + if ($defineAdditionalObjects) + { + $node = new RequestOutputPlotAdditionalObjectsNodeClass(); + $this->addChild($node); + } //ToDo fills /*if ($defineFills) diff --git a/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotTextNodeClass.php b/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotTextNodeClass.php new file mode 100644 index 0000000..15f556a --- /dev/null +++ b/src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotTextNodeClass.php @@ -0,0 +1,116 @@ +<?php + +define ("REQUESTOUTPUTPLOTTEXT_NAME", "textPlot"); +define ("REQUESTOUTPUTPLOTTEXT_TEXT", "text"); +define ("REQUESTOUTPUTPLOTTEXT_YAXIS", "yAxis"); +define ("REQUESTOUTPUTPLOTTEXT_X", "x"); +define ("REQUESTOUTPUTPLOTTEXT_Y", "y"); +define ("REQUESTOUTPUTPLOTTEXT_ANGLE", "angle"); +define ("REQUESTOUTPUTPLOTTEXT_COLOR", "color"); +define ("REQUESTOUTPUTPLOTTEXT_ALIGN", "align"); +define ("REQUESTOUTPUTPLOTTEXT_FONT", "font"); + +abstract class RequestOutputPlotTextAlign +{ + const CENTER = "center"; + const LEFT = "left"; + const RIGHT = "right"; +} + +/** + * @class RequestOutputPlotTextNodeClass + * @brief Definition of a text element for a plot + * @details + */ +class RequestOutputPlotTextNodeClass extends NodeClass +{ + public function __construct() + { + parent::__construct(REQUESTOUTPUTPLOTTEXT_NAME); + } + + public function setText($text) + { + $this->setAttribute(REQUESTOUTPUTPLOTTEXT_TEXT, $text); + } + + public function getText() + { + return $this->getAttribute(REQUESTOUTPUTPLOTTEXT_TEXT); + } + + public function setYAxis($yAxis) + { + $this->setAttribute(REQUESTOUTPUTPLOTTEXT_YAXIS, $yAxis); + } + + public function getYAxis() + { + return $this->getAttribute(REQUESTOUTPUTPLOTTEXT_YAXIS); + } + + public function setX($x) + { + $this->setAttribute(REQUESTOUTPUTPLOTTEXT_X, $x); + } + + public function getX() + { + return $this->getAttribute(REQUESTOUTPUTPLOTTEXT_X); + } + + public function setY($y) + { + $this->setAttribute(REQUESTOUTPUTPLOTTEXT_Y, $y); + } + + public function getY() + { + return $this->getAttribute(REQUESTOUTPUTPLOTTEXT_Y); + } + + public function setAngle($angle) + { + $this->setAttribute(REQUESTOUTPUTPLOTTEXT_ANGLE, $angle); + } + + public function getAngle() + { + return $this->getAttribute(REQUESTOUTPUTPLOTTEXT_ANGLE); + } + + public function setColor($color) + { + $this->setAttribute(REQUESTOUTPUTPLOTTEXT_COLOR, $color); + } + + public function getColor() + { + return $this->getAttribute(REQUESTOUTPUTPLOTTEXT_COLOR); + } + + public function setAlign($align) + { + $this->setAttribute(REQUESTOUTPUTPLOTTEXT_ALIGN, $align); + } + + public function getAlign() + { + return $this->getAttribute(REQUESTOUTPUTPLOTTEXT_ALIGN); + } + + public function getFont() + { + $node = $this->getFirstChildByName(REQUESTOUTPUTPLOTTEXT_FONT); + + if (!isset($node)) + { + $node = new RequestOutputPlotFontNodeClass(); + $this->addChild($node); + } + + return $node; + } +} + +?> \ No newline at end of file -- libgit2 0.21.2