2011-04-18 Sergio Martin <sergio.martin@artica.es>

* include/graphs/functions_pchart.php
	include/graphs/functions_fsgraph.php
	include/graphs/fgraph.php: Fixed bar graphs margins
	Fixed horizontal flash bar



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@4234 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
zarzuelo 2011-04-18 10:30:45 +00:00
parent 2f16fc02ca
commit 4a0f467d0e
4 changed files with 106 additions and 50 deletions

View File

@ -1,3 +1,10 @@
2011-04-18 Sergio Martin <sergio.martin@artica.es>
* include/graphs/functions_pchart.php
include/graphs/functions_fsgraph.php
include/graphs/fgraph.php: Fixed bar graphs margins
Fixed horizontal flash bar
2011-04-18 Sergio Martin <sergio.martin@artica.es>
* include/graphs/functions_pchart.php

View File

@ -265,7 +265,7 @@ function polar_graph($flash_chart, $chart_data, $width, $height, $no_data_image)
function hbar_graph($flash_chart, $chart_data, $width, $height, $color = array(),
$legend = array(), $xaxisname = "", $yaxisname = "", $force_height = true, $homedir="") {
if($flash_chart) {
echo fs_hbar_chart (array_values($chart_data), array_keys($chart_data), $width, $height);
echo fs_2d_hcolumn_chart ($chart_data, $width, $height);
}
else {
$graph = array();

View File

@ -518,26 +518,6 @@ function fs_2d_pie_chart ($data, $names, $width, $height, $background = "EEEEEE"
return get_chart_code2 ($chart, $width, $height, 'include/graphs/FusionCharts/FCF_Pie2D.swf');
}
// Prints a BAR Horizontalchart
function fs_hbar_chart ($data, $names, $width, $height) {
if (sizeof ($data) != sizeof ($names)) {
return;
}
// Generate the XML
$chart = new FusionCharts("Bar2D", $width, $height);
$chart->setSWFPath("include/graphs/FusionCharts/");
$params="showNames=1;showValues=0;showPercentageValues=0;baseFontSize=9;rotateNames=1;chartLeftMargin=0;chartRightMargin=0;chartBottomMargin=0;chartTopMargin=0;showBarShadow=1;showLimits=1";
$chart->setChartParams($params);
for ($i = 0; $i < sizeof ($data); $i++) {
$chart->addChartData($data[$i], 'name=' . clean_flash_string($names[$i]));
}
// Return the code
return get_chart_code2 ($chart, $width, $height, 'include/graphs/FusionCharts/FCF_Bar2D.swf');
}
// Returns a 2D column chart
function fs_2d_column_chart ($data, $width, $height) {
if (sizeof ($data) == 0) {
@ -613,6 +593,82 @@ function fs_2d_column_chart ($data, $width, $height) {
return get_chart_code ($chart, $width, $height, 'include/graphs/FusionCharts/FCF_Column2D.swf');
}
// Returns a BAR Horizontalchart
function fs_2d_hcolumn_chart ($data, $width, $height) {
if (sizeof ($data) == 0) {
return;
}
// Generate the XML
$chart = new FusionCharts('Bar2D', $width, $height);
$pixels_between_xdata = 25;
$max_xdata_display = round($width / $pixels_between_xdata);
$ndata = count($data);
if($max_xdata_display > $ndata) {
$xdata_display = $ndata;
}
else {
$xdata_display = $max_xdata_display;
}
$step = round($ndata/$xdata_display);
if(is_array(reset($data))) {
$data2 = array();
$count = 0;
foreach($data as $i =>$values) {
$count++;
$show_name = '0';
if (($count % $step) == 0) {
$show_name = '1';
}
$chart->addCategory($i, //'');
'hoverText=' . $i .
';showName=' . $show_name);
$c = 0;
foreach($values as $i2 => $value) {
$data2[$i2][$i] = $value;
$c++;
}
}
$data = $data2;
}
else {
$data = array($data);
}
$empty = 0;
$num_vlines = 0;
$count = 0;
foreach ($data as $legend_value => $values) {
foreach($values as $name => $value) {
if (($count++ % $step) == 0) {
$show_name = '1';
$num_vlines++;
} else {
$show_name = '0';
}
if ($value > 0) {
$empty = 0;
}
$chart->addChartData($value, 'name=' . clean_flash_string($name) . ';showName=' . $show_name/* . ';color=95BB04'*/);
}
}
$params='showNames=1;showValues=0;showPercentageValues=0;baseFontSize=9;rotateNames=1;chartLeftMargin=0;chartRightMargin=0;chartBottomMargin=0;chartTopMargin=0;showBarShadow=1;showLimits=1';
$chart->setChartParams($params.';numVDivLines='.$num_vlines.($empty == 1 ? ';yAxisMinValue=0;yAxisMaxValue=1' : ''));
// Return the code
return get_chart_code ($chart, $width, $height, 'include/graphs/FusionCharts/FCF_Bar2D.swf');
}
// Returns a 3D column chart
function fs_3d_column_chart ($data, $width, $height) {
if (sizeof ($data) == 0) {

View File

@ -484,43 +484,36 @@ function pch_bar_graph ($graph_type, $index, $data, $width, $height, $font, $ant
/* Draw the scale */
// TODO: AvoidTickWhenEmpty = FALSE When the distance between two ticks will be less than 50 px
// TODO: AvoidTickWhenEmpty = TRUE When the distance between two ticks will be greater than 50 px
switch($graph_type) {
case "vbar":
$scaleSettings = array("AvoidTickWhenEmpty" => FALSE, "AvoidGridWhenEmpty" => FALSE, "GridR"=>200,"GridG"=>200,"GridB"=>200,"DrawSubTicks"=>TRUE,"CycleBackground"=>TRUE, "Mode"=>SCALE_MODE_START0, "LabelRotation" => 60);
$leftmargin = 40;
break;
case "hbar":
$scaleSettings = array("GridR"=>200,"GridG"=>200,"GridB"=>200,"DrawSubTicks"=>TRUE,"CycleBackground"=>TRUE, "Mode"=>SCALE_MODE_START0, "Pos"=>SCALE_POS_TOPBOTTOM, "LabelValuesRotation" => 60);
//Calculate the bottom margin from the size of string in each index
$max_chars = 0;
foreach ($index as $string_index) {
if (empty($string_index)) continue;
$len = strlen($string_index);
if ($len > $max_chars) {
$max_chars = $len;
}
}
$leftmargin = 5 * $max_chars;
break;
}
//Calculate the top margin from the size of string in each index
$max_chars = 0;
foreach ($index as $string_index) {
if (empty($string_index)) continue;
$len = strlen($string_index);
if ($len > $max_chars) {
$max_chars = $len;
}
if (empty($string_index)) continue;
$len = strlen($string_index);
if ($len > $max_chars) {
$max_chars = $len;
}
}
$margin_top = 10 * $max_chars;
switch($graph_type) {
case "vbar":
$scaleSettings = array("AvoidTickWhenEmpty" => FALSE, "AvoidGridWhenEmpty" => FALSE, "GridR"=>200,"GridG"=>200,"GridB"=>200,"DrawSubTicks"=>TRUE,"CycleBackground"=>TRUE, "Mode"=>SCALE_MODE_START0, "LabelRotation" => 60);
$margin_left = 40;
$margin_top = 10;
$margin_bottom = 8 * $max_chars;
break;
case "hbar":
$scaleSettings = array("GridR"=>200,"GridG"=>200,"GridB"=>200,"DrawSubTicks"=>TRUE,"CycleBackground"=>TRUE, "Mode"=>SCALE_MODE_START0, "Pos"=>SCALE_POS_TOPBOTTOM, "LabelValuesRotation" => 60);
$margin_left = 5 * $max_chars;
$margin_top = 40;
$margin_bottom = 10;
break;
}
/* Define the chart area */
$myPicture->setGraphArea($leftmargin,$margin_top,$width,$height-80);
$myPicture->setGraphArea($margin_left,$margin_top,$width,$height-$margin_bottom);
$myPicture->drawScale($scaleSettings);