Commit ab13f26c1c8074398bbee9f73459c20757ef663f

Authored by Benjamin Renard
1 parent 51cbca5c

Add text object plot definition

src/InputOutput/IHMImpl/Params/PlotImpl/IHMInputOutputParamsPlotClass.php
... ... @@ -269,9 +269,11 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass
269 269 //Plot type
270 270 $plotNode = $this->unmarshallPlotType($panelData, $panelNode);
271 271  
  272 + $isTimePlot = ($plotNode->getName() == REQUESTOUTPUTPLOTELEMENTTIME_NAME);
  273 +
272 274 //Tick plot
273 275 $tickPlotNode = NULL;
274   - if ($plotNode->getName() == REQUESTOUTPUTPLOTELEMENTTIME_NAME)
  276 + if ($isTimePlot)
275 277 {
276 278 if ($this->hasTickBar($panelData->{'params'}))
277 279 {
... ... @@ -283,7 +285,7 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass
283 285  
284 286 //Status plot
285 287 $statusPlotNode = NULL;
286   - if ($plotNode->getName() == REQUESTOUTPUTPLOTELEMENTTIME_NAME)
  288 + if ($isTimePlot)
287 289 {
288 290 if ($this->hasStatusBar($panelData->{'params'}))
289 291 {
... ... @@ -308,6 +310,10 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass
308 310 //Params
309 311 $this->unmarshallParams($panelData->{'params'}, $paramsNode, $plotNode, $panelNode, $statusPlotNode, $tickPlotNode);
310 312  
  313 + //Additional objects
  314 + if ($plotNode->getAdditionalObjects() != NULL)
  315 + $this->unmarshallAdditionalObjects($panelData, $plotNode->getAdditionalObjects(), $isTimePlot);
  316 +
311 317 return $panelNode;
312 318 }
313 319  
... ... @@ -817,6 +823,67 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass
817 823 $this->unmarshallCurve($constantData, "constant-line", $constantNode);
818 824 }
819 825  
  826 + protected function unmarshallAdditionalObjects($panelData, $addObjectsNode, $isTimePlot)
  827 + {
  828 + foreach ($panelData->{'textObjs'} as $textData)
  829 + $this->unmarshallTextObject($textData, $addObjectsNode, $isTimePlot);
  830 + }
  831 +
  832 + protected function unmarshallTextObject($textData, $addObjectsNode, $isTimePlot)
  833 + {
  834 + $textNode = $addObjectsNode->addTextObject();
  835 +
  836 + $textNode->setText($textData->{'text-value'});
  837 +
  838 + switch ($textData->{'text-y-axis'})
  839 + {
  840 + case 'y-right' :
  841 + $textNode->setYAxis('y-right');
  842 + break;
  843 + case 'y-left' :
  844 + $textNode->setYAxis('y-left');
  845 + break;
  846 + }
  847 +
  848 + if ($isTimePlot && !$textData->{'text-x-relative'})
  849 + {
  850 + date_default_timezone_set('UTC');
  851 + $timeStamp = strtotime($textData->{'text-x-timevalue'});
  852 + $time = CommonClass::timeStampToDDTime($timeStamp);
  853 + $textNode->setX($time);
  854 + }
  855 + else if ($textData->{'text-x-relative'})
  856 + $textNode->setX(($textData->{'text-x-floatvalue'}*100)."%");
  857 + else
  858 + $textNode->setX($textData->{'text-x-floatvalue'});
  859 +
  860 + if ($textData->{'text-y-relative'})
  861 + $textNode->setY(($textData->{'text-y-value'}*100)."%");
  862 + else
  863 + $textNode->setY($textData->{'text-y-value'});
  864 +
  865 + $textNode->setAngle($textData->{'text-angle'});
  866 +
  867 + $textNode->setColor($this->hexColor2KernelColor($textData->{'text-color'}));
  868 +
  869 + switch ($textData->{'text-align'})
  870 + {
  871 + case 'center' :
  872 + $textNode->setAlign(RequestOutputPlotTextAlign::CENTER);
  873 + break;
  874 + case 'right' :
  875 + $textNode->setAlign(RequestOutputPlotTextAlign::RIGHT);
  876 + break;
  877 + case 'left' :
  878 + default:
  879 + $textNode->setAlign(RequestOutputPlotTextAlign::LEFT);
  880 + }
  881 +
  882 + //Font
  883 + if ($textData->{'text-font-activated'})
  884 + $this->unmarshallFont($textData, 'text-font', $textNode->getFont());
  885 + }
  886 +
820 887 protected function unmarshallTitle($inputData, $keyPrefix, $titleNode)
821 888 {
822 889 if ($inputData->{$keyPrefix.'-text'} != '')
... ...
src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotAdditionalObjectsNodeClass.php 0 โ†’ 100644
... ... @@ -0,0 +1,25 @@
  1 +<?php
  2 +
  3 +define ("REQUESTOUTPUTPLOTADDITIONALOBJECTS_NAME", "additionalObjects");
  4 +
  5 +/**
  6 + * @class RequestOutputPlotAdditionalObjectsNodeClass
  7 + * @brief Definition of additional objects for a plot
  8 + * @details
  9 + */
  10 +class RequestOutputPlotAdditionalObjectsNodeClass extends NodeClass
  11 +{
  12 + public function __construct()
  13 + {
  14 + parent::__construct(REQUESTOUTPUTPLOTADDITIONALOBJECTS_NAME);
  15 + }
  16 +
  17 + public function addTextObject()
  18 + {
  19 + $node = new RequestOutputPlotTextNodeClass();
  20 + $this->addChild($node);
  21 + return $node;
  22 + }
  23 +}
  24 +
  25 +?>
0 26 \ No newline at end of file
... ...
src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotElementNodeClass.php
... ... @@ -37,12 +37,12 @@ class RequestOutputPlotElementNodeClass extends NodeClass
37 37 $this->addChild($node);
38 38 }
39 39  
40   - //ToDo additional objects
41   - /*if ($defineAdditionalObjects)
42   - {
43   - $node = new RequestOutputPlotAdditionalObjectsNodeClass();
44   - $this->addChild($node);
45   - }*/
  40 + //additional objects
  41 + if ($defineAdditionalObjects)
  42 + {
  43 + $node = new RequestOutputPlotAdditionalObjectsNodeClass();
  44 + $this->addChild($node);
  45 + }
46 46  
47 47 //ToDo fills
48 48 /*if ($defineFills)
... ...
src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotTextNodeClass.php 0 โ†’ 100644
... ... @@ -0,0 +1,116 @@
  1 +<?php
  2 +
  3 +define ("REQUESTOUTPUTPLOTTEXT_NAME", "textPlot");
  4 +define ("REQUESTOUTPUTPLOTTEXT_TEXT", "text");
  5 +define ("REQUESTOUTPUTPLOTTEXT_YAXIS", "yAxis");
  6 +define ("REQUESTOUTPUTPLOTTEXT_X", "x");
  7 +define ("REQUESTOUTPUTPLOTTEXT_Y", "y");
  8 +define ("REQUESTOUTPUTPLOTTEXT_ANGLE", "angle");
  9 +define ("REQUESTOUTPUTPLOTTEXT_COLOR", "color");
  10 +define ("REQUESTOUTPUTPLOTTEXT_ALIGN", "align");
  11 +define ("REQUESTOUTPUTPLOTTEXT_FONT", "font");
  12 +
  13 +abstract class RequestOutputPlotTextAlign
  14 +{
  15 + const CENTER = "center";
  16 + const LEFT = "left";
  17 + const RIGHT = "right";
  18 +}
  19 +
  20 +/**
  21 + * @class RequestOutputPlotTextNodeClass
  22 + * @brief Definition of a text element for a plot
  23 + * @details
  24 + */
  25 +class RequestOutputPlotTextNodeClass extends NodeClass
  26 +{
  27 + public function __construct()
  28 + {
  29 + parent::__construct(REQUESTOUTPUTPLOTTEXT_NAME);
  30 + }
  31 +
  32 + public function setText($text)
  33 + {
  34 + $this->setAttribute(REQUESTOUTPUTPLOTTEXT_TEXT, $text);
  35 + }
  36 +
  37 + public function getText()
  38 + {
  39 + return $this->getAttribute(REQUESTOUTPUTPLOTTEXT_TEXT);
  40 + }
  41 +
  42 + public function setYAxis($yAxis)
  43 + {
  44 + $this->setAttribute(REQUESTOUTPUTPLOTTEXT_YAXIS, $yAxis);
  45 + }
  46 +
  47 + public function getYAxis()
  48 + {
  49 + return $this->getAttribute(REQUESTOUTPUTPLOTTEXT_YAXIS);
  50 + }
  51 +
  52 + public function setX($x)
  53 + {
  54 + $this->setAttribute(REQUESTOUTPUTPLOTTEXT_X, $x);
  55 + }
  56 +
  57 + public function getX()
  58 + {
  59 + return $this->getAttribute(REQUESTOUTPUTPLOTTEXT_X);
  60 + }
  61 +
  62 + public function setY($y)
  63 + {
  64 + $this->setAttribute(REQUESTOUTPUTPLOTTEXT_Y, $y);
  65 + }
  66 +
  67 + public function getY()
  68 + {
  69 + return $this->getAttribute(REQUESTOUTPUTPLOTTEXT_Y);
  70 + }
  71 +
  72 + public function setAngle($angle)
  73 + {
  74 + $this->setAttribute(REQUESTOUTPUTPLOTTEXT_ANGLE, $angle);
  75 + }
  76 +
  77 + public function getAngle()
  78 + {
  79 + return $this->getAttribute(REQUESTOUTPUTPLOTTEXT_ANGLE);
  80 + }
  81 +
  82 + public function setColor($color)
  83 + {
  84 + $this->setAttribute(REQUESTOUTPUTPLOTTEXT_COLOR, $color);
  85 + }
  86 +
  87 + public function getColor()
  88 + {
  89 + return $this->getAttribute(REQUESTOUTPUTPLOTTEXT_COLOR);
  90 + }
  91 +
  92 + public function setAlign($align)
  93 + {
  94 + $this->setAttribute(REQUESTOUTPUTPLOTTEXT_ALIGN, $align);
  95 + }
  96 +
  97 + public function getAlign()
  98 + {
  99 + return $this->getAttribute(REQUESTOUTPUTPLOTTEXT_ALIGN);
  100 + }
  101 +
  102 + public function getFont()
  103 + {
  104 + $node = $this->getFirstChildByName(REQUESTOUTPUTPLOTTEXT_FONT);
  105 +
  106 + if (!isset($node))
  107 + {
  108 + $node = new RequestOutputPlotFontNodeClass();
  109 + $this->addChild($node);
  110 + }
  111 +
  112 + return $node;
  113 + }
  114 +}
  115 +
  116 +?>
0 117 \ No newline at end of file
... ...