9 * @package Custom\Graph
10 * @author Sébastien Chazallet <sebastien.chazallet@laposte.net>
11 * @copyright 2011 InsPyration
12 * @license GNU GPL http://www.gnu.org/licenses/gpl.html
13 * @link http://zf2.biz
18 namespace Custom\Graph;
24 require_once 'jpgraph/jpgraph.php';
25 require_once 'jpgraph/jpgraph_pie.php';
26 require_once 'jpgraph/jpgraph_pie3d.php';
29 * Cette classe permet de créer aisément un diagramme.
31 * Elle rajoute des facilités telles que :
32 * > la gestion des métadonnées du graphique est laissé à la classe fille
33 * > la gestion des particularités offertes par la librairie dans des hooks
34 * > le passage automatisé à la case suivante (celle de droite)
35 * > le passage automatisé à la ligne suivante (celle du dessous)
36 * > la gestion des formats
39 * Elle permet d'aider à générer facilement des exports Excel,
40 * mais ne contient PAS de logique de présentation,
41 * conformément aux principes de séparation du code
43 * @category Components
44 * @package Custom\Export
45 * @author Sébastien Chazallet <sebastien.chazallet@laposte.net>
46 * @copyright 2011 InsPyration
47 * @license GNU GPL http://www.gnu.org/licenses/gpl.html
48 * @link http://zf2.biz
56 * Données affichées par le diagramme de gantt
59 protected $datas = array();
62 * Titre du graphique, si la méthode getTitle n'est pas surchargée
65 protected $title = "Titre du graphique";
68 * Légendes accompagnant chaque donnée
71 protected $legends = array();
74 * Permet de déterminer la largeur du graphique
80 * Permet de déterminer la hauteur du graphique
86 * Permet de déterminer si le graphiques est à plat ou 3D
89 protected $dim3D = false;
95 * @param array $datas données de base
96 * @param array $infos données textuelles
100 public function __construct ($datas, $legends)
102 $this->datas = $datas;
103 $this->legends = $legends;
105 $this->createDiagram();
109 * Méthode de création du diagramme
113 protected function createDiagram()
115 // Create the basic graph
116 $graph = new \PieGraph($this->x, $this->y);
120 $graph->title->Set($this->getTitle());
124 $oPie = new \PiePlot3D($this->datas);
126 $oPie = new \PiePlot($this->datas);
128 foreach($this->getSlices() as $s) {
129 $oPie->ExplodeSlice($s);
131 if ($this->getColors()) {
132 $oPie->SetSliceColors($this->getColors());
134 $oPie->SetLegends($this->legends);
135 $oPie->SetCenter(0.5);
136 $oPie->SetValueType(PIE_VALUE_ABS);
137 $oPie->value->SetFormat($this->getFormat());
141 $graph->legend->SetPos(0.5, 0.98, 'center', 'bottom');
143 // ... and stroke the graph
144 //$this->content = $graph->Stroke(_IMG_HANDLER);
150 * Méthode à surcharger pour définir des données à mettre en évidence
154 protected function getSlices()
160 * Méthode à surcharger pour définir des couleurs personnalisées
164 protected function getColors()
170 * Méthode à surcharger pour définir une format de données particulier
173 * Par défaut, c'est '%d', mais cela peut être 'total de %d parts'
177 protected function getFormat()
183 * Méthode à surcharger pour définir un titre.
185 * Utile lorsque le titre dépend de données variables.
186 * Si le titre est statique, autant se contenter de modifier la propriété
190 protected function getTitle()
196 * Méthode alternative permettant de définir un titre
198 * Utile lorsque l'on ne souhaite pas surcharger la classe courante.
202 public function setTitle($title)
204 $this->title = $title;