Code

Updated statistiks
authorhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Tue, 24 Aug 2010 09:46:07 +0000 (09:46 +0000)
committerhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Tue, 24 Aug 2010 09:46:07 +0000 (09:46 +0000)
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@19432 594d385d-05f5-0310-b6e9-bd551577e9d8

gosa-core/plugins/generic/statistics/class_statistics.inc
gosa-core/plugins/generic/statistics/statistics.tpl

index 4f7d62fa661c61a193737e97a56e470f20231513..677b0b24f3a8ce3e3dd37b535f7bb68d352b087e 100644 (file)
@@ -15,28 +15,12 @@ class statistics extends plugin
     var $graphIDs = array();            // IDs for created grpah
     var $skipSeries = array();          // Graph series which should be skipped
     var $seriesListPerGraph = array();  // Series names per graph
-    var $graphLegends = array();        // A self-made legend 
 
     // Legend colors
     var $legendR = 235;
     var $legendG = 235;
     var $legendB = 235;
 
-    // Pre define the used chart colors 
-    var $legendColors =   
-        array(
-                array(127,127,116),
-                array(114,176,180),
-                array(0,124,143),
-                array(20,67,93),
-                array(39,10,43),
-                array(82,124,148),
-                array(97,152,183),
-                array(115,173,207),
-                array(144,196,226),
-                array(174,216,240));
-
-
     // Font used in graphs
     var $font = "./themes/default/fonts/LiberationSans-Regular.ttf";
 
@@ -197,8 +181,6 @@ class statistics extends plugin
         }
 
 
-        $smarty->assign('legendColors', $this->legendColors);
-        $smarty->assign('graphLegends', $this->graphLegends);
         $smarty->assign('seriesListPerGraph', $this->seriesListPerGraph);
         $smarty->assign('skipSeries', $this->skipSeries);
         $smarty->assign('graphIDs', $this->graphIDs);
@@ -214,17 +196,10 @@ class statistics extends plugin
 
     /*! \brief      Prepares the graph data we've received from the rpc-service.
      *              This method will construct a usable data-array with converted 
-     *               date strings, cleaned up categories.
+     *               date strings.
      */
     function prepareGraphData($res)
     {
-        // Dummy, please check later if it is still required. 
-        $this->skipSeries[1] = array();
-        $this->skipSeries[2] = array();
-        $this->skipSeries[3] = array();
-        $this->skipSeries[4] = array();
-        $this->skipSeries[5] = array();
-
         /* Build up array which represents the amount of errors per
          *  interval.
          */
@@ -281,6 +256,12 @@ class statistics extends plugin
             }
             ksort($gData['actionsPerInterval'][$category]);
         }
+        $this->skipSeries[1] = array();
+        $this->skipSeries[2] = array();
+        $this->skipSeries[3] = array();
+        $this->skipSeries[4] = array();
+        $this->skipSeries[5] = array();
+
 
         // Clean data from unusable categories like ('terminals workstations, ...')
         foreach($gData as $serieName => $seriesData){
@@ -400,49 +381,30 @@ class statistics extends plugin
      */ 
     function generateActionsGraph($gData)
     {
-
-        // Prepare self-made legend data
-        $legendData = array();
-
-        $lineMax = 10;
-        $errorMax = max($gData['errorsPerInterval']);
+        $lineMax = 100;
+        $errorMax = (max($gData['errorsPerInterval']) < 100)? 100:max($gData['errorsPerInterval']);
         $dataSet = new pData;  
         $seriesCnt = 0;
         $gID = 2;
-        $chart = new pChart(800,230);
-        $seriesShown = 0;
         foreach($gData['actionsPerInterval'] as $category => $entriesPerDate){
-            if(empty($category)) continue; 
-
-            // Add entry to legendData array.
-            $desc = $this->getCategoryTranslation($category);
-
-            // Set series color
-            $color = $this->legendColors[$seriesCnt];
-            $legendData[$seriesCnt] = array('name' => $category,'desc'=>$desc,'color' => $color);
-
-            // Do not add graph data for skipped series 
-            if(!in_array($category, $this->skipSeries[$gID])){
-                $dataSet->AddPoint($entriesPerDate, $category);
-                $dataSet->SetSerieName($desc, $category);
-                $dataSet->AddSerie($category);
-
-                list($r,$g,$b) = $color;
-                $chart->setColorPalette($seriesShown,$r,$g,$b);   
-
-                // Detect maximum value, to adjust the Y-Axis
-                $tmpMax = max($entriesPerDate);
-                if($tmpMax > $lineMax) $lineMax = $tmpMax;
+            if(empty($category) || in_array($category, $this->skipSeries[$gID])) continue;
 
-                $seriesShown ++;
-            }
+            // Add results to our data set.
+            $dataSet->AddPoint($entriesPerDate, $category);
+            $dataSet->SetSerieName($this->getCategoryTranslation($category), $category);
+            $dataSet->AddSerie($category);
 
+            // Detect maximum value, to adjust the Y-Axis
+            $tmpMax = max($entriesPerDate);
+            if($tmpMax > $lineMax) $lineMax = $tmpMax;
             $seriesCnt ++;
         }
 
         // Add timeline
         $dataSet->AddPoint($gData['dates'], 'date');
         $dataSet->SetAbsciseLabelSerie('date');  
+
+        $chart = new pChart(800,230);  
         $chart->setFixedScale(0.000,$lineMax);
         $chart->setFontProperties("./themes/default/fonts/LiberationSans-Regular.ttf",10);  
         $chart->setGraphArea(50,30,585,200);  
@@ -466,15 +428,18 @@ class statistics extends plugin
 
             // Set the color for the error Series to 'red'. 
             // This has to be done before drawing the legend.
-            $chart->setColorPalette($seriesShown,255,0,0);   
+            $chart->setColorPalette($seriesCnt,255,0,0);   
+
             $dataSet->AddPoint($gData['errorsPerInterval'], 'Errors');
             $dataSet->SetSerieName(_('Error'), 'Errors');
             $dataSet->AddSerie('Errors');
-
         }
 
-        // Add entry to legendData array.
-        $legendData[$seriesCnt] = array('name' => 'errorsPerInterval','desc'=>_('Error'),'color' => array(255,0,0));
+        
+        // Draw legend, but only if there is something to draw!
+        if($seriesCnt || !in_array('errorsPerInterval', $this->skipSeries[$gID])){
+            $chart->drawLegend(650,30,$dataSet->GetDataDescription(),255,255,255);  
+        }
 
         // Draw the error graph on top of the other graphs now.
         // But remove the category-graph before. 
@@ -503,44 +468,11 @@ class statistics extends plugin
             $this->seriesListPerGraph[$gID][$key] = $this->getCategoryTranslation($key); 
         }
         $this->seriesListPerGraph[$gID]['errorsPerInterval'] = _("Error");
