Browse Source

Fix for graph labels and block evaluation height graph - refs CT#7383

Daniel Barreto 10 years ago
parent
commit
6ac9959a31

+ 40 - 15
main/inc/lib/pchart/pChart.class.php

@@ -586,7 +586,6 @@
      /* Horizontal Axis */
      $XPos = $this->GArea_X1 + $this->GAreaXOffset;
      $ID = 1; $YMax = NULL;
-     $maxTextHeight = 0;
      foreach ( $Data as $Key => $Values )
       {
        if ( $ID % $SkipLabels == 0 )
@@ -608,10 +607,6 @@
          $TextWidth  = abs($Position[2])+abs($Position[0]);
          $TextHeight = abs($Position[1])+abs($Position[3]);
 
-            // Save max text height
-            if ($maxTextHeight < $TextHeight) {
-                $maxTextHeight = $TextHeight;
-            }
          if ( $Angle == 0 )
           {
            $YPos = $this->GArea_Y2+18;
@@ -619,13 +614,43 @@
           }
          else
           {
-           $YPos = $this->GArea_Y2+10;
-              // If rotation is top down, then add TextHeight;
-              $YPos = (sin($Angle) < 0) ? $YPos + $TextHeight : $YPos;
-           if ( $Angle <= 90 )
-            imagettftext($this->Picture,$this->FontSize,$Angle,floor($XPos)-$TextWidth+5,$YPos,$C_TextColor,$this->FontName,$Value);
-           else
-            imagettftext($this->Picture,$this->FontSize,$Angle,floor($XPos)+$TextWidth+5,$YPos,$C_TextColor,$this->FontName,$Value);
+              // Will change XY positions to show the right label position
+              // To detect side of cartesian plane XY where angles ends
+              // e.g 60 degree is in Quadrant I, 120 degree is Quadrant II
+              $isYpositive = sin(deg2rad($Angle)) >= 0;
+              $isXpositive = cos(deg2rad($Angle)) >= 0;
+              $YPos = $this->GArea_Y2+10;
+
+              if ($isYpositive && $isXpositive) {
+                  // For Quadrant I
+                  $YPos += $TextHeight;
+                  $XPos -= $TextWidth;
+              } elseif ($isYpositive && !$isXpositive) {
+                  // For Quadrant II
+                  $YPos += $TextHeight;
+                  $XPos += $TextWidth;
+              } elseif (!$isYpositive && !$isXpositive) {
+                  // For Quadrant III
+                  // Nothing to do
+              } else {
+                  // For Quadrant IV
+                  // Nothing to do
+              }
+              imagettftext($this->Picture,$this->FontSize,$Angle,$XPos,$YPos,$C_TextColor,$this->FontName,$Value);
+              // post update XY position
+              if ($isYpositive && $isXpositive) {
+                  // For Quadrant I
+                  $XPos += $TextWidth;
+              } elseif ($isYpositive && !$isXpositive) {
+                  // For Quadrant II
+                  $XPos -= $TextWidth;
+              } elseif (!$isYpositive && !$isXpositive) {
+                  // For Quadrant III
+                  $YPos += $TextHeight;
+              } else {
+                  // For Quadrant IV
+                  $YPos += $TextHeight;
+              }
           }
          if ( $YMax < $YPos || $YMax == NULL ) { $YMax = $YPos; }
         }
@@ -637,10 +662,10 @@
     /* Write the X Axis caption if set */
     if ( isset($DataDescription["Axis"]["X"]) )
       {
-       $Position   = imageftbbox($this->FontSize,90,$this->FontName,$DataDescription["Axis"]["X"]);
+       $Position   = imageftbbox($this->FontSize, 0,$this->FontName,$DataDescription["Axis"]["X"]);
        $TextWidth  = abs($Position[2])+abs($Position[0]);
-       $TextLeft   = (($this->GArea_X2 - $this->GArea_X1) / 2) + $this->GArea_X1 + ($TextWidth/2);
-       imagettftext($this->Picture,$this->FontSize,0,$TextLeft,$YMax+$this->FontSize+5+$maxTextHeight,$C_TextColor,$this->FontName,$DataDescription["Axis"]["X"]);
+       $TextLeft   = (($this->GArea_X2 + $this->GArea_X1) / 2) - ($TextWidth/2);
+       imagettftext($this->Picture,$this->FontSize,0,$TextLeft,$YMax+$this->FontSize+5,$C_TextColor,$this->FontName,$DataDescription["Axis"]["X"]);
       }
     }
 

+ 2 - 2
plugin/dashboard/block_evaluation_graph/block_evaluation_graph.class.php

@@ -174,7 +174,7 @@ class BlockEvaluationGraph extends Block
                                 $data_set->GetDataDescription(),
                                 $angle
                             );
-                            $test->setGraphArea(50, 30, $this->bg_width-75, $test->YSize - 75);
+                            $test->setGraphArea(50, 30, $this->bg_width-75, $this->bg_height - 75);
                             $test->drawFilledRoundedRectangle(
                                 7,
                                 7,
@@ -297,7 +297,7 @@ class BlockEvaluationGraph extends Block
 							    $test = new pChart($this->bg_width,$this->bg_height);
 							    $test->setFontProperties(api_get_path(LIBRARY_PATH).'pchart/fonts/tahoma.ttf',8);
                                 $test->fixHeightByRotation($data_set->GetData(), $data_set->GetDataDescription(), $angle);
-                                $test->setGraphArea(50, 30, $this->bg_width-75, $test->YSize-75);
+                                $test->setGraphArea(50, 30, $this->bg_width-75, $this->bg_height-75);
                                 $test->drawFilledRoundedRectangle(
                                     7,
                                     7,