60 $this->tSeries = array();
61 $this->tLabels = array(
75 function AddSerie($sNom, $tX, $tY, $sCouleur, $tOptions = array()) {
76 $num = count($this->tSeries) + 1;
77 $this->tSeries[$num] =
new cSerie($num, $sNom, $tX, $tY, $sCouleur, $tOptions);
82 $tX = array(); $tY = array();
83 foreach($this->tSeries as $oSeries) {
84 $tX = array_merge($tX,array_keys($oSeries->tXY));
85 $tY = array_merge($tY, array_values($oSeries->tXY));
90 return array_merge($XOptions, $YOptions);
102 if($Xmin == 0 && $Xmax == 0){
107 $r1 = ($Xmax - $Xmin) / floatval($Tmax);
108 $r2 = floor($r1 * pow(10,(-floor(log10($r1))))*10)/10;
127 $XTick = $XTick * pow(10, floor(log10($r1)));
130 $Xmin = floor($Xmin / $XTick) * $XTick;
131 $Xmax = ceil($Xmax / $XTick) * $XTick;
133 return array($Xmin, $Xmax, $XTick);
142 function Decal($rDecal = 0, $rPente = 0, $rXFin = 0) {
143 foreach($this->tSeries as $oSerie) {
144 $oSerie->RecalOrdonnees($rDecal, $rPente, $rXFin);
155 if(self::DBG) spip_log($this->tSeries,
'hydraulic',_LOG_DEBUG);
156 $sId =
'jqplot_'.$sId;
157 $this->echo = sprintf(
' 158 <div id="%s" style="height:%spx;width:%spx; "></div>',
159 $sId, $iHeight, $iWidth);
161 <script language="javascript" type="text/javascript">';
163 foreach($this->tSeries as $oSerie) {
164 $this->echo .= $oSerie->GetPush();
167 for($i=1; $i<=count($this->tSeries); $i++) {
170 $this->echo .= sprintf(
' 171 chart=$.jqplot(\'%s\', 177 if($this->tLabels[
'title']) {
179 title:\''.$this->tLabels[
'title'].
'\',
'; 182 seriesDefaults: {showMarker:
false},
'; 184 foreach($this->tSeries as $oSerie) { 185 $tS[] = $oSerie->GetConfig(); 187 $this->echo .= sprintf(' 194 // Options de légende et curseur 196 legend: {show:
true, location:\
'ne\', fontSize:\'1em\'}, 199 showVerticalLine: true, 200 showHorizontalLine: true, 201 showCursorLegend: true, 204 dblClickReset: false, 205 intersectionThreshold: 6 208 list($Xmin, $Xmax, $XTick, $Ymin, $Ymax, $YTick) = $this->
GetAxesOptions();
209 $this->echo .= sprintf(
' 213 labelRenderer: $.jqplot.CanvasAxisLabelRenderer, 219 labelRenderer: $.jqplot.CanvasAxisLabelRenderer, 223 tickOptions:{formatString:\'%%.3f\'} 229 addslashes($this->tLabels[
'X']),$Xmin,$Xmax,$XTick,
230 addslashes($this->tLabels[
'Y']),$Ymin,$Ymax,$YTick);
260 function __construct($num, $sNom, $tX, $tY, $sCouleur, $sOptions =
'') {
264 $this->tXY = array_combine($tX, $tY);
267 $this->tXY = array_fill_keys($tX, $tY);
269 $this->sCouleur = $sCouleur;
270 $this->sOptions = $sOptions;
278 '{label:\'%s\', color:\'%s\'',
279 addslashes(_T(
'hydraulic:'.$this->sNom)),
281 if($this->sOptions) {
282 $ret .=
', '.$this->sOptions;
292 $ret = sprintf(
"\nvar tSerie%s=[];",$this->num);
293 foreach($this->tXY as $rX=>$rY) {
294 $ret .= sprintf(
"\ntSerie%s.push([%s, %s]);", $this->num, $rX, $rY);
307 $rCoteFond = $rDecal;
308 foreach($this->tXY as $rX=>&$rY) {
311 $rY = $rY + $rDecal + $rPente * ($rXFin - $rX);
314 $rY = $rY + $rDecal + $rPente * $rX;
$num
Numéro d'ordre de la série.
RecalOrdonnees($rDecal=0, $rPente=0, $rXFin=0)
Recalcule les ordonnées sur une base Y * pente + fond.
__construct($num, $sNom, $tX, $tY, $sCouleur, $sOptions='')
Construction de la classe.
$tXY
Tableau $this->tXY[abscisse]=ordonnée.
AddSerie($sNom, $tX, $tY, $sCouleur, $tOptions=array())
Ajout d'une série de données dans le graph.
$sNom
Nom de la série (Balise de langue telle que définie dans lang/hydraulic_xx.php)
$sCouleur
Couleur de la courbe (Code HTML)
GetAxesOptions($rDecal=0, $rPente=0, $rXFin=0)
$tSeries
Activation des messages de débuggage de la classe.
GetGraph($sId, $iHeight, $iWidth)
Renvoie le script jqplot du graphique.
const nbTickXmax
Respectivement les titres du graphique, des abscisses, des ordonnées.
$echo
Chaine contenant le script jqPlot.
Classe pour l'affichage des graphiques.
GetConfig()
Retourne la chaine à insérer dans l'option series de jqplot.
Decal($rDecal=0, $rPente=0, $rXFin=0)
Décale les ordonnées selon un offset et une pente.
Get1AxeOptions($tX, $Tmax)
GetPush()
Retourne la chaine des push du tableau de la série.
__construct($Title='', $Xlabel='', $Ylabel='')
Classe pour la gestion des séries dans le graph.
$sOptions
Options supplémentaires.