|
|
|
|
<?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));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|