-
-        // Create self-made legend with checkboxes to be able to select the desired graph series.
-        $this->graphLegends[$gID] = $this->generateLegend($legendData,$gID, TRUE); 
         return;
     }
    
 
-    function generateLegend($legendData,$gID, $useCheckboxes = FALSE)
-    {
-        $str = "";
-        $str .= "<table>";
-        foreach($legendData as $id => $data){
-
-            $label = $data['desc'];
-            $name = $data['name'];
-            if(count($data['color'])){
-                list($r,$g,$b) = $data['color'];
-                $color = "rgba({$r},{$g},{$b},1)";
-            }else{
-                $color = "rgba(255,255,255,1);";
-            }
-            $colorDiv = "<div style='width:8px; height:8px; background-color: {$color}'>";
-
-            if($useCheckboxes){
-                $checked = (in_array($name, $this->skipSeries[$gID]))? '':'checked';
-                $checkbox = "<input type='checkbox' name='addSeries_{$gID}_{$name}' value='1'
-                    onClick='document.mainform.submit();' {$checked}>"; 
-            }
-
-            $str .= "<tr>";
-            $str .= "<td>{$checkbox}</td><td style='vertical-align: middle;'>{$colorDiv}</td><td>{$label}</td>\n";
-            $str .= "</tr>";
-        }
-        $str.="</table>";
-        return($str);
-    }        
-
-
     /*! \brief  Generates a graph about system informations.
      */ 
     function generateSystemStatsGraph($gData, $key = "", $series= array(), $title = "", $gID=0 )
@@ -560,7 +492,6 @@ class statistics extends plugin
         $dataSet->SetAbsciseLabelSerie('date');  
         
         $chart = new pChart(800,230);  
-        $this->loadColors($chart);
         $chart->setFixedScale(0.0001,($max*1.1));  
         $chart->setFontProperties("./themes/default/fonts/LiberationSans-Regular.ttf",10);  
         $chart->setGraphArea(50,30,585,200);  
@@ -628,7 +559,6 @@ class statistics extends plugin
 
         // Initialise the graph  
         $chart = new pChart($x,$y);  
-        $this->loadColors($chart);
         $chart->setFontProperties($this->font,10);  
         $chart->drawPieGraph($dataSet->GetData(),$dataSet->GetDataDescription(),($x/3),($y/2)-10,($y/2),PIE_PERCENTAGE,TRUE,50,20,6);  
         $chart->drawPieLegend(($x/3*2),15,$dataSet->GetData(),$dataSet->GetDataDescription(),
@@ -640,26 +570,5 @@ class statistics extends plugin
         $chart->Render($file);
         session::set('statistics::graphFile'.$this->graphIDs[$gID],$file);
     }
-
-    function loadColors(&$graph) 
-    {
-        $colors =
-            array( 
-                    array(227,227,216),
-                    array(114,176,180),
-                    array(0,124,143),
-                    array(20,67,93),
-                    array(39,10,43),
-                    array(82,124,148),
-                    array(97,152,183),
-                    array(115,173,207),
-                    array(144,196,226),
-                    array(174,216,240));
-
-        foreach($this->legendColors as $key => $values){
-            list($R,$G,$B) = $values;
-            $graph->setColorPalette($key,$R,$G,$B);
-        }   
-    }
 }
 ?>
index b9cd6bfb85d08bfd5c0d1f4628cb03dddefdbe12..af919b7d50d3f950fecc8a2af4521de031cf38b9 100644 (file)
                     <input type='hidden' name='graphPosted_2' value='1'>
                 {/if}
             </td>
+        </tr>
+        <tr>
             <td>
-                {if isset($graphLegends.2) && $graphIDs.2}
-                    {$graphLegends.2}
+                {if isset($graphIDs.2) && $graphIDs.2}
+                    {foreach from=$seriesListPerGraph.2 key=key item=item}
+                        <span style='padding-right:20px'>
+                        <input type='checkbox' name='addSeries_2_{$key}' value='1'
+                            onClick="document.mainform.submit();" 
+                            {if !($key|in_array:$skipSeries.2)} checked {/if}>{$item}
+                        </span>
+                    {/foreach} 
                 {/if}
             </td>
         </tr>