diff --git a/main/inc/lib/pchart/pChart.class.php b/main/inc/lib/pchart/pChart.class.php index 45b56cdc04..e489a3246d 100755 --- a/main/inc/lib/pchart/pChart.class.php +++ b/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,51 @@ } 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; } } @@ -635,12 +668,21 @@ } /* Write the X Axis caption if set */ - if ( isset($DataDescription["Axis"]["X"]) ) - { - $Position = imageftbbox($this->FontSize,90,$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"]); + if (isset($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) - ($TextWidth/2); + imagettftext( + $this->Picture, + $this->FontSize, + 0, + $TextLeft, + $YMax+$this->FontSize+5, + $C_TextColor, + $this->FontName, + $DataDescription["Axis"]["X"] + ); } } diff --git a/plugin/dashboard/block_evaluation_graph/block_evaluation_graph.class.php b/plugin/dashboard/block_evaluation_graph/block_evaluation_graph.class.php index 6e93224ef8..1ba19a74a5 100755 --- a/plugin/dashboard/block_evaluation_graph/block_evaluation_graph.class.php +++ b/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, @@ -294,15 +294,19 @@ class BlockEvaluationGraph extends Block } else { // Initialise the graph $angle = -30; - $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 = 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, $this->bg_height - 75); $test->drawFilledRoundedRectangle( 7, 7, - $this->bg_width-20, - $test->YSize-20, + $this->bg_width - 20, + $test->YSize - 20, 5, 240, 240, @@ -311,8 +315,8 @@ class BlockEvaluationGraph extends Block $test->drawRoundedRectangle( 5, 5, - $this->bg_width-18, - $test->YSize-18, + $this->bg_width - 18, + $test->YSize - 18, 5, 230, 230,