Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Gráficos do adianti framework Bom dia pessoal, alguém tem um exemplo de Gráfico do adianti framework mesmo, tem no tutor mas bem simples, tipo que usa banco de dados para popular os dados, no caso preciso de um gráfico simples anual onde teria o valor total de um ano e mostrando os 12 meses e o valor total de cada mês igual esse anexo na ima...
RS
Gráficos do adianti framework  
Bom dia pessoal, alguém tem um exemplo de Gráfico do adianti framework mesmo, tem no tutor mas bem simples, tipo que usa banco de dados para popular os dados, no caso preciso de um gráfico simples anual onde teria o valor total de um ano e mostrando os 12 meses e o valor total de cada mês
  1. <?php
  2.  $html = new THtmlRenderer('app/resources/google_bar_chart.html'); 
  3. ?>


igual esse anexo na imagem

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (7)


MC

Robson boas :))

A Classe abaixo eu uso para gerar o gráfico dos acessos dos usuários, com pequenas modificações da para
gerar varias brincadeiras e se divertir bastante.


  1. <?php
  1. <?php
  2. /**
  3.  * Sistema > MK_SGC - Sistema de Gestão Condominial
  4.  * Modulo  > Grafico: Status de Acessos
  5.  * Form    > Log_SystemAccessLogStats
  6.  * Versao  > 2.0.Atualizacao
  7.  * @author > 122016 by MarcoARCampos
  8.  */
  9. class Log_SystemAccessLogStats extends TPage
  10. {
  11.     /**
  12.      * Class constructor
  13.      * Creates the page
  14.      */
  15.     function __construct()
  16.     {
  17.         parent::__construct();
  18.         
  19.         $img '<i class="fa fa-info fa-lg"></i>&nbsp;&nbsp;&nbsp;';
  20.         $this->html = new THtmlRenderer('app/resources/google_bar_chart.html');
  21.         // creates the form
  22.         $this->form = new BootstrapFormBuilder('form_Cad_TblChaveList');
  23.         $this->form->setFormTitle$img.'STATUS - ACESSOS DO USUARIO');    // define the form title
  24.         
  25.         // Criando os Campos das Datas
  26.         $usulogin = new TDBCombo('usulogin'BaseBD'SystemUser''login''{login} - {name}''login');
  27.         $dataini  = new TDate('dataini');
  28.         $datafim  = new TDate('datafim');
  29.         
  30.         // Labels
  31.         $lbl_usu = new TLabel('Usuario:',      brown ); 
  32.         $lbl_dti = new TLabel('Data Inicial:'brown ); 
  33.         $lbl_dtf = new TLabel('Data Final:',   brown ); 
  34.         // add the fields
  35.         $this->form->addFields([$lbl_usu], [$usulogin], [$lbl_dti], [$dataini], [$lbl_dtf], [$datafim] );
  36.         
  37.         // Configuração e Estilos dos Campos
  38.         $usulogin->setSize('100%'); 
  39.         $usulogin->enableSearch();
  40.         $dataini->setMask('dd/mm/yyyy');
  41.         $datafim->setMask('dd/mm/yyyy');
  42.       
  43.         // add the search form actions
  44.         $this->form->addAction(_t('Find'), new TAction( array( $this'onProcLog')), 'fa:search fa-lg purple');
  45.         
  46.         // Cria e Add no Painel
  47.         $panel = new TPanelGroup();
  48.         $panel->add$this->html );
  49.                                            
  50.         // add the template to the page
  51.         $container = new TVBox;
  52.         $container->style 'width: 100%';
  53.         $container->add( new TXMLBreadCrumb('menu.xml'__CLASS__));
  54.         $container->add$this->form );       
  55.         $container->add$panel );
  56.         parent::add($container);
  57.     }
  58.     
  59.     
  60. //------------------------------------------------------------------------------
  61.     // Processa e Carrega os Dados no Grafico
  62.         
  63.     public function onProcLog$param null )
  64.     {
  65.         TTransaction::openMkSgc_Log );
  66.         $user  = (( isset( $param['usulogin'] ) AND ( $param['usulogin'] )) ? $param['usulogin'] : TSession::getValue('login'));
  67.         $dtini = (( isset( $param['dataini'] ) AND ( $param['dataini'] )) ? $param['dataini'] : date('01/m/Y'strtotime"-5 month" )));
  68.         $dtfim = (( isset( $param['datafim'] ) AND ( $param['datafim'] )) ? $param['datafim'] : date('t/m/Y'));
  69.         // get logs by session id
  70.         $logs SystemAccessLog::where('login''='$user )
  71.                                ->where('login_time''>='TDate::date2us$dtini ))
  72.                                ->where('login_time''<='TDate::date2us$dtfim ))
  73.                                ->orderBy('login_time')
  74.                                ->load();
  75.         if ( count$logs ) > )
  76.         {
  77.             foreach ($logs as $log)
  78.             {
  79.                 $d date('d'strtotime$log->login_time ));
  80.                 $m date('m'strtotime$log->login_time ));
  81.                 $a date('Y'strtotime$log->login_time ));
  82.                 
  83.                 // Add mes ao ano 
  84.                 $acessos[0][$a][$m] += 1;
  85.                 
  86.                 // Add qtde ao Dia/Ano/Mes
  87.                 $acessos[$d][$a][$m] += 1;
  88.             }
  89.         }
  90.         if ( count$acessos ) > )
  91.         {                                       
  92.             ksort$acessos );
  93.         
  94.             TTransaction::close();
  95.             // Meses 
  96.             $meses = array('JAN''FEV''MAR''ABR''MAI''JUN'
  97.                            'JUL''AGO''SET''OUT''NOV''DEZ');  
  98.         
  99.             // Criando o Grafico
  100.             // Titulo                            
  101.     
  102.             $ttmes  = array();    
  103.             $data   = array();
  104.             $data[] = ['Usuário: '.$user.' -  Acessos/Dia - Período: '.$dtini.' até '.$dtfim];
  105.             foreach ( $acessos[0] as $ano => $acess )
  106.             {
  107.                foreach ( $acess as $mes => $tot )
  108.                {          
  109.                    $data[0][] = $meses[( $mes )].'-'.$ano.'('.$tot.')';
  110.                
  111.                    $ttmes[]  = $mes.$ano;
  112.                }    
  113.             }
  114.             // Add os Dias/Mes/Ano -> Qtdes
  115.         
  116.             $seq 1;
  117.         
  118.             foreach ( $acessos as $dia => $day )
  119.             {
  120.                if ( $dia )
  121.                {
  122.                    foreach ( $day as $ano => $year )
  123.                    {          
  124.                        foreach ( $year as $mes => $tday )
  125.                        {                                                                                                          
  126.                            foreach ( $ttmes as $id => $tmes )
  127.                            {                                                                                                          
  128.                                $data$seq ][0] = 'Dia' ' ' $dia;
  129.                            
  130.                                if (!( $data$seq ][ $id ] > )){ 
  131.                                    $data$seq ][ $id ] = (( $tmes == ( $mes.$ano )) ? $tday );
  132.                                }    
  133.                            }     
  134.                        }
  135.                    }    
  136.     
  137.                   $seq++;  
  138.           
  139.                }   
  140.             } 
  141.             // Carregando os Dados no Grafico
  142.             $this->html->enableSection('main', array('data'   => json_encode($data),
  143.                                                      'width'  => '100%',
  144.                                                      'height' => '300px',
  145.                                                      'title'  => 'Acessos por Dia',
  146.                                                      'ytitle' => 'Acessos'
  147.                                                      'xtitle' => 'Dia'));
  148.         }
  149.         else      
  150.         {
  151.             new TMessage('info''Sem Registros para o Login: '.$user );
  152.             $this->onProcLog();
  153.         }        
  154.     }        
  155. }
  156. ?>
