public function renderGraph() { require_once 'libs/jpgraph/jpgraph.php'; require_once 'libs/jpgraph/jpgraph_bar.php'; require_once 'libs/jpgraph/jpgraph_line.php'; $graph = new Graph(300, 200, 'auto'); $graph->SetMarginColor('white'); $graph->SetFrame(false); $graph->SetScale("textlin"); $graph->SetY2Scale("lin"); $graph->img->SetMargin(0, 30, 20, 65); $graph->yaxis->HideLabels(); $graph->yaxis->HideTicks(); $graph->yaxis->scale->SetGrace(20); $graph->y2axis->SetColor("black", "red"); $graph->ygrid->SetFill(true, '#EFEFEF@0.5', '#BBCCFF@0.5'); $labelsy = array(); $datay = array(); $datay2 = array(); switch ($this->_controllerAction->getRequest()->getParam('type')) { case 'year': $this->_populateYearData($labelsy, $datay, $datay2); break; default: $this->_populateWeekData($labelsy, $datay, $datay2); } $graph->xaxis->SetTickLabels($labelsy); $locale = Zend_Registry::get('Zend_Locale'); if ($locale == 'ja') { // the ttf file for FF_MINCHO is already encoded in utf-8 $legend1 = $this->view->translate('Trusted sites'); $legend2 = $this->view->translate('Sites per user'); } else { // default ttf files are latin-1 encoded $legend1 = utf8_decode($this->view->translate('Trusted sites')); $legend2 = utf8_decode($this->view->translate('Sites per user')); } $bplot = new BarPlot($datay); $bplot->setLegend($legend1); $bplot->SetFillGradient("navy", "lightsteelblue", GRAD_WIDE_MIDVER); $bplot->value->Show(); $bplot->value->SetFormat('%d'); $p1 = new LinePlot($datay2); $p1->SetColor("red"); $p1->SetLegend($legend2); $graph->Add($bplot); $graph->AddY2($p1); $graph->legend->SetLayout(LEGEND_HOR); if ($locale == 'ja') { $graph->legend->setFont(FF_MINCHO, FS_NORMAL); } $graph->legend->Pos(0.5, 0.99, "center", "bottom"); $graph->Stroke(); }
function addPlots($data) { $plots = array(); $labels = array(); $i = 0; foreach ($data as $key => $plot_data) { $plot = new BarPlot(array_values($plot_data)); $plot->setLegend(prettify($key)); $plot->setFillColor(self::$colours[$i]); $i++; $plots[] = $plot; $labels = array_merge($labels, array_keys($plot_data)); } $group_plot = new GroupBarPlot($plots); $this->grapher->add($group_plot); $this->grapher->xaxis->setTickLabels($labels); }
$graph->xaxis->SetPosAbsDelta(15); $graph->yaxis->SetPosAbsDelta(-15); $graph->xaxis->SetLabelAngle(50); // Legend $graph->legend->SetMarkAbsSize(5); $graph->legend->SetFont(FF_ARIAL, FS_NORMAL, 7); $graph->legend->Pos(0.02, 0.02, "right", "top"); // Create the bar pot $colors = array("#aa5500", "#55aa00", "#0055aa", "#aa0055", "#5500aa", "#00aa55", "#ff0000", "#00ff00", "#0000ff", "#ffff00", "#ff00ff", "#00ffff"); $listPlots = array(); foreach ($opbysalle as $key => $value) { $bplot = new BarPlot($value["sejour"]); $from = $colors[$key]; $to = "#EEEEEE"; $bplot->SetFillGradient($from, $to, GRAD_LEFT_REFLECTION); $bplot->SetColor("white"); $bplot->setLegend($value["nom"]); $bplot->value->SetFormat("%01.0f"); $bplot->value->SetColor($colors[$key]); $bplot->value->SetFont(FF_ARIAL, FS_NORMAL, 8); //$bplot->value->show(); $listPlots[] = $bplot; } $gbplot = new AccBarPlot($listPlots); $gbplot->SetWidth(0.6); $gbplot->value->SetFormat("%01.0f"); $gbplot->value->show(); // Set color for the frame of each bar $graph->Add($gbplot); // Finally send the graph to the browser $graph->Stroke();
/** * Current week top search strings report */ public function graph1() { $myConfig = $this->getConfig(); $oDb = oxDb::getDb(); $aDataX = array(); $aDataY = array(); $sTimeFrom = $oDb->quote(date("Y-m-d H:i:s", strtotime(oxRegistry::getConfig()->getRequestParameter("time_from")))); $sTimeTo = $oDb->quote(date("Y-m-d H:i:s", strtotime(oxRegistry::getConfig()->getRequestParameter("time_to")))); $sSQL = "select count(*) as nrof, oxparameter from oxlogs where oxclass = 'search' and oxtime >= {$sTimeFrom} and oxtime <= {$sTimeTo} group by oxparameter order by nrof desc"; $rs = $oDb->execute($sSQL); if ($rs != false && $rs->recordCount() > 0) { while (!$rs->EOF) { if ($rs->fields[1]) { $aDataX[] = $rs->fields[0]; $aDataY[] = $rs->fields[1]; } $rs->moveNext(); } } header("Content-type: image/png"); // New graph with a drop shadow $graph = new Graph(800, max(640, 20 * count($aDataX))); $graph->setBackgroundImage($myConfig->getImageDir(true) . "/reportbgrnd.jpg", BGIMG_FILLFRAME); // Use a "text" X-scale $graph->setScale("textlin"); $top = 60; $bottom = 30; $left = 80; $right = 30; $graph->set90AndMargin($left, $right, $top, $bottom); // Label align for X-axis $graph->xaxis->setLabelAlign('right', 'center', 'right'); // Label align for Y-axis $graph->yaxis->setLabelAlign('center', 'bottom'); $graph->setShadow(); // Description $graph->xaxis->setTickLabels($aDataY); // Set title and subtitle $graph->title->set("Suchw�rter"); // Use built in font $graph->title->setFont(FF_FONT1, FS_BOLD); // Create the bar plot $bplot = new BarPlot($aDataX); $bplot->setFillGradient("navy", "lightsteelblue", GRAD_VER); $bplot->setLegend("Hits"); $graph->add($bplot); // Finally output the image $graph->stroke(); }
/** * Collects and renders visitor/week report data */ public function visitor_week() { $myConfig = $this->getConfig(); $oDb = oxDb::getDb(); $aDataX = array(); $aDataX2 = array(); $aDataX3 = array(); $aDataX4 = array(); $aDataX5 = array(); $aDataX6 = array(); $aDataY = array(); $sTimeTo = $oDb->quote(date("Y-m-d H:i:s", strtotime(oxRegistry::getConfig()->getRequestParameter("time_to")))); $sTimeFrom = $oDb->quote(date("Y-m-d H:i:s", strtotime(oxRegistry::getConfig()->getRequestParameter("time_from")))); $sSQL = "select oxtime, count(*) as nrof from oxlogs where oxtime >= {$sTimeFrom} and oxtime <= {$sTimeTo} group by oxsessid order by oxtime"; $aTemp = array(); $rs = $oDb->execute($sSQL); if ($rs != false && $rs->recordCount() > 0) { while (!$rs->EOF) { $aTemp[oxRegistry::get("oxUtilsDate")->getWeekNumber($myConfig->getConfigParam('iFirstWeekDay'), strtotime($rs->fields[0]))]++; $rs->moveNext(); } } // initializing list($iFrom, $iTo) = $this->getWeekRange(); for ($i = $iFrom; $i < $iTo; $i++) { $aDataX[$i] = 0; $aDataX2[$i] = 0; $aDataX3[$i] = 0; $aDataX4[$i] = 0; $aDataX5[$i] = 0; $aDataX6[$i] = 0; $aDataY[] = "KW " . $i; } foreach ($aTemp as $key => $value) { $aDataX[$key] = $value; $aDataX2[$key] = 0; $aDataX3[$key] = 0; $aDataX4[$key] = 0; $aDataX5[$key] = 0; $aDataX6[$key] = 0; $aDataY[] = "KW " . $key; } // collects sessions what executed 'order' function $sQ = "select oxtime, oxsessid FROM `oxlogs` where oxclass = 'order' and oxfnc = 'execute' and oxtime >= {$sTimeFrom} and oxtime <= {$sTimeTo} group by oxsessid"; $aTempOrder = $this->_collectSessions($sQ); // collects sessions what executed order class $sQ = "select oxtime, oxsessid from `oxlogs` where oxclass = 'order' and oxtime >= {$sTimeFrom} and oxtime <= {$sTimeTo} group by oxsessid"; $aTempExecOrdersSessions = $this->_collectOrderSessions($sQ, $aTempOrder, $aDataX6, false); // collects sessions what executed payment class $sQ = "select oxtime, oxsessid from `oxlogs` where oxclass = 'payment' and oxtime >= {$sTimeFrom} and oxtime <= {$sTimeTo} group by oxsessid"; $aTempPaymentSessions = $this->_collectPaymentSessions($sQ, $aTempOrder, $aTempExecOrdersSessions, $aDataX2, false); // collects sessions what executed 'user' class $sQ = "select oxtime, oxsessid from `oxlogs` where oxclass = 'user' and oxtime >= {$sTimeFrom} and oxtime <= {$sTimeTo} group by oxsessid"; $aTempUserSessions = $this->_collectUserSessionsForVisitorMonth($sQ, $aTempOrder, $aTempExecOrdersSessions, $aTempPaymentSessions, $aDataX2, false); // collects sessions what executed 'tobasket' function $sQ = "select oxtime, oxsessid from `oxlogs` where oxclass = 'basket' and oxtime >= {$sTimeFrom} and oxtime <= {$sTimeTo} group by oxsessid"; $this->_collectToBasketSessions($sQ, $aTempOrder, $aTempExecOrdersSessions, $aTempPaymentSessions, $aTempUserSessions, $aDataX4, false); // orders made $sQ = "select oxorderdate from oxorder where oxorderdate >= {$sTimeFrom} and oxorderdate <= {$sTimeTo} order by oxorderdate"; $this->_collectOrdersMade($sQ, $aDataX5, false); header("Content-type: image/png"); // New graph with a drop shadow $graph = $this->getGraph(max(800, count($aDataX) * 80), 600); // Description $graph->xaxis->setTickLabels($aDataY); // Set title and subtitle $graph->title->set("Woche"); // Create the bar plot $bplot2 = new BarPlot(array_values($aDataX2)); $bplot2->setFillColor("#9966cc"); $bplot2->setLegend("Best.Abbr. in Bezahlmethoden"); // Create the bar plot $bplot3 = new BarPlot(array_values($aDataX3)); $bplot3->setFillColor("#ffcc00"); $bplot3->setLegend("Best.Abbr. in Benutzer"); // Create the bar plot $bplot4 = new BarPlot(array_values($aDataX4)); $bplot4->setFillColor("#6699ff"); $bplot4->setLegend("Best.Abbr. in Warenkorb"); // Create the bar plot $bplot6 = new BarPlot(array_values($aDataX6)); $bplot6->setFillColor("#ff0099"); $bplot6->setLegend("Best.Abbr. in Bestellbestaetigung"); // Create the bar plot $bplot5 = new BarPlot(array_values($aDataX5)); $bplot5->setFillColor("silver"); $bplot5->setLegend("Bestellungen"); // Create the grouped bar plot $gbplot = new groupBarPlot(array($bplot4, $bplot3, $bplot2, $bplot6, $bplot5)); $graph->add($gbplot); // Finally output the image $graph->stroke(); }
$graph_title = "Workload by Time Period"; $event_type = "actions"; } $plots = array(); foreach ($data as $performer => $values) { ksort($values); ksort($data[$performer]); // Create a bar pot $bplot = new BarPlot(array_values($values)); if ($performer == "customer") { $color = "#99ccff"; } else { $color = "#ffcc00"; } $bplot->SetFillColor($color); $bplot->setLegend(ucfirst($performer) . " " . $event_type); $plots[] = $bplot; } $graph = new Graph(800, 350); $graph->SetScale("textlin"); $graph->img->SetMargin(60, 30, 40, 40); $graph->yaxis->SetTitleMargin(45); $graph->SetShadow(); // Turn the tickmarks $graph->xaxis->SetTickDirection(SIDE_DOWN); $graph->yaxis->SetTickDirection(SIDE_LEFT); $graph->xaxis->SetTickLabels(array_keys($data["developer"] + $data["customer"])); // group plots together $grouped = new GroupBarPlot($plots); $graph->Add($grouped); $graph->title->Set($graph_title);
case 4: $plottable["Avg Time to First Response"] = $info["time_stats"]["time_to_first_response"]["avg"] / 60; $plottable["Median Time to First Response"] = $info["time_stats"]["time_to_first_response"]["median"] / 60; break; } // Create a bar pot $bplot = new BarPlot(array_values($plottable)); $bplot->showValue(true); $bplot->SetValueFont(FF_FONT2, FS_NORMAL, 9); if (!empty($graph_types[$graph_id]["value_format"])) { $value_format = $graph_types[$graph_id]["value_format"]; } else { $value_format = '%d'; } $bplot->SetValueFormat($value_format, 90); $bplot->setLegend($info["title"]); if (isset($colors[$color_index])) { $color = $colors[$color_index]; } else { $color_index = 0; $color = $colors[$color_index]; } $color_index++; $bplot->SetFillColor($color); $plots[] = $bplot; $labels = array_keys($plottable); } // figure out width of legend to propery set margin. $legend_width = imagefontwidth(FF_FONT1) * $max_title_len + 30; if (!empty($graph_types[$graph_id]["size"]["group"])) { $width = $graph_types[$graph_id]["size"]["group"] * count($data) + 200;
/** * Collects and renders visitor/week report data */ public function visitor_week() { $myConfig = $this->getConfig(); $oDb = oxDb::getDb(); $aDataX = array(); $aDataY = array(); $sTimeTo = $oDb->quote(date("Y-m-d H:i:s", strtotime(oxRegistry::getConfig()->getRequestParameter("time_to")))); $sTimeFrom = $oDb->quote(date("Y-m-d H:i:s", strtotime(oxRegistry::getConfig()->getRequestParameter("time_from")))); $sSQL = "select oxtime, count(*) as nrof from oxlogs where oxtime >= {$sTimeFrom} and oxtime <= {$sTimeTo} group by oxsessid order by oxtime"; $aTemp = array(); $rs = $oDb->execute($sSQL); if ($rs != false && $rs->recordCount() > 0) { while (!$rs->EOF) { //$aTemp[date( "W", strtotime( $rs->fields[0]))]++; $aTemp[oxRegistry::get("oxUtilsDate")->getWeekNumber($myConfig->getConfigParam('iFirstWeekDay'), strtotime($rs->fields[0]))]++; $rs->moveNext(); } } // initializing list($iFrom, $iTo) = $this->getWeekRange(); for ($i = $iFrom; $i < $iTo; $i++) { $aDataX[$i] = 0; $aDataX2[$i] = 0; $aDataX3[$i] = 0; $aDataY[] = "KW " . $i; } foreach ($aTemp as $key => $value) { $aDataX[$key] = $value; $aDataX2[$key] = 0; $aDataX3[$key] = 0; $aDataY[] = "KW " . $key; } // buyer $sSQL = "select oxorderdate from oxorder where oxorderdate >= {$sTimeFrom} and oxorderdate <= {$sTimeTo} order by oxorderdate"; $aTemp = array(); $rs = $oDb->execute($sSQL); if ($rs != false && $rs->recordCount() > 0) { while (!$rs->EOF) { //$aTemp[date( "W", strtotime( $rs->fields[0]))]++; $aTemp[oxRegistry::get("oxUtilsDate")->getWeekNumber($myConfig->getConfigParam('iFirstWeekDay'), strtotime($rs->fields[0]))]++; $rs->moveNext(); } } foreach ($aTemp as $key => $value) { $aDataX2[$key] = $value; } // newcustomer $sSQL = "select oxcreate from oxuser where oxcreate >= {$sTimeFrom} and oxcreate <= {$sTimeTo} order by oxcreate"; $aTemp = array(); $rs = $oDb->execute($sSQL); if ($rs != false && $rs->recordCount() > 0) { while (!$rs->EOF) { //$aTemp[date( "W", strtotime( $rs->fields[0]))]++; $aTemp[oxRegistry::get("oxUtilsDate")->getWeekNumber($myConfig->getConfigParam('iFirstWeekDay'), strtotime($rs->fields[0]))]++; $rs->moveNext(); } } foreach ($aTemp as $key => $value) { $aDataX3[$key] = $value; } header("Content-type: image/png"); // New graph with a drop shadow $graph = new Graph(max(800, count($aDataX) * 80), 600); $graph->setBackgroundImage($myConfig->getImageDir(true) . "/reportbgrnd.jpg", BGIMG_FILLFRAME); // Use a "text" X-scale $graph->setScale("textlin"); // Label align for X-axis $graph->xaxis->setLabelAlign('center', 'top', 'right'); // Label align for Y-axis $graph->yaxis->setLabelAlign('right', 'bottom'); $graph->setShadow(); // Description $graph->xaxis->setTickLabels($aDataY); // Set title and subtitle $graph->title->set("Woche"); // Use built in font $graph->title->setFont(FF_FONT1, FS_BOLD); $aDataFinalX = array(); foreach ($aDataX as $dData) { $aDataFinalX[] = $dData; } // Create the bar plot $bplot = new BarPlot($aDataFinalX); $bplot->setFillGradient("navy", "lightsteelblue", GRAD_VER); $bplot->setLegend("Besucher"); $aDataFinalX2 = array(); foreach ($aDataX2 as $dData) { $aDataFinalX2[] = $dData; } // Create the bar plot $bplot2 = new BarPlot($aDataFinalX2); $bplot2->setFillColor("orange"); $bplot2->setLegend("Kaeufer"); $aDataFinalX3 = array(); foreach ($aDataX3 as $dData) { $aDataFinalX3[] = $dData; } // Create the bar plot $bplot3 = new BarPlot($aDataFinalX3); $bplot3->setFillColor("silver"); $bplot3->setLegend("Neukunden"); // Create the grouped bar plot $gbplot = new groupBarPlot(array($bplot, $bplot2, $bplot3)); $graph->add($gbplot); // Finally output the image $graph->stroke(); }