|
|
<?php |
|
|
|
|
|
/* |
|
|
* To change this license header, choose License Headers in Project Properties. |
|
|
* To change this template file, choose Tools | Templates |
|
|
* and open the template in the editor. |
|
|
*/ |
|
|
|
|
|
/** |
|
|
* Description of DashboardGraph |
|
|
* |
|
|
* @author victor |
|
|
*/ |
|
|
class DashboardGraph { |
|
|
|
|
|
private $dashboard; |
|
|
private $gDateLocale; |
|
|
|
|
|
public function __construct(AbstractDashboard $dashboard) { |
|
|
$this->dashboard = $dashboard; |
|
|
require 'jpgraph/jpgraph_utils.inc.php'; |
|
|
require 'jpgraph/jpgraph.php'; |
|
|
require 'jpgraph/jpgraph_line.php'; |
|
|
} |
|
|
|
|
|
private function init() { |
|
|
ob_clean(); |
|
|
|
|
|
$this->gDateLocale = $gDateLocale; |
|
|
} |
|
|
|
|
|
public function graphChamadasNaoAtendidas($chamadasNaoClassificadas, $ultimosXMeses = 5, $showTitle = true) { |
|
|
|
|
|
$this->init(); |
|
|
|
|
|
$datay = array(); |
|
|
$datax = array(); |
|
|
$ts = time(); |
|
|
$labels = []; |
|
|
$n = count($chamadasNaoClassificadas); // Number of data points |
|
|
$datay[0] = 0; |
|
|
$datax[0] = '-'; |
|
|
$labels[0] = '-'; |
|
|
for ($i = 0; $i < $n; ++$i) { |
|
|
$datax[$i + 1] = $chamadasNaoClassificadas[$i]['timestamp']; |
|
|
$datay[$i + 1] = $chamadasNaoClassificadas[$i]['total']; |
|
|
$labels[$i + 1] = $chamadasNaoClassificadas[$i]['data']; |
|
|
} |
|
|
$datay[count($datay)] = max($datay) + min($datay); |
|
|
$datax[count($datax)] = '-'; |
|
|
$labels[count($labels)] = '-'; |
|
|
|
|
|
$ydata = array_values($datay); |
|
|
|
|
|
$width = (70 * $ultimosXMeses) + 100; |
|
|
$height = 250; |
|
|
|
|
|
$graph = new Graph($width, $height); |
|
|
$graph->SetScale('intlin'); |
|
|
|
|
|
$graph->SetMargin(40, 20, 20, 40); |
|
|
$graph->SetAxisStyle(AXSTYLE_SIMPLE); |
|
|
$graph->SetScale("textlin"); |
|
|
$graph->xaxis->SetTickLabels(array_values($labels)); |
|
|
if ($showTitle) { |
|
|
$graph->title->Set('Chamadas n<EFBFBD>o classificadas'); |
|
|
} |
|
|
//$graph->subtitle->Set('(<EFBFBD>ltimos ' . $ultimosXMeses . ' meses)'); |
|
|
if ($this->dashboard->getIsAgente()) { |
|
|
$graph->xaxis->title->Set($this->dashboard->getNome() . ' - ' . $this->dashboard->getRamalMonitorAgente()); |
|
|
} |
|
|
$graph->yaxis->title->Set('N<EFBFBD> de Chamadas'); |
|
|
|
|
|
$lineplot = new LinePlot($ydata); |
|
|
|
|
|
$graph->Add($lineplot); |
|
|
|
|
|
echo $graph->Stroke(); |
|
|
} |
|
|
|
|
|
/** |
|
|
* |
|
|
* @param array $dadosDacs |
|
|
* @param string $type AccBarPlot|GroupBarPlot |
|
|
* @return string |
|
|
*/ |
|
|
public function graphDacs($dadosDacs, $type = 'GroupBarPlot') { |
|
|
require_once ('jpgraph/jpgraph_bar.php'); |
|
|
$this->init(); |
|
|
if (empty($dadosDacs)) { |
|
|
return ""; |
|
|
} |
|
|
$xTitle = "Chamadas por Fila"; |
|
|
if ($this->dashboard->getIsAgente()) { |
|
|
$dacs = array_column($dadosDacs, 'dac'); |
|
|
$dac = array_search($this->dashboard->getDacAtual(), $dacs); |
|
|
if (!$dac) { |
|
|
$dac = array_search($this->dashboard->getDacPadrao(), $dacs); |
|
|
} |
|
|
$xTitle = ($this->dashboard->getNome() . ' - ' . $this->dashboard->getRamalMonitorAgente()); |
|
|
$dadosDacs = array($dadosDacs[$dac]); |
|
|
$atendidas = $dadosDacs[0]['atendidas']; |
|
|
$originadas = $dadosDacs[0]['originadas']; |
|
|
$abandonadas = $dadosDacs[0]['abandonadas']; |
|
|
$count = 5; |
|
|
} else { |
|
|
$count = count($dadosDacs); |
|
|
$atendidas = array_column($dadosDacs, 'atendidas'); |
|
|
$originadas = array_column($dadosDacs, 'originadas'); |
|
|
$abandonadas = array_column($dadosDacs, 'abandonadas'); |
|
|
} |
|
|
|
|
|
$width = (70 * $count) + 100; |
|
|
$height = 450; |
|
|
|
|
|
$graph = new Graph($width, $height, 'auto', 5); |
|
|
$graph->SetScale('textlin'); |
|
|
$graph->SetShadow(); |
|
|
$lbl = array_column($dadosDacs, 'dac'); |
|
|
$graph->xaxis->SetTickLabels($lbl); |
|
|
if (count($dadosDacs) > 1) { |
|
|
$graph->xaxis->SetLabelAngle(25); |
|
|
} |
|
|
|
|
|
$graph->SetMargin(40, 20, 0, 40); |
|
|
$graph->title->Set($xTitle); |
|
|
$graph->subtitle->Set('Atualizado em ' . date('d/m/Y H:i')); |
|
|
|
|
|
$plotAtendidas = new BarPlot($atendidas); |
|
|
$plotAtendidas->SetFillColor('green'); |
|
|
$plotAtendidas->SetLegend("Atendidas"); |
|
|
|
|
|
$plotOriginadas = new BarPlot($originadas); |
|
|
$plotOriginadas->SetFillColor('blue'); |
|
|
$plotOriginadas->SetLegend("Originadas"); |
|
|
|
|
|
$plotAbandonadas = new BarPlot($abandonadas); |
|
|
$plotAbandonadas->SetFillColor('orange'); |
|
|
$plotAbandonadas->SetLegend("Abandonadas"); |
|
|
|
|
|
$gbplot = new $type(array($plotAtendidas, $plotOriginadas, $plotAbandonadas)); |
|
|
if (strtolower($type) === strtolower('AccBarPlot')) { |
|
|
$gbplot->value->SetFormatCallback([$this, 'intval']); |
|
|
} |
|
|
|
|
|
$graph->Add($gbplot); |
|
|
$graph->legend->SetPos(0.5, 0.98, 'center', 'bottom'); |
|
|
|
|
|
|
|
|
echo $graph->Stroke(); |
|
|
} |
|
|
|
|
|
public function intval($aVal) { |
|
|
return number_format(intval($aVal)); |
|
|
} |
|
|
|
|
|
}
|
|
|
|