Fixes to google chart and other minor items
This commit is contained in:
@@ -115,7 +115,7 @@ class GoogleChart implements Iterator,Countable {
|
||||
return $this->render();
|
||||
}
|
||||
catch (Exception $e) {
|
||||
echo Kohana::debug($e);
|
||||
echo Debug::vars($e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -138,13 +138,10 @@ class GoogleChart implements Iterator,Countable {
|
||||
if (! in_array($data['axis'],array('x','r')))
|
||||
throw new Kohana_Exception('Unknown data type :type',array(':type'=>$data['axis']));
|
||||
|
||||
$m = 0;
|
||||
if (is_array($data['data'])) {
|
||||
foreach ($data['data'] as $title => $values) {
|
||||
$this->numseries++;
|
||||
|
||||
$m += max($values);
|
||||
|
||||
$this->chartdata['legend'][$this->numseries] = $title;
|
||||
$this->chartdata['axis'][$data['axis']][] = $this->numseries;
|
||||
|
||||
@@ -155,9 +152,6 @@ class GoogleChart implements Iterator,Countable {
|
||||
throw new Kohana_Exception('Series data needs to be an array');
|
||||
}
|
||||
|
||||
if (! isset($this->chartdata['max'][$data['axis']]) OR ($m > $this->chartdata['max'][$data['axis']]))
|
||||
$this->chartdata['max'][$data['axis']] = $m*1.1; // @todo This inflation should be configurable.
|
||||
|
||||
} else {
|
||||
throw new Kohana_Exception('Series data needs to be an array');
|
||||
}
|
||||
@@ -228,12 +222,13 @@ class GoogleChart implements Iterator,Countable {
|
||||
|
||||
$sd = $max = array();
|
||||
foreach ($this->plotdata as $label => $seriesdata)
|
||||
foreach ($seriesdata as $type => $data)
|
||||
foreach ($seriesdata as $type => $data) {
|
||||
foreach ($data as $key => $value) {
|
||||
$sd[$key][$label] = $value;
|
||||
$max[$key] = $this->chartdata['max'][$type];
|
||||
$invs[$type][$key] = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($sd as $k => $v)
|
||||
array_push($sreturn,$this->encode($v,$max[$k]));
|
||||
@@ -262,9 +257,9 @@ class GoogleChart implements Iterator,Countable {
|
||||
|
||||
// Render
|
||||
$output .= sprintf('<img src="%s?%s" alt="%s">',$this->url,http_build_query($this->build()),_('Traffic Summary'));
|
||||
// $output .= Kohana::debug($this->build());
|
||||
// $output .= Kohana::debug($this->chartdata);
|
||||
// $output .= Kohana::debug($this->plotdata);
|
||||
// $output .= Debug::vars($this->build());
|
||||
// $output .= Debug::vars($this->chartdata);
|
||||
// $output .= Debug::vars($this->plotdata);
|
||||
|
||||
// Toggle the display of the chart.
|
||||
// @todo This JS should be placed elsewhere for HTML validation
|
||||
@@ -326,11 +321,39 @@ class GoogleChart implements Iterator,Countable {
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Some pre-render processing
|
||||
*/
|
||||
private function process() {
|
||||
$max = array();
|
||||
|
||||
// Work out our maximum number for each series.
|
||||
foreach ($this->plotdata as $label => $seriesdata) {
|
||||
|
||||
foreach ($seriesdata as $type => $data) {
|
||||
$c = 0;
|
||||
foreach ($data as $value)
|
||||
$c += $value;
|
||||
|
||||
// Scale up our max, so we get some extra space at the top of our chart.
|
||||
// @todo This should be configurable.
|
||||
$c *= 1.1;
|
||||
|
||||
if (! isset($this->chartdata['max'][$type]))
|
||||
$this->chartdata['max'][$type] = $c;
|
||||
else
|
||||
$this->chartdata['max'][$type] = ($c > $this->chartdata['max'][$type]) ? $c : $this->chartdata['max'][$type];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the chart
|
||||
*/
|
||||
private function build() {
|
||||
if ($this->plotdata)
|
||||
if ($this->plotdata) {
|
||||
$this->process();
|
||||
|
||||
return array(
|
||||
'chf'=>'bg,s,FFFFFF00',
|
||||
'cht'=>$this->chart_type,
|
||||
@@ -347,7 +370,8 @@ class GoogleChart implements Iterator,Countable {
|
||||
'chxl'=>$this->series_x_labels(),
|
||||
'chxr'=>$this->series_scale(),
|
||||
);
|
||||
else
|
||||
|
||||
} else
|
||||
return array();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user