Added client work scripts
[clearscm.git] / clients / GD / FSMon / pChart / pData.class
diff --git a/clients/GD/FSMon/pChart/pData.class b/clients/GD/FSMon/pChart/pData.class
new file mode 100644 (file)
index 0000000..8e1938d
--- /dev/null
@@ -0,0 +1,260 @@
+<?php\r
+ /*\r
+     pData - Simplifying data population for pChart\r
+     Copyright (C) 2008 Jean-Damien POGOLOTTI\r
+     Version  1.13 last updated on 08/17/08\r
+\r
+     http://pchart.sourceforge.net\r
+\r
+     This program is free software: you can redistribute it and/or modify\r
+     it under the terms of the GNU General Public License as published by\r
+     the Free Software Foundation, either version 1,2,3 of the License, or\r
+     (at your option) any later version.\r
+\r
+     This program is distributed in the hope that it will be useful,\r
+     but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+     GNU General Public License for more details.\r
+\r
+     You should have received a copy of the GNU General Public License\r
+     along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
+\r
+     Class initialisation :\r
+      pData()\r
+     Data populating methods :\r
+      ImportFromCSV($FileName,$Delimiter=",",$DataColumns=-1,$HasHeader=FALSE,$DataName=-1)\r
+      AddPoint($Value,$Serie="Serie1",$Description="")\r
+     Series manipulation methods :\r
+      AddSerie($SerieName="Serie1")\r
+      AddAllSeries()\r
+      RemoveSerie($SerieName="Serie1")\r
+      SetAbsciseLabelSerie($SerieName = "Name")\r
+      SetSerieName($Name,$SerieName="Serie1")\r
+  +   SetSerieSymbol($Name,$Symbol)\r
+      SetXAxisName($Name="X Axis")\r
+      SetYAxisName($Name="Y Axis")\r
+      SetXAxisFormat($Format="number")\r
+      SetYAxisFormat($Format="number")\r
+      SetXAxisUnit($Unit="")\r
+      SetYAxisUnit($Unit="")\r
+      removeSerieName($SerieName)\r
+      removeAllSeries()\r
+     Data retrieval methods :\r
+      GetData()\r
+      GetDataDescription()\r
+ */\r
+\r
+ /* pData class definition */\r
+ class pData\r
+  {\r
+   var $Data;\r
+   var $DataDescription;\r
+\r
+   function pData()\r
+    {\r
+     $this->Data                           = "";\r
+     $this->DataDescription                = "";\r
+     $this->DataDescription["Position"]    = "Name";\r
+     $this->DataDescription["Format"]["X"] = "number";\r
+     $this->DataDescription["Format"]["Y"] = "number";\r
+     $this->DataDescription["Unit"]["X"]   = NULL;\r
+     $this->DataDescription["Unit"]["Y"]   = NULL;\r
+    }\r
+\r
+   function ImportFromCSV($FileName,$Delimiter=",",$DataColumns=-1,$HasHeader=FALSE,$DataName=-1)\r
+    {\r
+     $handle = @fopen($FileName,"r");\r
+     if ($handle)\r
+      {\r
+       $HeaderParsed = FALSE;\r
+       while (!feof($handle))\r
+        {\r
+         $buffer = fgets($handle, 4096);\r
+         $buffer = str_replace(chr(10),"",$buffer);\r
+         $buffer = str_replace(chr(13),"",$buffer);\r
+         $Values = split($Delimiter,$buffer);\r
+\r
+         if ( $buffer != "" )\r
+          {\r
+           if ( $HasHeader == TRUE && $HeaderParsed == FALSE )\r
+            {\r
+             if ( $DataColumns == -1 )\r
+              {\r
+               $ID = 1;\r
+               foreach($Values as $key => $Value)\r
+                { $this->SetSerieName($Value,"Serie".$ID); $ID++; }\r
+              }\r
+             else\r
+              {\r
+               $SerieName = "";\r
+\r
+               foreach($DataColumns as $key => $Value)\r
+                $this->SetSerieName($Values[$Value],"Serie".$Value);\r
+              }\r
+             $HeaderParsed = TRUE;\r
+            }\r
+           else\r
+            {\r
+             if ( $DataColumns == -1 )\r
+              {\r
+               $ID = 1;\r
+               foreach($Values as $key => $Value)\r
+                { $this->AddPoint(intval($Value),"Serie".$ID); $ID++; }\r
+              }\r
+             else\r
+              {\r
+               $SerieName = "";\r
+               if ( $DataName != -1 )\r
+                $SerieName = $Values[$DataName];\r
+\r
+               foreach($DataColumns as $key => $Value)\r
+                $this->AddPoint($Values[$Value],"Serie".$Value,$SerieName);\r
+              }\r
+            }\r
+          }\r
+        }\r
+       fclose($handle);\r
+      }\r
+    }\r
+\r
+   function AddPoint($Value,$Serie="Serie1",$Description="")\r
+    {\r
+     if (is_array($Value) && count($Value) == 1)\r
+      $Value = $Value[0];\r
+\r
+     $ID = 0;\r
+     for($i=0;$i<=count($this->Data);$i++)\r
+      { if(isset($this->Data[$i][$Serie])) { $ID = $i+1; } }\r
+\r
+     if ( count($Value) == 1 )\r
+      {\r
+       $this->Data[$ID][$Serie] = $Value;\r
+       if ( $Description != "" )\r
+        $this->Data[$ID]["Name"] = $Description;\r
+       elseif (!isset($this->Data[$ID]["Name"]))\r
+        $this->Data[$ID]["Name"] = $ID;\r
+      }\r
+     else\r
+      {\r
+       foreach($Value as $key => $Val)\r
+        {\r
+         $this->Data[$ID][$Serie] = $Val;\r
+         if (!isset($this->Data[$ID]["Name"]))\r
+          $this->Data[$ID]["Name"] = $ID;\r
+         $ID++;\r
+        }\r
+      }\r
+    }\r
+\r
+   function AddSerie($SerieName="Serie1")\r
+    {\r
+     if ( !isset($this->DataDescription["Values"]) )\r
+      {\r
+       $this->DataDescription["Values"][] = $SerieName;\r
+      }\r
+     else\r
+      {\r
+       $Found = FALSE;\r
+       foreach($this->DataDescription["Values"] as $key => $Value )\r
+        if ( $Value == $SerieName ) { $Found = TRUE; }\r
+\r
+       if ( !$Found )\r
+        $this->DataDescription["Values"][] = $SerieName;\r
+      }\r
+    }\r
+\r
+   function AddAllSeries()\r
+    {\r
+     unset($this->DataDescription["Values"]);\r
+\r
+     if ( isset($this->Data[0]) )\r
+      {\r
+       foreach($this->Data[0] as $Key => $Value)\r
+        {\r
+         if ( $Key != "Name" )\r
+          $this->DataDescription["Values"][] = $Key;\r
+        }\r
+      }\r
+    }\r
+\r
+   function RemoveSerie($SerieName="Serie1")\r
+    {\r
+     if ( !isset($this->DataDescription["Values"]) )\r
+      return(0);\r
+\r
+     $Found = FALSE;\r
+     foreach($this->DataDescription["Values"] as $key => $Value )\r
+      {\r
+       if ( $Value == $SerieName )\r
+        unset($this->DataDescription["Values"][$key]);\r
+      }\r
+    }\r
+\r
+   function SetAbsciseLabelSerie($SerieName = "Name")\r
+    {\r
+     $this->DataDescription["Position"] = $SerieName;\r
+    }\r
+\r
+   function SetSerieName($Name,$SerieName="Serie1")\r
+    {\r
+     $this->DataDescription["Description"][$SerieName] = $Name;\r
+    }\r
+\r
+   function SetXAxisName($Name="X Axis")\r
+    {\r
+     $this->DataDescription["Axis"]["X"] = $Name;\r
+    }\r
+\r
+   function SetYAxisName($Name="Y Axis")\r
+    {\r
+     $this->DataDescription["Axis"]["Y"] = $Name;\r
+    }\r
+\r
+   function SetXAxisFormat($Format="number")\r
+    {\r
+     $this->DataDescription["Format"]["X"] = $Format;\r
+    }\r
+\r
+   function SetYAxisFormat($Format="number")\r
+    {\r
+     $this->DataDescription["Format"]["Y"] = $Format;\r
+    }\r
+\r
+   function SetXAxisUnit($Unit="")\r
+    {\r
+     $this->DataDescription["Unit"]["X"] = $Unit;\r
+    }\r
+\r
+   function SetYAxisUnit($Unit="")\r
+    {\r
+     $this->DataDescription["Unit"]["Y"] = $Unit;\r
+    }\r
+\r
+   function SetSerieSymbol($Name,$Symbol)\r
+    {\r
+     $this->DataDescription["Symbol"][$Name] = $Symbol;\r
+    }\r
+\r
+   function removeSerieName($SerieName)\r
+    {\r
+     if ( isset($this->DataDescription["Description"][$SerieName]) )\r
+      unset($this->DataDescription["Description"][$SerieName]);\r
+    }\r
+\r
+   function removeAllSeries()\r
+    {\r
+     foreach($this->DataDescription["Values"] as $Key => $Value)\r
+      unset($this->DataDescription["Values"][$Key]);\r
+    }\r
+\r
+   function GetData()\r
+    {\r
+     return($this->Data);\r
+    }\r
+\r
+   function GetDataDescription()\r
+    {\r
+     return($this->DataDescription);\r
+    }\r
+  }\r
+?>
\ No newline at end of file