/**
  * Método que cria um gráfico de estatisticas de acesso pela classe Graph do pacote
  * Open Chart Flash http://sourceforge.net/projects/o-flash-chart/
  * 
  * @author Deivid Martins
  * @access public
  * @param Object $stats
  * @param Integer $startYear
  * @param Integer $lastYear
  * @return Boolean $graficoStatus se o gráfico foi montado ou não
  **/
 function buildGraphicByYearFlash($stats, $startYear, $lastYear)
 {
     $graph = new Graph();
     $graficoStatus = false;
     // Se existem ou não estatisticas
     $dadosRequeridos = array();
     // Estatisticas que usuario pediu
     $maximo = 0;
     // Maior valor do gráfico
     // Gabarito de cores para linhas do gráfico
     $cores = array("#191970", "#FFA500", "#A020F0", "#008B8B", "#CD1076", "#FF0000", "#A0522D", "#66CDAA", "#8B8B7A", "#FFB5C5", "#8B0000", "#006400");
     // DarkGreen
     $stat = $stats->getRequests();
     foreach ($stat as $s) {
         $mes = intval($s->getMonth());
         $ano = intval($s->getYear());
         if ($s->getNumberOfRequests() == "") {
             $values[$ano][$mes] = 0;
         } else {
             $values[$ano][$mes] = $s->getNumberOfRequests();
         }
     }
     // Montamos o gráfico
     //$graph->title( utf8_encode(ARTICLE_ACCESS), 14, '#000000' );
     //Estamos montando o titulo no html
     $graph->bg_colour = '#FFFFFF';
     $graph->set_inner_background('#F8F8FF', '#CBD7E6', 90);
     // Somente monta o gráfico dos anos exigidos pelo usuário
     for ($i = 0; $i <= $lastYear - $startYear; $i++) {
         $dadosRequeridos[$i] = range(0, 11);
         $graficoStatus = true;
         // entrou no for significa que o gráfico vai ser construido
         for ($j = 0; $j < 12; $j++) {
             /*	Tem alguns meses que não existem estatisticas e retorna null
             				e o php retorna o array quebrado
             				Ex: ([0] => 5, [1] => 7, [5] => 6) pulando alguns elementos
             			*/
             if (is_null($values[$startYear + $i][$j + 1])) {
                 $dadosRequeridos[$i][$j] = 'null';
             } else {
                 $dadosRequeridos[$i][$j] = $values[$startYear + $i][$j + 1];
             }
         }
         // Procuramos o maior valor daquele ano
         $tempMax = max($values[$startYear + $i]);
         if ($tempMax > $maximo) {
             $maximo = $tempMax;
         }
         // Criamos a linha de um determinado ano
         $graph->set_data($dadosRequeridos[$i]);
         $graph->line_hollow(2, 3, $cores[$i], $startYear + $i, 11);
         $graph->set_tool_tip(ACCESSES . ': #val#');
     }
     // Não existem dados, portanto o gráfico não deve ser montado
     if ($graficoStatus == false) {
         return $graficoStatus;
     }
     // Dados eixo X
     $graph->set_x_labels(explode(",", MONTH_LIST));
     $graph->set_x_label_style(11, '#333333', 2);
     // Valor máximo do eixo Y
     $graph->set_y_max($maximo + 2);
     $graph->set_y_label_style(11, '#333333');
     $graph->y_label_steps(4);
     // Legendas eixo X e Y
     $graph->set_x_legend(MONTHS, 12, '#444444');
     $graph->set_y_legend(ACCESSES, 12, '#444444');
     $graph->set_x_tick_size(10);
     // Cores da grade
     $graph->x_axis_colour('#68838B', '#FFFFFF');
     $graph->y_axis_colour('#68838B', '#FFFFFF');
     // Mostra o gráfico somente se, o ano que o usuario entrou existir estatisticas
     if ($graficoStatus == true) {
         echo $graph->render();
     }
     return $graficoStatus;
 }
Example #2
0
 function grafico()
 {
     $this->load->library('Graph');
     $data = array();
     $dia = array();
     $qfechai = $this->uri->segment(4);
     $qfechaf = $this->uri->segment(5);
     $sucu = $this->uri->segment(6);
     //$qfechai ='20070101';
     //$qfechaf ='20070131';
     $mSQL = "SELECT if(b.tipo IS NULL,a.tipo,b.nombre) nombre, sum(a.monto*(SUBSTRING(a.numero,1,1)<>'X')) monto\n\t\t\t FROM viepag a LEFT JOIN tarjeta b ON a.tipo=b.tipo\n\t\t\t JOIN scaj c ON a.cajero=c.cajero JOIN caub d ON c.almacen=d.ubica\n\t\t\t WHERE fecha BETWEEN {$qfechai} AND {$qfechaf} AND d.sucursal LIKE '{$sucu}%'\n\t\t\t GROUP BY a.tipo ORDER BY monto DESC";
     $res = $this->db->query($mSQL) or die("Bad SQL 1");
     $total = 0;
     foreach ($res->result() as $row) {
         if ($row->monto < 0) {
             $total += $row->monto * -1;
         } else {
             $total += $row->monto;
         }
     }
     $res->first_row();
     foreach ($res->result() as $row) {
         $titu[] = substr($row->nombre, 0, 20);
         if ($row->monto < 0) {
             $data[] = round($row->monto * 100 / $total * -1, 0);
         } else {
             $data[] = round($row->monto * 100 / $total, 0);
         }
     }
     $g = new Graph();
     $g->title('DISTRIBUCION DE LA COBRANZA ', '{font-size:18px; color: #d01f3c}');
     $g->set_data($data);
     $g->bar_filled(80, '#9933CC', '#8010A0', '', 10);
     $g->set_y_max(100);
     $g->bg_colour = '#FFFFFF';
     $g->y_label_steps(5);
     $g->set_x_labels($titu);
     $g->set_y_legend('Porcentaje de Venta', 14, '0x639F45');
     $g->set_x_label_style(10, '#9933CC', 2);
     $g->set_x_legend('Forma de Pago', 14, '0x639F45');
     $g->set_bg_image(site_url('/images/ventafon.png'), 'center', 'middle');
     $g->set_tool_tip('#val#%25');
     echo $g->render();
     $res->free_result();
 }