* @version $Id$
* @access public
* @license http://opensource.org/licenses/gpl-3.0.html
*/
/**
* Warning : If a trailing whitespace is present in any embedded file (for example, a plugin file), this graph won't display
*/
include_once("../config/define.php");
include_once("../languages/fr/lang_dashboard.utf-8.php");
include_once("../dashboard/common.php");
// CAUTION : do not Turn on output buffering to prevent error on PDF / Word exports
// ob_start();
use CpChart\Data;
use CpChart\Draw;
use CpChart\Image;
//////////// Check Inclusion de pages ////////////
if (!class_exists('auth')){
include_once("../lib/lib_common.php");
ReloadIndex('admin');
}
////////////
/**
* Return max value for aggregated indicators
* @param $data
* @return mixed
*
*/
function get_max_value($data) {
$maxArray = [];
foreach ($data as $k => $valA) {
for ($j = 0; $j < count($valA); $j++) {
if(!isset($maxArray[$j])) $maxArray[$j] = $valA[$j];
else $maxArray[$j] += $valA[$j];
}
}
return max($maxArray);
}
function is_threshold_visible($thresholds) {
foreach ($thresholds as $threshold) {
if ($threshold != 0.123456789) return true;
}
return false;
}
// necessary because the file can be called with URL parameters or using a function (exports)
if(isset($_GET['scale_id'])) $scale_id=$_GET['scale_id'];
if(isset($_GET['id'])) $id=$_GET['id'];
if(isset($_GET['type'])) {
$type = $_GET['type'];
} else {
$type = 'auto';
}
// getting chart sizes from config file
list($width, $height) = explode('x', CHART_DEFAULT_SIZE);
// getting width and height if passed to url
if(isset($_GET['w'])) {
$width = $_GET['w'];
isset($_GET['h']) ? $height = $_GET['h'] : $height = round($width/1.4);
}
include_once("../class/class.sdi.php");
include_once(SQL.".inc.php");
// if display is passed to url we display it now
if(isset($_GET['display'])) {
generateGraphic($id, $scale_id, 'SCP', $type, true, $width, $height);
}
/**
*
* @param integer $id
* @param integer $scale_id
* @param string $type
* @param string $workingpath
*/
function generateGraphic($id, $scale_id, $status, $type, $display, $width, $height, $workingpath ='') {
global $sql_object;
$data = $sql_object->DBSelect(SQL_getInfoSdi($id));
if($data[0]['sdii_value_type'] == 'unique' && $data[0]['sdii_unique_mode'] == 'normal') {
return getSinglevalueGraphic($id, $scale_id, $status, $type, $display, $width, $height, $workingpath);
} else {
return getMultivaluesGraphic($id, $scale_id, $status, $type, $display, $width, $height, $workingpath);
}
}
function getMultivaluesGraphic($id, $scale_id, $status, $type, $display, $width, $height, $workingpath ='') {
global $sql_object;
global $lang;
// weg et indicator
$req_sdii=SQL_getInfoSdi($id);
$result_sdii = $sql_object->DBSelect($req_sdii);
// we get values
$value = $sql_object->DBSelect(SQL_getAllValue($status, $scale_id, $id, 'ASC'));
$value = add_cumulative_value($value, $result_sdii[0]); // we add 'sdiv_cumulative_value' attribute if needed
$unit=$result_sdii[0]['sdii_unit'];
$full_title=formatText($result_sdii[0]['sdii_name']);
$title=cutText($full_title, 50, 0);
// visualization type
if($type == 'auto') {
$type = $result_sdii[0]['sdii_detail_viz'];
}
$scaleMinVal = $scaleMaxVal = 0;
$months = [];
$a_labels = [];
$stacked_data = [];
$thresholds = [];
$meandata = []; // used only if $result_sdii[0]['sdii_multiple_type'] == 'mean'
$missing_values = [];
// print_r($result_sdii);
// echo "
";
//print_r($value);
// echo "
";
// we handle unique indicators with cumulative values
if($result_sdii[0]['sdii_value_type'] == 'unique' && $result_sdii[0]['sdii_unique_mode'] == 'cumulative') {
// IMPORTANT !!! We overwrite $result_sdii[0]['sdii_multiple_type'] with 'none' value because 'sum' will display stacked Chart !
$result_sdii[0]['sdii_multiple_type'] = 'none';
$tmpv = $tmpc = [];
$cumulative_value = 0;
foreach ($value as $key => $val) {
$cumulative_value += $val['sdiv_value'];
array_push($tmpv, $val['sdiv_value']);
array_push($tmpc, $cumulative_value);
// we set threshold
if (!is_null($val['sdiv_threshold'])) {
array_push($thresholds, $val['sdiv_threshold']);
} else {
array_push($thresholds, VOID); // http://wiki.pchart.net/doc.missing.points.html
}
// we get dates and format it based on indicator frequency
list($day, $month, $year) = explode('-', $val['date_p']);
if ($result_sdii[0]['sdii_frequency'] >= 365) $dateVal = $year;
elseif ($result_sdii[0]['sdii_frequency'] >= 30) $dateVal = $month. '-'.$year;
else $dateVal = $day . '-' .$month. '-'. substr($year, 2, 2);
array_push($months, $dateVal);
// we identify empty values
// IMPORTANT keep that test, because 'unique' values indicator with cumulative behavior enter that case !
if ($result_sdii[0]['sdii_value_type'] == 'unique' && is_null($val['sdiv_value'])) array_push($missing_values, $dateVal);
if ($result_sdii[0]['sdii_value_type'] == 'multiple') {
$data = unserialize($val['sdiv_multivalue']);
if(null_values_only($data)) array_push($missing_values, $dateVal);
}
}
array_push($a_labels, _t('dashboard', 'multivalue_value'), _t('dashboard', 'cumulative_value'));
$stacked_data[_t('dashboard', 'multivalue_value')] = $tmpv;
$stacked_data[_t('dashboard', 'cumulative_value')] = $tmpc;
}
// we handle multiple indicators
if($result_sdii[0]['sdii_value_type'] == 'multiple') {
// we get all distinct labels
for ($i = 0; $i < count($value); $i++) {
$data = unserialize($value[$i]['sdiv_multivalue']);
// we get dates and format it based on indicator frequency
list($day, $month, $year) = explode('-', $value[$i]['date_p']);
if ($result_sdii[0]['sdii_frequency'] >= 365) $dateVal = $year;
elseif ($result_sdii[0]['sdii_frequency'] >= 30) $dateVal = $month . '-' . $year;
else $dateVal = $day . '-' . $month . '-' . substr($year, 2, 2);
$months[$i] = $dateVal;
// we identify empty values
if(null_values_only($data)) {
array_push($missing_values, $dateVal);
}
foreach ($data as &$val) {
if (!in_array($val['label'], $a_labels)) {
array_push($a_labels, $val['label']);
}
}
// if set, we get it from the table
if (isset($data[0]['_mean'])) {
$meandata[$i] = $data[0]['_mean'];
}
// if set, we get it from the table
if (!is_null($value[$i]['sdiv_threshold'])) {
$thresholds[$i] = $value[$i]['sdiv_threshold'];
} else {
$thresholds[$i] = VOID; // http://wiki.pchart.net/doc.missing.points.html
}
}
// we loop on labels to prepare data for each of them
for ($k = 0; $k < count($a_labels); $k++) {
// we loop on values values
for ($i = 0; $i < count($value); $i++) {
$data = unserialize($value[$i]['sdiv_multivalue']);
$is_set = false; // flag to know id label is present or not
foreach ($data as &$val) {
if ($val['label'] == $a_labels[$k]) {
// we define the key as an array is not defined yet
if (!isset($stacked_data[$a_labels[$k]])) {
$stacked_data[$a_labels[$k]] = array();
}
// and we push the value into the nested array
array_push($stacked_data[$a_labels[$k]], (float)$val['value']);
// echo "
adding " . $val['value'] . " to " . $a_labels[$k]. " array
";
$is_set = true;
}
}
// if label is not found we set VOID value
if ($is_set === false) {
// we define the key as the array is not defined yet
if (!isset($stacked_data[$a_labels[$k]])) {
$stacked_data[$a_labels[$k]] = array();
}
array_push($stacked_data[$a_labels[$k]], VOID);
}
//echo "
---------------
";
}
}
// print_r($stacked_data);
if ($result_sdii[0]['sdii_multiple_mode'] == 'labels_on_abscissa') {
$stacked_dataAlt = [];
$arrMean = [];
// we iterate on $data to compute mean by labels
//for($i = 0; $i < count($stacked_data); $i ++) {
foreach ($stacked_data as $key => $value) {
array_push($arrMean, array_sum($value) / count($value));
}
// we prepare data as wanted
for ($m = 0; $m < count($months); $m++) {
// echo $months[$m].'
';
// we define the key as an array is not defined yet
$stacked_dataAlt[$months[$m]] = array(); // we have to init entry
foreach ($a_labels as $k => $v) {
// echo $months[$m]. ' - '.$stacked_data[$v][$m].'
';
array_push($stacked_dataAlt[$months[$m]], $stacked_data[$v][$m]);
}
}
// then we changes values to use the same piece of code to generate chart
$tmp = $a_labels;
$a_labels = $months;
$months = $tmp;
$stacked_data = $stacked_dataAlt;
$meandata = $arrMean;
}
}
/**
print_r($result_sdii);
echo "
";
echo "
Labels
";
print_r($a_labels);
echo "
Thresholds
";
print_r($thresholds);
echo "
Dates
";
print_r($months);
echo "
";
echo "
Meandata
";
print_r($meandata);
echo "
Stacked data
";
print_r($stacked_data);
echo "
Stacked data ALT
";
print_r($stacked_dataAlt);
echo "
Stacked data var dump
";
var_dump($stacked_data);
exit;
* */
/* Create and populate the pData object */
$MyData = new Data();
// ability for user to specify a palette for each individual indicator
$palette = override('../dashboard/palettes/'.$id. '.color');
if(file_exists($palette)) {
$MyData->loadPalette($palette, TRUE);
} else {
$MyData->loadPalette(override('../dashboard/palettes/default.color'), TRUE);
}
// we loop on labels
for ($k=0; $k';
$MyData->addPoints($stacked_data[$a_labels[$k]], $a_labels[$k]);
}
$MyData->setAxisName(0,$unit);
$MyData->addPoints($months,"Labels");
$MyData->setSerieDescription("Labels","Months");
$MyData->setAbscissa("Labels");
/* Create the pChart object */
$myPicture = new Image($width, $height, $MyData);
/* Set the default font properties */
$myPicture->setFontProperties(array("FontName"=>"../lib/fonts/verdana.ttf","FontSize"=>8,"R"=>120,"G"=>120,"B"=>120));
/* Draw the scale and the chart */
$size = $myPicture->getLegendSize(array("Style"=>LEGEND_ROUND,"Mode"=>LEGEND_VERTICAL));
$myPicture->setGraphArea($size["Width"] + 80, 40, $width - 20, $height - 60);
//$myPicture->drawScale(array("DrawSubTicks"=>TRUE,"Mode"=>SCALE_MODE_ADDALL_START0));
/* Draw the scale */
// we define $scaleMinVal / $scaleMaxVal based on data
foreach ($stacked_data as $k => $v) {
$tmpPos = max($v);
$tmpNeg = min($v);
if ($tmpNeg < $scaleMinVal) $scaleMinVal = $tmpNeg; // we define the min value to set scale boundaries
if ($tmpPos > $scaleMaxVal) $scaleMaxVal = $tmpPos; // we define the max value to set scale boundaries
}
// if 'sdii_multiple_type'] == 'sum' we overwrite max computation !
if($result_sdii[0]['sdii_multiple_type'] == 'sum') {
$tmpPos = get_max_value($stacked_data);
if ($tmpPos > $scaleMaxVal) $scaleMaxVal = $tmpPos; // we define the max value to set scale boundaries
}
if($scaleMinVal < 0) $scaleMinVal = floor($scaleMinVal/10)*10;
else $scaleMinVal = 0;
if(count($thresholds) > 0 && max($thresholds) > $scaleMaxVal) $scaleMaxVal = max($thresholds);
if(count($thresholds) > 0 && min($thresholds) < $scaleMinVal) $scaleMinVal = min($thresholds);
$AxisBoundaries = array(0=>array("Min"=> $scaleMinVal,"Max"=> ceil($scaleMaxVal * 1.1 /10)*10 ) );
// finally we override min value if specified in indicator definition
if(is_numeric($result_sdii[0]['sdii_force_chart_min'])) $AxisBoundaries = array(0=>array("Min"=> cast_number($result_sdii[0]['sdii_force_chart_min']),"Max"=> ceil($scaleMaxVal * 1.1 /10)*10 ) );
$scaleSettings = array(
// grid settings
"GridR" => 180,
"GridG" => 180,
"GridB" => 180,
"GridTicks" => 1,
"DrawSubTicks" => false, // ne pas afficher les entre ticks
"Mode" => SCALE_MODE_MANUAL, // SCALE_MODE_ADDALL // SCALE_MODE_FLOATING does not display all values because is not able to calculate sum values
"ManualScale" => $AxisBoundaries,
// axis color
"AxisR" => 200,
"AxisG" => 200,
"AxisB" => 200,
"CycleBackground" => true,
// background color 2
"BackgroundR2" => 240,
"BackgroundG2" => 240,
"BackgroundB2" => 240,
'LabelRotation' => 50,
"DrawArrows" => FALSE,
"GridAlpha" => 30,
"TickAlpha" => 40
);
$myPicture->drawScale($scaleSettings);
$myPicture->setShadow(FALSE);
$settings = array("Surrounding" => -15, "InnerSurrounding" => 15,
"Rounded" => false,
// "Interleave" =>.5,
"DisplayValues" => true, "DisplayR" => 80, "DisplayG" => 80, "DisplayB" => 80,
);
if($result_sdii[0]['sdii_multiple_type'] == 'sum') {
$myPicture->drawStackedBarChart($settings);
} else {
/*
$MyData = new Data();
foreach ($stacked_data as $k => $v) {
$MyData->addPoints($v,$k);
}
*/
if($type == 'column') $myPicture->drawBarChart($settings);
if($type == 'line') $myPicture->drawSplineChart($settings);
if($type == 'area') $myPicture->drawAreaChart($settings);
}
// print_r($meandata);
//exit;
if($result_sdii[0]['sdii_multiple_type'] == 'mean') {
$MyData->addPoints($meandata,_t('dashboard', 'multivalue_mean'));
$meanSettings = array("R"=>1,"G"=>1,"B"=>1);
$MyData->setPalette(_t('dashboard', 'multivalue_mean'), $meanSettings);
$MyData->setSerieDrawable(_t('dashboard', 'multivalue_mean'),TRUE);
for ($k=0; $ksetSerieDrawable($a_labels[$k],FALSE);
}
$MyData->setSerieTicks(_t('dashboard', 'multivalue_mean'),3);
$MyData->setSerieWeight(_t('dashboard', 'multivalue_mean'), 0.2);
// $MyData->setSerieDrawable($meandata,FALSE);
$myPicture->drawSplineChart();
$myPicture->drawPlotChart();
}
// We display threshold
if(count($thresholds) > 0) {
$thresholdsSettings = array("R"=>254,"G"=>148,"B"=>64);
$MyData->addPoints($thresholds,_t('dashboard', 'threshold_value'));
$MyData->setPalette(_t('dashboard', 'threshold_value'), $thresholdsSettings);
// $MyData->setSerieWeight(_t('dashboard', 'threshold_value'), 0.2);
$MyData->setSerieDrawable(_t('dashboard', 'threshold_value'), TRUE);
$MyData->setSerieDrawable(_t('dashboard', 'multivalue_mean'), FALSE);
// we loop on labels
for ($k = 0; $k < count($a_labels); $k++) {
$MyData->setSerieDrawable($a_labels[$k], FALSE);
}
}
$myPicture->drawSplineChart();
$myPicture->drawPlotChart();
/* Make sure all series are drawable before writing the legend */
$MyData->drawAll();
if(count($thresholds) == 0 || !is_threshold_visible($thresholds)) $MyData->setSerieDrawable(_t('dashboard', 'threshold_value'), FALSE);
if($result_sdii[0]['sdii_multiple_type'] != 'mean') $MyData->setSerieDrawable(_t('dashboard', 'multivalue_mean'),FALSE);
/* Write a label */
// $myPicture->writeLabel(array("Frontend #1","Frontend #2","Frontend #3"),2,array("DrawVerticalLine"=>TRUE));
/* Write the chart legend */
$myPicture->drawLegend(20, $height - ($size["Height"] + 50),array("Style"=>LEGEND_NOBORDER,"Mode"=>LEGEND_VERTICAL,"Style"=>LEGEND_ROUND, "Alpha"=>20, ""));
// we display a notice regarding missing values
if(count($missing_values) > 0) {
$notice = sprintf(_t('dashboard', 'no_data_notice'), join(', ', $missing_values));
$myPicture->setFontProperties(array("FontName"=>"../lib/fonts/verdana.ttf"));
$TextSettings = array("DrawBox"=>false,"R"=>255,"G"=>76,"B"=>76,"Angle"=>0,"FontSize"=>10, "Align" => TEXT_ALIGN_TOPLEFT);
$myPicture->drawText(55,15,$notice,$TextSettings);
}
/* Render the picture (choose the best way) */
if($display == true) {
/* Render the picture - display it */
$myPicture->autoOutput("simple.png");
} else {
/* Save the picture */
if(!file_exists($workingpath)) mkdir($workingpath);
$myPicture->render($workingpath.'/'.$id.'_'.$scale_id.'.png');
}
}
function getSinglevalueGraphic($id, $scale_id, $status, $type, $display, $width, $height, $workingpath) {
global $sql_object;
$missing_values = [];
// we get values
$req_sdiav=SQL_getAllValue($status, $scale_id, $id, 'ASC');
$value = $sql_object->DBSelect($req_sdiav);
$req_sdii=SQL_getInfoSdi($id);
$result_sdii = $sql_object->DBSelect($req_sdii);
$unit=$result_sdii[0]['sdii_unit'];
$full_title=formatText($result_sdii[0]['sdii_name']);
$title=cutText($full_title, 50, 0);
// visualization type
if($type == 'auto') {
$type = $result_sdii[0]['sdii_detail_viz'];
}
$thresholds = array();
for ($i=0; $i= 365) $dateVal = $year;
elseif ($result_sdii[0]['sdii_frequency'] >= 30) $dateVal = $month. '-'.$year;
else $dateVal = $day . '-' .$month. '-'. substr($year, 2, 2);
$months[$i] = $dateVal;
// we identify empty values
// IMPORTANT keep that test, because 'unique' values indicator with cumulative behavior enter that case !
if (is_null($value[$i]['sdiv_value'])) array_push($missing_values, $dateVal);
}
// print_r($thresholds); // debug thresholds
// exit;
/* Create and populate the pData object */
$MyData = new Data();
// $MyData->loadPalette("../lib/vendor/pChart-php7/palettes/blind.color",TRUE);
$MyData->setAxisName(0,$unit);
$MyData->addPoints($ydata,$full_title);
$MyData->addPoints($thresholds,_t('dashboard', 'threshold_value'));
$MyData->addPoints($months,"Dates");
$MyData->setSerieDescription($full_title,$unit);
$MyData->setAbscissa("Dates");
/* Create the pChart object */
$myPicture = new Image($width,$height,$MyData);
/* Turn of Antialiasing */
$myPicture->Antialias = TRUE;
/* Add a border to the picture */
// $myPicture->drawRectangle(0,0,499,349,array("R"=>180,"G"=>180,"B"=>180));
/* Set the default font */
$myPicture->setFontProperties(array("FontName"=>"../lib/fonts/verdana.ttf","FontSize"=>8,"R"=>120,"G"=>120,"B"=>120));
/* Define the chart area */
$myPicture->setGraphArea(50,40,$width-20,$height-60);
// we define $scaleMinVal / $scaleMaxVal based on data
$scaleMinVal = $scaleMaxVal = 0;
$scaleMaxVal = max($ydata);
if( min($ydata) < 0) $scaleMinVal = min($ydata);
if(max($thresholds) > $scaleMaxVal) $scaleMaxVal = max($thresholds);
if(min($thresholds) < $scaleMinVal) $scaleMinVal = min($thresholds);
$AxisBoundaries = array(0=>array("Min"=> $scaleMinVal, "Max"=> ceil($scaleMaxVal * 1.1 /10)*10 ) );
// finally we override min value if specified in indicator definition
if(is_numeric($result_sdii[0]['sdii_force_chart_min'])) $AxisBoundaries = array(0=>array("Min"=> cast_number($result_sdii[0]['sdii_force_chart_min']), "Max"=> ceil($scaleMaxVal * 1.1 /10)*10 ) );
/* Draw the scale */
$scaleSettings = array(
// grid settings
"GridR" => 180,
"GridG" => 180,
"GridB" => 180,
"GridTicks" => 1,
"DrawSubTicks" => false, // ne pas afficher les entre ticks
"Mode" => SCALE_MODE_MANUAL, // SCALE_MODE_FLOATING // SCALE_MODE_ADDALL prevent "non-numeric input" error with pChart-php7 see aroune line 2005 in /class/pDraw.class.php
"ManualScale" => $AxisBoundaries,
// axis color
"AxisR" => 200,
"AxisG" => 200,
"AxisB" => 200,
"CycleBackground" => true,
// background color 2
"BackgroundR2" => 240,
"BackgroundG2" => 240,
"BackgroundB2" => 240,
'LabelRotation' => 50,
"DrawArrows" => FALSE,
"GridAlpha" => 30,
"TickAlpha" => 40
);
$myPicture->drawScale($scaleSettings);
/* Draw the chart */
$myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10)); /* Turn on shadow computing */
$settings = array(
//"InnerBorderR"=>80, "InnerBorderG"=>80, "InnerBorderB"=>80,
//"BorderR"=>210, "BorderG"=>210, "BorderB"=>210,
// color and gradient settings
// "Rounded"=>true,
"DisplayColor"=> DISPLAY_MANUAL,
"DisplayR"=> 98, "DisplayG"=> 194,"DisplayB" => 204,
// "Gradient"=>TRUE,"GradientStartR"=>207,"GradientStartG"=>228,"GradientStartB"=>252,
"Gradient"=>FALSE,
// label settings
"DisplayValues"=>FALSE, "DisplayPos"=>LABEL_POS_OUTSIDE,"DisplayR"=>115,"DisplayG"=>115,"DisplayB"=>115,"DisplayOrientation"=>ORIENTATION_AUTO,
"DisplayShadow"=>FALSE,
"Draw0Line"=>FALSE,
//"Rounded"=>TRUE, // not working with gradient
"Surrounding"=>-30,
"InnerSurrounding"=>0);
/* Write the chart legend */
//$myPicture->drawLegend(50,5,array("Style"=>LEGEND_NOBORDER,"Mode"=>LEGEND_HORIZONTAL));
switch ($type) {
case 'line':
$MyData->setSerieDrawable($full_title,TRUE);
$MyData->setSerieDrawable(_t('dashboard', 'threshold_value'),FALSE);
// $thresholdsSettings = array("R"=>254,"G"=>148,"B"=>64); // Hexa : #FE9440
list($r, $g, $b) = sscanf($result_sdii[0]['sdii_tcolor'], "#%02x%02x%02x"); // convert hexadecimal to RGB
$thresholdsSettings = array("R"=>$r,"G"=>$g,"B"=>$b);
$MyData->setPalette(_t('dashboard', 'threshold_value'),$thresholdsSettings);
// $valuesSettings = array("R"=>36,"G"=>47,"B"=>74); // bleu foncé
// $valuesSettings = array("R"=>74,"G"=>192,"B"=>242); // bleu clair Hexa : #4AC0F2
list($r, $g, $b) = sscanf($result_sdii[0]['sdii_mcolor'], "#%02x%02x%02x"); // convert hexadecimal to RGB
$valuesSettings = array("R"=>$r,"G"=>$g,"B"=>$b);
$MyData->setPalette($full_title,$valuesSettings);
/**
* Do not activate because it creates aliasing
$MyData->setSerieTicks(_t('dashboard', 'threshold_value'),4);
$MyData->setSerieWeight(_t('dashboard', 'threshold_value'), 0.5);
$MyData->setSerieWeight($full_title, 1);
*/
//$MyData->setSerieWeight($full_title, 0.5); // will draw a 1px curve - not nice with drawSplineChart
//$myPicture->drawLineChart($settings);
$myPicture->drawSplineChart($settings);
$myPicture->drawPlotChart($settings);
/* Draw the line and plot chart */
$myPicture->setShadow(FALSE); /* Turn off shadow computing */
$MyData->setSerieDrawable(_t('dashboard', 'threshold_value'),TRUE);
$MyData->setSerieDrawable($full_title,FALSE);
$myPicture->drawSplineChart();
// $myPicture->drawLineChart($settings);
// $myPicture->drawPlotChart();
break;
case 'area':
$MyData->setSerieDrawable($full_title,TRUE);
$MyData->setSerieDrawable(_t('dashboard', 'threshold_value'),FALSE);
// $thresholdsSettings = array("R"=>254,"G"=>148,"B"=>64);
list($r, $g, $b) = sscanf($result_sdii[0]['sdii_tcolor'], "#%02x%02x%02x"); // convert hexadecimal to RGB
$thresholdsSettings = array("R"=>$r,"G"=>$g,"B"=>$b);
$MyData->setPalette(_t('dashboard', 'threshold_value'),$thresholdsSettings);
// $valuesSettings = array("R"=>137,"G"=>214,"B"=>244, "Alpha"=>100); // bleu clair
list($r, $g, $b) = sscanf($result_sdii[0]['sdii_mcolor'], "#%02x%02x%02x"); // convert hexadecimal to RGB
$valuesSettings = array("R"=>$r,"G"=>$g,"B"=>$b);
$MyData->setPalette($full_title,$valuesSettings);
// il faut utiliser les seuils pour choisir la couleur de remplissage
list($r, $g, $b) = sscanf($result_sdii[0]['sdii_mcolor'], "#%02x%02x%02x"); // convert hexadecimal to RGB
//$Threshold[0] = array("Min"=>-9999,"Max"=>99999999999,"R"=>$r,"G"=>$g,"B"=>$b,"Alpha"=>80);
$Threshold[0] = array("Min"=>-9999,"Max"=>99999999999,"R"=>137,"G"=>214,"B"=>244,"Alpha"=>80);
$myPicture->drawAreaChart(array("Threshold"=>$Threshold));
/* Draw the line and plot chart */
$myPicture->setShadow(FALSE); /* Turn off shadow computing */
$MyData->setSerieDrawable(_t('dashboard', 'threshold_value'),TRUE);
$MyData->setSerieDrawable($full_title,FALSE);
$myPicture->drawSplineChart();
//$myPicture->drawLineChart();
$myPicture->drawPlotChart();
break;
default: // 'column' type
$MyData->setSerieDrawable($full_title,TRUE);
$MyData->setSerieDrawable(_t('dashboard', 'threshold_value'),FALSE);
// $thresholdsSettings = array("R"=>254,"G"=>148,"B"=>64);
list($r, $g, $b) = sscanf($result_sdii[0]['sdii_tcolor'], "#%02x%02x%02x"); // convert hexadecimal to RGB
$thresholdsSettings = array("R"=>$r,"G"=>$g,"B"=>$b);
$MyData->setPalette(_t('dashboard', 'threshold_value'),$thresholdsSettings);
// $valuesSettings = array("R"=>207,"G"=>228,"B"=>252);
// $valuesSettings = array("R"=>98,"G"=>194,"B"=>204); # azur
// $valuesSettings = array("R"=>74,"G"=>192,"B"=>242, "Alpha"=> 100); // bleu clair
// $valuesSettings = array("R"=>137,"G"=>214,"B"=>244, "Alpha"=> 100); // bleu clair
list($r, $g, $b) = sscanf($result_sdii[0]['sdii_mcolor'], "#%02x%02x%02x"); // convert hexadecimal to RGB
$valuesSettings = array("R"=>$r,"G"=>$g,"B"=>$b, "Alpha"=> 90);
$MyData->setPalette($full_title,$valuesSettings);
$myPicture->drawBarChart($settings);
/* Draw the line and plot chart */
$myPicture->setShadow(FALSE); /* Turn off shadow computing */
$MyData->setSerieDrawable(_t('dashboard', 'threshold_value'),TRUE);
$MyData->setSerieDrawable($full_title,FALSE);
$myPicture->drawSplineChart();
$myPicture->drawPlotChart();
break;
}
// we display a notice regarding missing values
if(count($missing_values) > 0) {
$notice = sprintf(_t('dashboard', 'no_data_notice'), join(', ', $missing_values));
$myPicture->setFontProperties(array("FontName"=>"../lib/fonts/verdana.ttf"));
$TextSettings = array("DrawBox"=>false,"R"=>255,"G"=>76,"B"=>76,"Angle"=>0,"FontSize"=>10, "Align" => TEXT_ALIGN_TOPLEFT);
$myPicture->drawText(55,15,$notice,$TextSettings);
}
if($display == true) {
/* Render the picture - display it */
$myPicture->autoOutput("simple.png");
} else {
/* Save the picture */
if(!file_exists($workingpath)) mkdir($workingpath);
$myPicture->render($workingpath.'/'.$id.'_'.$scale_id.'.png');
}
return true;
}
?>