X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Fplugins%2Fgeneric%2Fstatistics%2Fclass_statistics.inc;h=f6806013287b7e6df94151d96f4b180c4a8f996f;hb=62e68332c33811653e1cacf5259a9e0284baf7dc;hp=7f1bd5496763470b03d4aa0926bcccb4783851ad;hpb=3596f2dacf3ab4a2d3696bfb5e884a1ea70372cd;p=gosa.git diff --git a/gosa-core/plugins/generic/statistics/class_statistics.inc b/gosa-core/plugins/generic/statistics/class_statistics.inc index 7f1bd5496..f68060132 100644 --- a/gosa-core/plugins/generic/statistics/class_statistics.inc +++ b/gosa-core/plugins/generic/statistics/class_statistics.inc @@ -65,38 +65,123 @@ class statistics extends plugin msg_dialog::display(_("Error"),msgPool::rpcError($this->rpcHandle->get_error()),ERROR_DIALOG); } - $all = array_sum($res['category_count']); - $tmp = array(); - $tmpRendered = array(); - foreach($res['category_count'] as $category => $count){ - $tmp[$category] = floor(($count / $all) * 10000) / 100; + if($res){ + + // Include pChart + new pChartInclude(); + + // -------- + // Generate PIE chart of most used categories + // -------- + + // Get most used categories, but only eight at once. + arsort($res['category_count']); + $mostUsedCategories = array_slice($res['category_count'],0,8); + + // Dataset definition + $DataSet = new pData; + $this->graphID_1 = preg_replace("/[^0-9]/","",microtime(TRUE)); + $DataSet->AddPoint(array_values($mostUsedCategories),"Serie1"); + $DataSet->AddPoint(array_keys($mostUsedCategories),"Serie2"); + $DataSet->AddAllSeries(); + $DataSet->SetAbsciseLabelSerie("Serie2"); + + // Initialise the graph + $Test = new pChart(400,200); + $Test->setFontProperties("./themes/default/fonts/LiberationSans-Regular.ttf",8); + $Test->drawPieGraph($DataSet->GetData(),$DataSet->GetDataDescription(),150,90,110,PIE_PERCENTAGE,TRUE,50,20,5); + $Test->drawPieLegend(310,15,$DataSet->GetData(),$DataSet->GetDataDescription(),200,255,200); + + $file = '/tmp/graph_'.$this->graphID_1; + $Test->Render($file); + session::set('statistics::graphFile'.$this->graphID_1,$file); + + + // -------- + // Generate combined line and car chart of plugin usage, ldap execution time and errors + // -------- + + // Generate new and unique graph id + $this->graphID_2 = preg_replace("/[^0-9]/","",microtime(TRUE)); + + // Build up DataSet. + $tmp = array(); + $DataSet2 = new pData; + $dates = array(); + $max = 0; + + foreach($res['action_per_date'] as $id => $data){ + + $category = $data['category']; + $date = $data['date']; + + if(!isset($mostUsedCategories[$category])) continue; + + if($data['count'] > $max) $max = $data['count']; + $tmp[$category][$date] = $data['count']; + $dates[$date] = $date; + } + $dMin = min($dates); + $dMax = max($dates); + for($i = $dMin; $i < $dMax; $i += (24*60*60)){ + if(!in_array($i,$dates)) $dates[$i] = $i; + } + $dates = array_values($dates); + sort($dates); + + foreach($tmp as $category => $data){ + reset($dates); + foreach($dates as $date){ + if(!isset($tmp[$category][$date])){ + $tmp[$category][$date] = 0; + } + } + ksort($tmp[$category]); + + $DataSet2->AddPoint($tmp[$category], $category); + $DataSet2->SetSerieName(_($category), $category); + } + + $DataSet2->AddAllSeries(); + + $tmp = array(); + foreach($dates as $date) $tmp[] = date('d.m', $date); + + $DataSet2->AddPoint($tmp, 'date'); + $DataSet2->SetAbsciseLabelSerie('date'); + $DataSet2->RemoveSerie('date'); + + $Test2 = new pChart(700,230); + $Test2->setFixedScale(0,$max); + $Test2->setFontProperties("./themes/default/fonts/LiberationSans-Regular.ttf",8); + $Test2->setGraphArea(50,30,585,200); + $Test2->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); + $Test2->drawRoundedRectangle(5,5,695,225,5,230,230,230); + $Test2->drawGraphArea(255,255,255,TRUE); + $Test2->drawScale($DataSet2->GetData(),$DataSet2->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2); + $Test2->drawGrid(4,TRUE,230,230,230,50); + + // Draw the 0 line + $Test2->drawTreshold(0,143,55,72,TRUE,TRUE); + + // Draw the cubic curve graph +# $Test2->drawBarGraph($DataSet2->GetData(),$DataSet2->GetDataDescription(),TRUE); + $Test2->drawLineGraph($DataSet2->GetData(),$DataSet2->GetDataDescription(),TRUE); + + // Finish the graph + $DataSet2->RemoveSerie('date'); + $Test2->drawLegend(600,30,$DataSet2->GetDataDescription(),255,255,255); + $Test2->drawTitle(50,22,"Plugin usage over time",50,50,50,585); + + $file = '/tmp/graph_'.$this->graphID_2; + $Test2->Render($file); + session::set('statistics::graphFile'.$this->graphID_2,$file); } - - - $data = array_values($tmp); - - // Include jpgraph classes now. - new jpGraphInclude(); - - $graph = new PieGraph(600,500); - $graph->title->Set("Example 4 of pie plot"); - $graph->SetAntiAliasing(); - - $p1 = new PiePlot($data); - $p1 = new PiePlot3D($data); - $p1->value->SetColor("darkred"); - $p1->SetSize(0.3); - $p1->SetCenter(0.4); - $p1->SetLegends(array_keys($tmp)); - $graph->Add($p1); - - $this->graphID_1 = preg_replace("/[^0-9]/","",microtime(TRUE)); - $graph->Stroke('/tmp/graph_'.$this->graphID_1, TRUE); - session::set('statistics::graphFile'.$this->graphID_1,'/tmp/graph_'.$this->graphID_1); } } $smarty->assign('graphID_1', $this->graphID_1); + $smarty->assign('graphID_2', $this->graphID_2); return($smarty->fetch(get_template_path('statistics.tpl', TRUE))); }