gestion des graphiques

This commit is contained in:
Damien LASSERRE 2011-05-24 07:23:35 +00:00
parent 170798805e
commit 82fa9791d2

View File

@ -0,0 +1,246 @@
<?php
require_once('ChartDirector/phpchartdir.php');
Class Graphique
{
private $pathToImageCache;
public function __construct($pathImageCache)
{
$this->pathToImageCache = $pathImageCache;
}
protected function chechIfExists($nom)
{
if(file_exists($this->pathToImageCache.$nom))
return (true);
return (false);
}
/**
* Permet de connaitre les valeur par default pour les différents graphique.
* Enter description here ...
*/
protected function getDefault()
{
/**
* Paramétres par default Graphique XY
**/
$default = new stdClass();
$default->XY->width = 350;
$default->XY->height = 250;
$default->XY->setPlotArea = array(55, 10, 280, 200);
$default->XY->yAxisWidth = 2;
$default->XY->xAxisWidth = 2;
$default->XY->legendeParams = array(50, 10, false, "times.ttf", 9);
$default->XY->colorLegende = 0xff0000;
$default->XY->setLabelStep = 10;
/**
* Paramétres par default Graphique PieChart
**/
$default->PieChart->width = 660;
$default->PieChart->height = 243;
$default->PieChart->title->police = "timesbi.ttf";
$default->PieChart->title->size = 15;
$default->PieChart->Xround = round($default->PieChart->width / 2);
$default->PieChart->Yround = round($default->PieChart->height / 2);
$default->PieChart->radius = 90;
$default->PieChart->setRoundedCorners = 5;
$default->PieChart->setLineColor = array(SameAsMainColor, 0x000000);
$default->PieChart->setStartAngle = 135;
$default->PieChart->setLabelFormat = "<*block,valign=absmiddle*>{label} <*font=".$default->PieChart->title->police.",size=0*>({percent|0}%)";
$default->PieChart->set3D = 20;
$default->PieChart->getHTMLImageMap = array("", "", "name='{label}' title='<b>{label}</b><br />{value|0} K.Euros' class='detailsgraphique'");
$default->PieChart->makeSession = "chart1";
/**
* Paramétres par default Graphique FinanceChart
**/
$default->financeChart->width = 640;
$default->financeChart->title = "Graphique financié";
$default->financeChart->addSlowStochastic = array(75, 14, 3, 0x006060, 0x606000);
$default->financeChart->addMainChart = 240;
$default->financeChart->addSimpleMovingAvg = array(array(10, 0x663300), array(20, 0x9900ff));
$default->financeChart->addCandleStick = array(array(0x00ff00, 0xff000));
$default->financeChart->addDonchianChannel = array(array(20, 0x9999ff, 0xc06666ff));
$default->financeChart->addVolBars = array(array(75, 0x99ff99, 0xff9999, 0x808080));
$default->financeChart->addMACD = array(array(75, 26, 12, 9, 0x0000ff, 0xff00ff, 0x008000));
$default->financeChart->getHTMLImageMap = array("", "", "name='' title='{value|0} K.Euros' class='detailsgraphique'");
return ($default);
}
public function getValueDefault($type)
{
print_r(self::getDefault()->$type);
}
/**
* $parametres->nom = le nom final de l'image exemple : "552152365-C-actif.png"
* $parametres->width = la largeur de l'image.
* $parametres->height = la hauteur de l'image.
* $parametres->plotArea = "exemple" : array(55, 10, 280, 200) doit être un tableau.
* $parametres->TitleY = array("Keuros"); Les titre sur les coté du graphique.
* $parametres->TitleX = array("Années"); Les titres sur les coté du graphique.
* $parametres->yAxisWidth = 2;
* $parametres->xAxisWidth = 2;
* $parametres->legendeParams = array(50, 10, false, "times.ttf", 9); les paramètres des legendes doit être un tableau !
* $parametres->colorLegende = la couleur du texte de la legende, 0xff0000 par default.
* $parametres->LineLayer = array("Entreprise", "Secteur");
* - les legendes des courbes du graphique.
* - (sachant que chaque legende est assigner a un tableau de valeur).
* - Le tableau des datas doit être dans le meme ordre que l'ordre des titres ! IMPORTANT !
* $parametres->setLabelStep = 10 par default.
* $parametres->labelsY = Les labels en Y exemple les dates (2008, 2004, 2003, 2002, 2001);
* $parametres->labelsX = Les labels en X exemple les chiffre (20K, 30K, 50K)
* - En laissant vide ces champs le système les créras automatiquement.
*
* @param stdClass $parametres
* @param bool $default
*/
public function GraphiqueLineXY($parametres, $default = false)
{
$i = 0;
if(!self::chechIfExists($parametres->nom)) {
$chart = new XYChart(((!$default)?$parametres->width:self::getDefault()->XY->width),
((!$default)?$parametres->height:self::getDefault()->XY->height));
$chart->setPlotArea(((!$default)?$parametres->setPlotArea[0]:self::getDefault()->XY->setPlotArea[0]),
((!$default)?$parametres->setPlotArea[1]:self::getDefault()->XY->setPlotArea[1]),
((!$default)?$parametres->setPlotArea[2]:self::getDefault()->XY->setPlotArea[2]),
((!$default)?$parametres->setPlotArea[3]:self::getDefault()->XY->setPlotArea[3]));
foreach ($parametres->TitlesY as $titleY) $chart->yAxis->setTitle($titleY);
foreach ($parametres->TitlesX as $titleX) $chart->xAxis->setTitle($titleX);
$chart->yAxis->setWidth(((!$default)?$parametres->yAxisWidth:self::getDefault()->XY->yAxisWidth));
$chart->xAxis->setWidth(((!$default)?$parametres->xAxisWidth:self::getDefault()->XY->xAxisWidth));
$legendObj = $chart->addLegend(((!$default)?$parametres->legendeParams[0]:self::getDefault()->XY->legendeParams[0]),
((!$default)?$parametres->legendeParams[1]:self::getDefault()->XY->legendeParams[1]),
((!$default)?$parametres->legendeParams[2]:self::getDefault()->XY->legendeParams[2]),
((!$default)?$parametres->legendeParams[3]:self::getDefault()->XY->legendeParams[3]));
$legendObj->setBackground(Transparent);
foreach ($parametres->LineLayer as $lineLayer) {$chart->addLineLayer($parametres->datas[$i],
((isset($parametres->colorLegende->$lineLayer))?$parametres->colorLegende->$lineLayer:self::getDefault()->XY->colorLegende),
$lineLayer);$i++;}
$chart->yAxis->setLabels($parametres->labelsY);
$chart->yAxis->setLabelStep(((!$default)?$parametres->setLabelStep:self::getDefault()->XY->setLabelStep));
$chart->xAxis->setLabels($parametres->labelsX);
$chart->makeChart($this->pathToImageCache.$parametres->nom);
}
return ($this->pathToImageCache.$parametres->nom);
}
/**
* $parametres->nom = le nom final de l'image exemple : "552152365-C-actif.png"
* $parametres->width = largeur de l'image du graphique
* $parametres->height = la hauteur de l'images du graphique
* $parametres->title->texte = le texte de l'image du graphique ex : actif pour la période de...
* $parametres->title->police = la police utilisé ex : timesbi.ttf
* $parametres->title->size = la taille de la police pour le titre du graphique
* $parametres->setPieSize = array(round(width/2), round(height/2), radius);
* - La largeur / 2 arrondie
* - La hauteur divisé par 2 arrondie
* - Le radius. ex: (90)
* $parametres->setRoundedCorners = une valeur ex : 5
* $parametres->setLineColor = array(SameAsMainColor, 0x000000).
* $parametres->setStartAngle = 135 (angle du camanbert par default).
* $parametres->setLabelFormat = "html..." le code de formatage de la ligne
* - exemple : <*block,valign=absmiddle*>{label} <*font=timesbi.ttf,size=0*>
* $parametres->setData = array($data, $labels) les données et les labels correspondants.
* $parametres->set3D = 20 (permet de definir la profondeur 3d.).
* $parametres->makeSession = "chart1" les nom de la session.
* $parametres->getHTMLImageMap = array("", "", "name='{label}' title='<b>{label}</b><br />{value|0} K.Euros' class='detailsgraphique'");
* - Les parametres pour les area comment formater chaque tootltip.
*
* Cette méthode retourne une stdClass() avec les parametres imageMap et chartID.
*
* @param stdClass $parametres
* @param bool $default
*/
public function GraphiquePieChart($parametres, $default = false)
{
$return = new stdClass();
$pieChart = new PieChart(((!$default)?$parametres->width:self::getDefault()->PieChart->width),
((!$default)?$parametres->height:self::getDefault()->PieChart->height));
$pieChart->addTitle($parametres->title->texte,
(!$default)?$parametres->title->police:self::getDefault()->PieChart->title->police,
(!$default)?$parametres->title->size:self::getDefault()->PieChart->title->size);
$pieChart->setPieSize((!$default)?$parametres->Xround:self::getDefault()->PieChart->Xround,
(!$default)?$parametres->Yround:self::getDefault()->PieChart->Yround,
(!$default)?$parametres->radius:self::getDefault()->PieChart->radius);
$pieChart->setLabelLayout(SideLayout);
$style = $pieChart->setLabelStyle();
$style->setBackground(SameAsMainColor, Transparent, softLighting());
$style->setRoundedCorners((!$default)?$parametres->setRoundedCorners:self::getDefault()->PieChart->setRoundedCorners);
$pieChart->setLineColor((!$default)?$parametres->setLineColor[0]:self::getDefault()->PieChart->setLineColor[0],
(!$default)?$parametres->setLineColor[1]:self::getDefault()->PieChart->setLineColor[1]);
$pieChart->setStartAngle((!$default)?$parametres->setStartAngle:self::getDefault()->PieChart->setStartAngle);
$pieChart->setLabelFormat((!$default)?$parametres->setLabelFormat:self::getDefault()->PieChart->setLabelFormat);
$pieChart->setData($parametres->datas, $parametres->labels);
$pieChart->set3D((!$default)?$parametres->set3D:self::getDefault()->PieChart->set3D);
$makeSession = (!$default)?$parametres->makeSession:self::getDefault()->PieChart->makeSession;
$return->chartID = $pieChart->makeSession($makeSession);
$return->imageMap = $pieChart->getHTMLImageMap((!$default)?$parametres->getHTMLImageMap[0]:self::getDefault()->PieChart->getHTMLImageMap[0],
(!$default)?$parametres->getHTMLImageMap[1]:self::getDefault()->PieChart->getHTMLImageMap[1],
(!$default)?$parametres->getHTMLImageMap[2]:self::getDefault()->PieChart->getHTMLImageMap[2]);
$pieChart->makeChart($this->pathToImageCache.$parametres->nom);
return ($return);
}
/**
* $parametres->nom = le nom final de l'image exemple : "552152365-C-actif.png"
* $parametres->width = largeur de l'image du graphique
* $parametres->title = titre du graphique
* $parametres->timeStamps = $timeStamps;
* $parametres->highData = les données les plus hautes pour l'action
* $parametres->lowData = les données les plus basses pour l'action
* $parametres->openData = l'ouverture des données
* $parametres->closeData = les fermeture des données.
* $parametres->volData = $volData;
* $parametres->extraDays = $extraDays;
* $parametres->addMainChart = $addMainChart; ex : 5
* $parametres->addSlowStochastic = array(75, 14, 3, 0x006060, 0x606000);
* $parametres->addSimpleMovingAvg = array(array(10, 0x663300), array(20, 0x9900ff));
* $parametres->addCandleStick = array(array(0x00ff00, 0xff000));
* $parametres->addDonchianChannel = array(array(20, 0x9999ff, 0xc06666ff));
* $parametres->addVolBars = array(array(75, 0x99ff99, 0xff9999, 0x808080));
* $parametres->addMACD = array(array(75, 26, 12, 9, 0x0000ff, 0xff00ff, 0x008000));
* $parametres->makeSession = nom dans le session ID unique (sert pour le mappage des areas);
*
* Cette méthode retourne une stdClass() avec les parametres imageMap et chartIDRL.
*
* @param stdClass $parametres
* @param bool $default
*/
public function GraphiqueFinance($parametres, $default = false)
{
$return = new stdClass();
$financeChart = new FinanceChart((!$default)?$parametres->width:self::getDefault()->financeChart->width);
$financeChart->addTitle((!$default)?$parametres->title:self::getDefault()->financeChart->title);
$financeChart->setData($parametres->timeStamps, $parametres->highData, $parametres->lowData,
$parametres->openData, $parametres->closeData, $parametres->volData, $parametres->extraDays);
$financeChart->addSlowStochastic((!$default)?$parametres->addSlowStochastic[0]:self::getDefault()->financeChart->addSlowStochastic[0],
(!$default)?$parametres->addSlowStochastic[1]:self::getDefault()->financeChart->addSlowStochastic[1],
(!$default)?$parametres->addSlowStochastic[2]:self::getDefault()->financeChart->addSlowStochastic[2],
(!$default)?$parametres->addSlowStochastic[3]:self::getDefault()->financeChart->addSlowStochastic[3],
(!$default)?$parametres->addSlowStochastic[4]:self::getDefault()->financeChart->addSlowStochastic[4]);
$financeChart->addMainChart((!$default)?$parametres->financeChart->addMainChart:self::getDefault()->financeChart->addMainChart);
foreach ((!$default)?$parametres->addSimpleMovingAvg:self::getDefault()->financeChart->addSimpleMovingAvg as $addSimpleMovingAvg)
$financeChart->addSimpleMovingAvg($addSimpleMovingAvg[0], $addSimpleMovingAvg[1]);
foreach ((!$default)?$parametres->addCandleStick:self::getDefault()->financeChart->addCandleStick as $addCandleStick)
$financeChart->addCandleStick($addCandleStick[0], $addCandleStick[1]);
foreach ((!$default)?$parametres->addDonchianChannel:self::getDefault()->financeChart->addDonchianChannel as $addDonchianChannel)
$financeChart->addDonchianChannel($addDonchianChannel[0], $addDonchianChannel[1], $addDonchianChannel[2]);
foreach ((!$default)?$parametres->addVolBars:self::getDefault()->financeChart->addVolBars as $addVolBars)
$financeChart->addVolBars($addVolBars[0], $addVolBars[1], $addVolBars[2], $addVolBars[3]);
foreach ((!$default)?$parametres->addMACD:self::getDefault()->financeChart->addMACD as $addMACD)
$financeChart->addMACD($addMACD[0], $addMACD[1], $addMACD[2], $addMACD[3], $addMACD[4], $addMACD[5],$addMACD[6]);
$makeSession = (!$default)?$parametres->makeSession:self::getDefault()->financeChart->makeSession;
$return->chartID = $financeChart->makeSession($makeSession);
$return->imageMap = $financeChart->getHTMLImageMap((!$default)?$parametres->getHTMLImageMap[0]:self::getDefault()->financeChart->getHTMLImageMap[0],
(!$default)?$parametres->getHTMLImageMap[1]:self::getDefault()->financeChart->getHTMLImageMap[1],
(!$default)?$parametres->getHTMLImageMap[2]:self::getDefault()->financeChart->getHTMLImageMap[2]);
$financeChart->makeChart($this->pathToImageCache.$parametres->nom);
return ($return);
}
}