3 pData - Simplifying data population for pChart
\r
4 Copyright (C) 2008 Jean-Damien POGOLOTTI
\r
5 Version 1.13 last updated on 08/17/08
\r
7 http://pchart.sourceforge.net
\r
9 This program is free software: you can redistribute it and/or modify
\r
10 it under the terms of the GNU General Public License as published by
\r
11 the Free Software Foundation, either version 1,2,3 of the License, or
\r
12 (at your option) any later version.
\r
14 This program is distributed in the hope that it will be useful,
\r
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
17 GNU General Public License for more details.
\r
19 You should have received a copy of the GNU General Public License
\r
20 along with this program. If not, see <http://www.gnu.org/licenses/>.
\r
22 Class initialisation :
\r
24 Data populating methods :
\r
25 ImportFromCSV($FileName,$Delimiter=",",$DataColumns=-1,$HasHeader=FALSE,$DataName=-1)
\r
26 AddPoint($Value,$Serie="Serie1",$Description="")
\r
27 Series manipulation methods :
\r
28 AddSerie($SerieName="Serie1")
\r
30 RemoveSerie($SerieName="Serie1")
\r
31 SetAbsciseLabelSerie($SerieName = "Name")
\r
32 SetSerieName($Name,$SerieName="Serie1")
\r
33 + SetSerieSymbol($Name,$Symbol)
\r
34 SetXAxisName($Name="X Axis")
\r
35 SetYAxisName($Name="Y Axis")
\r
36 SetXAxisFormat($Format="number")
\r
37 SetYAxisFormat($Format="number")
\r
38 SetXAxisUnit($Unit="")
\r
39 SetYAxisUnit($Unit="")
\r
40 removeSerieName($SerieName)
\r
42 Data retrieval methods :
\r
44 GetDataDescription()
\r
47 /* pData class definition */
\r
51 var $DataDescription;
\r
56 $this->DataDescription = "";
\r
57 $this->DataDescription["Position"] = "Name";
\r
58 $this->DataDescription["Format"]["X"] = "number";
\r
59 $this->DataDescription["Format"]["Y"] = "number";
\r
60 $this->DataDescription["Unit"]["X"] = NULL;
\r
61 $this->DataDescription["Unit"]["Y"] = NULL;
\r
64 function ImportFromCSV($FileName,$Delimiter=",",$DataColumns=-1,$HasHeader=FALSE,$DataName=-1)
\r
66 $handle = @fopen($FileName,"r");
\r
69 $HeaderParsed = FALSE;
\r
70 while (!feof($handle))
\r
72 $buffer = fgets($handle, 4096);
\r
73 $buffer = str_replace(chr(10),"",$buffer);
\r
74 $buffer = str_replace(chr(13),"",$buffer);
\r
75 $Values = split($Delimiter,$buffer);
\r
77 if ( $buffer != "" )
\r
79 if ( $HasHeader == TRUE && $HeaderParsed == FALSE )
\r
81 if ( $DataColumns == -1 )
\r
84 foreach($Values as $key => $Value)
\r
85 { $this->SetSerieName($Value,"Serie".$ID); $ID++; }
\r
91 foreach($DataColumns as $key => $Value)
\r
92 $this->SetSerieName($Values[$Value],"Serie".$Value);
\r
94 $HeaderParsed = TRUE;
\r
98 if ( $DataColumns == -1 )
\r
101 foreach($Values as $key => $Value)
\r
102 { $this->AddPoint(intval($Value),"Serie".$ID); $ID++; }
\r
107 if ( $DataName != -1 )
\r
108 $SerieName = $Values[$DataName];
\r
110 foreach($DataColumns as $key => $Value)
\r
111 $this->AddPoint($Values[$Value],"Serie".$Value,$SerieName);
\r
120 function AddPoint($Value,$Serie="Serie1",$Description="")
\r
122 if (is_array($Value) && count($Value) == 1)
\r
123 $Value = $Value[0];
\r
126 for($i=0;$i<=count($this->Data);$i++)
\r
127 { if(isset($this->Data[$i][$Serie])) { $ID = $i+1; } }
\r
129 if ( count($Value) == 1 )
\r
131 $this->Data[$ID][$Serie] = $Value;
\r
132 if ( $Description != "" )
\r
133 $this->Data[$ID]["Name"] = $Description;
\r
134 elseif (!isset($this->Data[$ID]["Name"]))
\r
135 $this->Data[$ID]["Name"] = $ID;
\r
139 foreach($Value as $key => $Val)
\r
141 $this->Data[$ID][$Serie] = $Val;
\r
142 if (!isset($this->Data[$ID]["Name"]))
\r
143 $this->Data[$ID]["Name"] = $ID;
\r
149 function AddSerie($SerieName="Serie1")
\r
151 if ( !isset($this->DataDescription["Values"]) )
\r
153 $this->DataDescription["Values"][] = $SerieName;
\r
158 foreach($this->DataDescription["Values"] as $key => $Value )
\r
159 if ( $Value == $SerieName ) { $Found = TRUE; }
\r
162 $this->DataDescription["Values"][] = $SerieName;
\r
166 function AddAllSeries()
\r
168 unset($this->DataDescription["Values"]);
\r
170 if ( isset($this->Data[0]) )
\r
172 foreach($this->Data[0] as $Key => $Value)
\r
174 if ( $Key != "Name" )
\r
175 $this->DataDescription["Values"][] = $Key;
\r
180 function RemoveSerie($SerieName="Serie1")
\r
182 if ( !isset($this->DataDescription["Values"]) )
\r
186 foreach($this->DataDescription["Values"] as $key => $Value )
\r
188 if ( $Value == $SerieName )
\r
189 unset($this->DataDescription["Values"][$key]);
\r
193 function SetAbsciseLabelSerie($SerieName = "Name")
\r
195 $this->DataDescription["Position"] = $SerieName;
\r
198 function SetSerieName($Name,$SerieName="Serie1")
\r
200 $this->DataDescription["Description"][$SerieName] = $Name;
\r
203 function SetXAxisName($Name="X Axis")
\r
205 $this->DataDescription["Axis"]["X"] = $Name;
\r
208 function SetYAxisName($Name="Y Axis")
\r
210 $this->DataDescription["Axis"]["Y"] = $Name;
\r
213 function SetXAxisFormat($Format="number")
\r
215 $this->DataDescription["Format"]["X"] = $Format;
\r
218 function SetYAxisFormat($Format="number")
\r
220 $this->DataDescription["Format"]["Y"] = $Format;
\r
223 function SetXAxisUnit($Unit="")
\r
225 $this->DataDescription["Unit"]["X"] = $Unit;
\r
228 function SetYAxisUnit($Unit="")
\r
230 $this->DataDescription["Unit"]["Y"] = $Unit;
\r
233 function SetSerieSymbol($Name,$Symbol)
\r
235 $this->DataDescription["Symbol"][$Name] = $Symbol;
\r
238 function removeSerieName($SerieName)
\r
240 if ( isset($this->DataDescription["Description"][$SerieName]) )
\r
241 unset($this->DataDescription["Description"][$SerieName]);
\r
244 function removeAllSeries()
\r
246 foreach($this->DataDescription["Values"] as $Key => $Value)
\r
247 unset($this->DataDescription["Values"][$Key]);
\r
252 return($this->Data);
\r
255 function GetDataDescription()
\r
257 return($this->DataDescription);
\r