Fixes to google chart and other minor items

This commit is contained in:
Deon George
2011-10-13 17:53:43 +11:00
parent dce2daddc4
commit f2fed0c54f
7 changed files with 51 additions and 21 deletions

View File

@@ -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();
}