Merge pull request #436 from danbarretodev/CT7383

Fix CT#7383
1.9.x
Yannick Warnier 10 years ago
commit 9184a14ef8
  1. 78
      main/inc/lib/pchart/pChart.class.php
  2. 22
      plugin/dashboard/block_evaluation_graph/block_evaluation_graph.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"]
);
}
}

@ -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,

Loading…
Cancel
Save