RS

Obrigado Marco, vou estudar...valeu
MC

para voce testar esta classe basta alterar os campos:

Linha 30 - $usulogin = new TDBCombo('usulogin', BaseBD, 'SystemUser', 'login', '{login} - {name}', 'login');

Troque o BaseBD e onde aparece o meu nome ;))) "nao entendi como foi parar la"



Linha 78 - Transaction::open( MkSgc_Log );



MC

De novo...... kkkkk

Pessoal onde aparece o meu nome substitua por ... abre chave + name + fecha chave


Abraços
ML

Bom dia Marco, podes me ajudar?

Estou aprendendo criar graficos e peguei este teu para estudar.

O grafico aparece perfeito, porem surge uma lista de erros:

Notice: Undefined offset: 2018 in C:xampphtdocsctaappcontrolgraficosGrafico_Chamados.class.php on line 78
Notice: Undefined index: 05 in C:xampphtdocsctaappcontrolgraficosGrafico_Chamados.class.php on line 78
Notice: Undefined index: 06 in C:xampphtdocsctaappcontrolgraficosGrafico_Chamados.class.php on line 75
Notice: Undefined offset: 28 in C:xampphtdocsctaappcontrolgraficosGrafico_Chamados.class.php on line 78
Notice: Undefined offset: 2018 in C:xampphtdocsctaappcontrolgraficosGrafico_Chamados.class.php on line 78

linha 75: // Add mes ao ano
$acessos[0][$a][$m] += 1;


linha 78: // Add qtde ao Dia/Ano/Mes
$acessos[$d][$a][$m] += 1;


Obrigado

MC

Boas Miguel;

No Adianti Library, você tem um exemplo sobre este gráfico, ele fica em Logs -> Estatísticas de acesso.

Este exemplo acima ele é um pouco mais completo, adicionando um form onde vc pode selecionar
qual usuário você quer o gráfico, data Inicial e Data Final, e tambem os resumos do lado direito,

Erro - Undefined offset: O problema de índice ocorre SEMPRE que está a procurar um indice na array que não existe.

Baseado no exemplo acima o erro esta ocorrendo entre as linha 96 à 105
onde:

$d = Dia da variavel $log->login_time
$m = Mes da variavel $log->login_time
$a = Ano da variavel $log->login_time

login_time refere-se ao campo no seu banco de dados de Log
assim acredito que algum deles esta retornando vazio, isso significa que a sua query esta falha.

use logo abaixo das variaveis um var_dump para saber os resultados delas

exemplo

var_dump( $d, $m, $a );

no exemplo acima na linha 99

Abraços
Marco Aurelio
ML

Boa noite, desde já agradeço tua ajuda.

Resultado do var_dump() - usuario Admin - periodo ultimos 2 dias

string(2) "03" string(2) "10" string(4) "2018"
string(2) "03" string(2) "10" string(4) "2018" string(2) "04" string(2) "10" string(4) "2018"