00001 <?php 00002 /*************************************************************************** 00003 * Copyright (C) 2008-2009 by Denis M. Gabaidulin * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the GNU Lesser General Public License as * 00007 * published by the Free Software Foundation; either version 3 of the * 00008 * License, or (at your option) any later version. * 00009 * * 00010 ***************************************************************************/ 00011 00015 class GoogleLineChart extends GoogleChart 00016 { 00017 protected $axesCollection = null; 00018 protected $style = null; 00019 protected $labelStyle = null; 00020 00024 public static function create() 00025 { 00026 return new self; 00027 } 00028 00029 public function __construct() 00030 { 00031 parent::__construct(); 00032 00033 $this->type = 00034 new GoogleChartType(GoogleChartType::LINE); 00035 00036 $this->color = GoogleChartColor::create(); 00037 00038 $this->legend = 00039 GoogleChartLegend::create()-> 00040 setPosition( 00041 GoogleChartLegendPositionType::create( 00042 GoogleChartLegendPositionType::BOTTOM 00043 ) 00044 ); 00045 00046 $this->data = 00047 GoogleChartData::create()-> 00048 setEncoding(GoogleChartDataTextEncoding::create())-> 00049 setDataScaling(); 00050 00051 $this->axesCollection = GoogleChartAxisCollection::create(); 00052 00053 $this->style = GoogleChartLineStyle::create(); 00054 00055 $this->labelStyle = GoogleChartLabelStyle::create(); 00056 } 00057 00061 public function addLine(GoogleChartLine $line) 00062 { 00063 $this->color->addColor($line->getColor()); 00064 $this->legend->addItem($line->getTitle()); 00065 $this->data->addDataSet($line->getValue()); 00066 00067 if ($style = $line->getStyle()) 00068 $this->style->addStyle($style); 00069 00070 if ($labelStyle = $line->getLabelStyle()) 00071 $this->labelStyle->addStyle( 00072 $labelStyle->setDataSetIndex($this->data->getCount() - 1) 00073 ); 00074 00075 return $this; 00076 } 00077 00081 public function setLegendPosition(GoogleChartLegendPositionType $type) 00082 { 00083 $this->legend->setPosition($type); 00084 00085 return $this; 00086 } 00087 00091 public function addAxis(GoogleChartAxis $axis) 00092 { 00093 $this->axesCollection->addAxis($axis); 00094 00095 return $this; 00096 } 00097 00098 public function toString() 00099 { 00100 $string = parent::toString(); 00101 00102 $string .= '&'.$this->axesCollection->toString(); 00103 00104 if ($this->style->hasStyles()) 00105 $string .= '&'.$this->style->toString(); 00106 00107 if ($this->labelStyle->hasStyles()) 00108 $string .= '&'.$this->labelStyle->toString(); 00109 00110 return $string; 00111 } 00112 } 00113 ?>