# GoogleChart.class.php

Go to the documentation of this file.

    00001 <?php
    00002 /***************************************************************************
    00003  *   Copyright (C) 2008 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 GoogleChart implements Stringable
    00016     {
    00017         const BASE_URL = 'http://chart.apis.google.com/chart?';
    00018
    00019         protected $color    = null;
    00020         protected $size     = null;
    00021         protected $type     = null;
    00022         protected $label    = null;
    00023         protected $data     = null;
    00024         protected $legend   = null;
    00025         protected $title    = null;
    00026         protected $fillers  = null;
    00027
    00031         public static function create()
    00032         {
    00033             return new self;
    00034         }
    00035
    00036         public function __construct()
    00037         {
    00038             $this->fillers = GoogleChartSolidFillCollection::create();
    00039         }
    00040
    00044         public function setColor(GoogleChartColor $color)
    00045         {
    00046             $this->color = $color;
    00047
    00048             return $this;
    00049         }
    00050
    00054         public function setSize(GoogleChartSize $size)
    00055         {
    00056             $this->size = $size;
    00057
    00058             return $this;
    00059         }
    00060
    00064         public function setType(GoogleChartType $type)
    00065         {
    00066             $this->type = $type;
    00067
    00068             return $this;
    00069         }
    00070
    00074         public function setLabel(GoogleChartLabel $label)
    00075         {
    00076             $this->label = $label;
    00077
    00078             return $this;
    00079         }
    00080
    00084         public function setData(GoogleChartData $data)
    00085         {
    00086             $this->data = $data;
    00087
    00088             return $this;
    00089         }
    00090
    00091         public function getData()
    00092         {
    00093             return $this->data;
    00094         }
    00095
    00099         public function setLegend(GoogleChartLegend $legend)
    00100         {
    00101             $this->legend = $legend;
    00102
    00103             return $this;
    00104         }
    00105
    00109         public function setTitle($title)
    00110         {
    00111             $this->title = GoogleChartTitle::create($title);
    00112
    00113             return $this;
    00114         }
    00115
    00116         public function addChartAreaFiller(Color $color)
    00117         {
    00118             $this->fillers->addFiller(
    00119                 GoogleChartSolidFillType::create(
    00120                     GoogleChartSolidFillType::CHART_AREA
    00121                 ),
    00122                 $color
    00123             );
    00124
    00125             return $this;
    00126         }
    00127
    00128         public function addBackgroundFiller(Color $color)
    00129         {
    00130             $this->fillers->addFiller(
    00131                 GoogleChartSolidFillType::create(
    00132                     GoogleChartSolidFillType::BACKGROUND
    00133                 ),
    00134                 $color
    00135             );
    00136
    00137             return $this;
    00138         }
    00139
    00140         public function addTransparencyFiller(Color $color)
    00141         {
    00142             $this->fillers->addFiller(
    00143                 GoogleChartSolidFillType::create(
    00144                     GoogleChartSolidFillType::TRANSPARENCY
    00145                 ),
    00146                 $color
    00147             );
    00148
    00149             return $this;
    00150         }
    00151
    00152         public function toString()
    00153         {
    00154             $url = self::BASE_URL;
    00155
    00156             Assert::isNotNull($this->type);
    00157             $parameters[] = $this->type->toString();
    00158
    00159             Assert::isNotNull($this->size);
    00160             $parameters[] = $this->size->toString();
    00161
    00162             Assert::isNotNull($this->color);
    00163             $parameters[] = $this->color->toString();
    00164
    00165             Assert::isNotNull($this->data);
    00166             $parameters[] = $this->data->toString();
    00167
    00168             if ($this->legend)
    00169                 $parameters[] = $this->legend->toString();
    00170
    00171             if ($this->label)
    00172                 $parameters[] = $this->label->toString();
    00173
    00174             if ($this->title)
    00175                 $parameters[] = $this->title->toString();
    00176
    00177             if ($this->fillers->hasFillers())
    00178                 $parameters[] = $this->fillers->toString();
    00179
    00180             $url .= implode('&', $parameters);
    00181
    00182             return $url;
    00183         }
    00184     }
    00185 ?>