JL
dashboard criacao
estou com esse codigo de criação de dashboard relacionado a visualização de chamados abertos onde tem um campo da tabela chamado zb7_projet fica os projetos ou como conhecidos para que aquele chamado está sendo aberto com isso criamos essa pág. de dashboard adicionei um filtro do projeto onde ele vai no banco e vê os dados relacionado as data de e ate e o projeto que quero porem qual a principal problemática
no primeiro indicador onde temos o seguinte trecho de codigo
coloquei o zb7010 e ele me retorna o numero total de todos os chamados meu pensamento era de que a partir do momento que consulta se o dashboard o valor fosse filtrado para somente o do projeto em especifico irei mandar como está a tabela , (também sou novo com o framework)ou seja diferentemente como está agora que filtra o total de chamados da tabela, queria que ele filtra se através do projeto escolhido onde se o usuário escolheu suporte vai me retornar todos os chamados do suporte e assim suscetivelmente queria uma luz em relação a isso
minha tabela onde o projet tem valor null por que no meu framework tem uma variável onde quando abrimos um chamado ele ja vai com uma string dizendo qual e o projeto do chamado onde tbm vou passar essa array
(tabela sql que uso para armazena os chamados tecnicos solcitados)
com essa função
no primeiro indicador onde temos o seguinte trecho de codigo
- <?php
- $indicator1->enableSection('main', [
- 'title' => 'Total Geral Armazenado',
- 'icon' => 'fas fa-envelope',
- 'background' => 'green',
- 'value' => Zb7010::count()
- ]);
- ?>
coloquei o zb7010 e ele me retorna o numero total de todos os chamados meu pensamento era de que a partir do momento que consulta se o dashboard o valor fosse filtrado para somente o do projeto em especifico irei mandar como está a tabela , (também sou novo com o framework)ou seja diferentemente como está agora que filtra o total de chamados da tabela, queria que ele filtra se através do projeto escolhido onde se o usuário escolheu suporte vai me retornar todos os chamados do suporte e assim suscetivelmente queria uma luz em relação a isso
minha tabela onde o projet tem valor null por que no meu framework tem uma variável onde quando abrimos um chamado ele ja vai com uma string dizendo qual e o projeto do chamado onde tbm vou passar essa array
- <?php
- namespace Adianti\Util;
- use stdClass;
- class AdiantiVariaveisSistema
- {
- static function listaProjetosChamados()
- {
- $array = array();
- $array['01'] = 'Equipamentos de TI (próprios)';
- $array['02'] = 'Equipamentos de TI (Terceiros)';
- $array['03'] = 'Compra de Equipamentos';
- $array['04'] = 'Sistema Protheus - TOTVS';
- $array['05'] = 'Email Corporativo';
- $array['06'] = 'Internet';
- $array['07'] = 'Aplicativo de Terceiros';
- $array['08'] = 'Sistema Giros';
- $array['09'] = 'Infraestrutura';
- $array['10'] = 'Atendimento Auditoria';
- $array['11'] = 'Servidor de Arquivos';
- $array['12'] = 'Atendimento DAD';
- return $array;
- }
- ?>
(tabela sql que uso para armazena os chamados tecnicos solcitados)
ZB7_FILIAL varchar 15
ZB7_DOC varchar 50
ZB7_DATA date NULL
ZB7_HORA time NULL
ZB7_USUARI varchar 50
ZB7_TITULO text 2147483647
ZB7_DESCRI text 2147483647
ZB7_PROJET int NULL
ZB7_CATEGO int NULL
ZB7_PRIORI char 1
ZB7_STATUS char 2
ZB7_CHAPA varchar 50
ZB7_FILORI varchar 15
D_E_L_E_T_ char 1
R_E_C_N_O_ int NULL
R_E_C_D_E_L_ char 1
- <?php
- use Adianti\Control\TAction;
- use Adianti\Control\TPage;
- use Adianti\Control\TWindow;
- use Adianti\Core\AdiantiCoreApplication;
- use Adianti\Core\AdiantiCoreTranslator;
- use Adianti\Database\TCriteria;
- use Adianti\Database\TFilter;
- use Adianti\Database\TRepository;
- use Adianti\Database\TTransaction;
- use Adianti\Registry\TSession;
- use Adianti\Util\AdiantiFuncoesSistema;
- use Adianti\Util\AdiantiVariaveisSistema;
- use Adianti\Widget\Base\TElement;
- use Adianti\Widget\Container\TPanelGroup;
- use Adianti\Widget\Container\TVBox;
- use Adianti\Widget\Datagrid\TDataGrid;
- use Adianti\Widget\Datagrid\TDataGridAction;
- use Adianti\Widget\Datagrid\TDataGridColumn;
- use Adianti\Widget\Datagrid\TPageNavigation;
- use Adianti\Widget\Dialog\TMessage;
- use Adianti\Widget\Dialog\TQuestion;
- use Adianti\Widget\Form\TCombo;
- use Adianti\Widget\Form\TDate;
- use Adianti\Widget\Form\TEntry;
- use Adianti\Widget\Form\TLabel;
- use Adianti\Widget\Form\TMultiSearch;
- use Adianti\Widget\Util\TXMLBreadCrumb;
- use Adianti\Wrapper\BootstrapDatagridWrapper;
- use Adianti\Wrapper\BootstrapFormBuilder;
- use Adianti\Widget\Template\THtmlRenderer;
- /**
- * ChamadosDashboardView
- *
- * @version 3.0
- * @package giros-plus
- * @author Josivaldo Barbosa
- */
- class ChamadosDashboardView extends TPage
- {
- use Adianti\base\AdiantiStandardListTrait;
- /**
- * Class constructor
- * Creates the page
- */
- function __construct()
- {
- parent::__construct();
- $this->addFilterField('ZB7_DATA', '>=', 'ZB7_DATA_DE'); // filterField, operator, formField
- $this->addFilterField('ZB7_DATA', '<=', 'ZB7_DATA_ATE'); // filterField, operator, formField
- $this->addFilterField('ZB7_PROJET', '=', 'ZB7_PROJET'); // filterField, operator, formField
- $this->form = new BootstrapFormBuilder('form_dashboard_Zb7010');
- $this->form->setFormTitle('Parâmetros');
- $ZB7_DATA_DE = new TDate('ZB7_DATA_DE');
- $ZB7_DATA_ATE = new TDate('ZB7_DATA_ATE');
- $ZB7_PROJET = new TCombo('ZB7_PROJET');
- $ZB7_DATA_DE->setDatabaseMask('yyyymmdd');
- $ZB7_DATA_DE->setMask('dd/mm/yyyy');
- $ZB7_DATA_ATE->setDatabaseMask('yyyymmdd');
- $ZB7_DATA_ATE->setMask('dd/mm/yyyy');
- //$ZB7_DATA_DE->addValidation('Realizado De', new TRequiredValidator);
- //$ZB7_DATA_ATE->addValidation('Realizado Até', new TRequiredValidator);
- $ZB7_PROJET->addItems(AdiantiVariaveisSistema::listaProjetosChamados());
- $this->form->addFields(
- [new TLabel('Realizado De')],
- [$ZB7_DATA_DE],
- [new TLabel('Realizado Até')],
- [$ZB7_DATA_ATE,]
- );
- $this->form->addFields([new TLabel('projeto')], [$ZB7_PROJET]);
- $this->form->setData(TSession::getValue(__CLASS__ . '_filter_data'));
- $this->form->addExpandButton('Expandir');
- $btn = $this->form->addAction('Apresentar', new TAction([$this, 'onSearch']), 'fa:desktop');
- $btn->class = 'btn btn-sm btn-primary';
- $vbox = new TVBox;
- $vbox->style = 'width: 100%';
- $div = new TElement('div');
- $div->class = "row";
- $indicator1 = new THtmlRenderer('app/resources/info-box.html');
- $indicator2 = new THtmlRenderer('app/resources/info-box.html');
- TTransaction::open('protheus'); // abre uma transação
- $conn = TTransaction::get(); // obtém a conexão
- $queryAbertos = TSession::getValue(__CLASS__ . '_filter_Chamados_Abertos');
- if (isset($queryAbertos) && $queryAbertos != NULL) {
- } else {
- $queryAbertos = "SELECT count(*) as em_aberto from ZB7010 WHERE ZB7_STATUS <> '04' AND D_E_L_E_T_ = ''";
- TSession::setValue(__CLASS__ . '_filter_Chamados_Abertos', $queryAbertos);
- $queryStatus = "SELECT ZB7_STATUS,count(*) as total_status from ZB7010 WHERE D_E_L_E_T_ = '' GROUP BY ZB7_STATUS ORDER BY ZB7_STATUS";
- TSession::setValue(__CLASS__ . '_filter_Chamados_Status', $queryStatus);
- }
- $resultZB7Open = $conn->query($queryAbertos);
- $total_em_aberto = 0;
- foreach ($resultZB7Open as $item) {
- $total_em_aberto = $item['em_aberto'];
- }
- $indicator1->enableSection('main', [
- 'title' => 'Total Geral Armazenado',
- 'icon' => 'fas fa-envelope',
- 'background' => 'green',
- 'value' => Zb7010::count()
- ]);
- $indicator2->enableSection('main', [
- 'title' => 'Em aberto no período',
- 'icon' => 'fas fa-envelope-open-text',
- 'background' => 'orange',
- 'value' => $total_em_aberto
- ]);
- $div->add($i1 = TElement::tag('div', $indicator1));
- $div->add($i2 = TElement::tag('div', $indicator2));
- $queryStatus = TSession::getValue(__CLASS__ . '_filter_Chamados_Status');
- $resultZB7Movi = $conn->query($queryStatus);
- $total_00 = 0;
- $total_01 = 0;
- $total_02 = 0;
- $total_03 = 0;
- $total_04 = 0;
- $total_05 = 0;
- foreach ($resultZB7Movi as $item) {
- if ($item['ZB7_STATUS'] == '00') {
- $total_00 = (float) $item['total_status'];
- } else if ($item['ZB7_STATUS'] == '01') {
- $total_01 = (float) $item['total_status'];
- } else if ($item['ZB7_STATUS'] == '02') {
- $total_02 = (float) $item['total_status'];
- } else if ($item['ZB7_STATUS'] == '03') {
- $total_03 = (float) $item['total_status'];
- } else if ($item['ZB7_STATUS'] == '04') {
- $total_04 = (float) $item['total_status'];
- } else if ($item['ZB7_STATUS'] == '05') {
- $total_05 = (float) $item['total_status'];
- }
- }
- TTransaction::close(); // fecha a transação.
- $g1 = new THtmlRenderer('app/resources/google_bar_chart.html');
- $data = array();
- $data[] = ['Situação', 'Novo', 'Em Atendimento', 'Cancelado pelo solicitante', 'Cancelado pelo suporte', 'Solucionado', 'Reaberto'];
- $data[] = ['', $total_00, $total_01, $total_02, $total_03, $total_04, $total_05];
- # PS: If you use values from database ($row['total'),
- # cast to float. Ex: (float) $row['total']
- // replace the main section variables
- $g1->enableSection('main', array(
- 'data' => json_encode($data),
- 'width' => '100%',
- 'height' => '300px',
- 'title' => 'Quantidades por Situação',
- 'ytitle' => 'Situações',
- 'xtitle' => 'Quantidades',
- 'uniqid' => uniqid()
- ));
- $div->add($i3 = TElement::tag('div', $g1));
- $g2 = new THtmlRenderer('app/resources/google_column_chart.html');
- $data = array();
- $data[] = ['Situação', 'Novo', 'Em Atendimento', 'Cancelado pelo solicitante', 'Cancelado pelo suporte', 'Solucionado', 'Reaberto'];
- $data[] = ['', $total_00, $total_01, $total_02, $total_03, $total_04, $total_05];
- # PS: If you use values from database ($row['total'),
- # cast to float. Ex: (float) $row['total']
- // replace the main section variables
- $g2->enableSection('main', array(
- 'data' => json_encode($data),
- 'width' => '100%',
- 'height' => '300px',
- 'title' => 'Quantidades por Situação',
- 'ytitle' => 'Quantidades',
- 'xtitle' => 'Situações',
- 'uniqid' => uniqid()
- ));
- $div->add($i4 = TElement::tag('div', $g2));
- $g3 = new THtmlRenderer('app/resources/google_pie_chart.html');
- $data = array();
- $data[] = ['Situação', 'Quantidade'];
- $data[] = ['Novo', $total_00];
- $data[] = ['Em Atendimento', $total_01];
- $data[] = ['Cancelado pelo solicitante', $total_02];
- $data[] = ['Cancelado pelo suporte', $total_03];
- $data[] = ['Solucionado', $total_04];
- $data[] = ['Reaberto', $total_05];
- # PS: If you use values from database ($row['total'),
- # cast to float. Ex: (float) $row['total']
- // replace the main section variables
- $g3->enableSection('main', array(
- 'data' => json_encode($data),
- 'width' => '100%',
- 'height' => '300px',
- 'title' => 'Quantidades por Situação',
- 'ytitle' => 'Situações',
- 'xtitle' => 'Quantidades',
- 'uniqid' => uniqid()
- ));
- $div->add($i5 = TElement::tag('div', $g3));
- $i1->class = 'col-sm-6';
- $i2->class = 'col-sm-6';
- $i3->class = 'col-sm-6';
- $i4->class = 'col-sm-6';
- $i5->class = 'col-sm-6';
- $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $vbox->add($div);
- parent::add($this->form);
- parent::add($vbox);
- }
- /**
- * Register the filter in the session
- */
- public function onSearch()
- {
- $this->form->validate(); // validate form data
- // get the search form data
- $data = $this->form->getData();
- // Verifique se a data de início e de término foram fornecidas
- if (isset($data->ZB7_DATA_DE) && !empty($data->ZB7_DATA_DE) && isset($data->ZB7_DATA_ATE) && !empty($data->ZB7_DATA_ATE)) {
- // Verifique se um projeto foi selecionado
- if (isset($data->ZB7_PROJET) && !empty($data->ZB7_PROJET)) {
- $queryAbertos = "SELECT count(*) as em_aberto
- FROM ZB7010
- WHERE ZB7_STATUS <> '04'
- AND ZB7_DATA >= '" . $data->ZB7_DATA_DE . "'
- AND ZB7_DATA <= '" . $data->ZB7_DATA_ATE . "'
- AND ZB7_PROJET = '" . $data->ZB7_PROJET . "'
- AND D_E_L_E_T_ = ''";
- $queryStatus = "SELECT ZB7_STATUS, count(*) as total_status
- FROM ZB7010
- WHERE ZB7_DATA >= '" . $data->ZB7_DATA_DE . "'
- AND ZB7_DATA <= '" . $data->ZB7_DATA_ATE . "'
- AND ZB7_PROJET = '" . $data->ZB7_PROJET . "'
- AND D_E_L_E_T_ = ''
- GROUP BY ZB7_STATUS
- ORDER BY ZB7_STATUS";
- } else {
- // Se nenhum projeto for selecionado, não filtre por projeto
- $queryAbertos = "SELECT count(*) as em_aberto
- FROM ZB7010
- WHERE ZB7_STATUS <> '04'
- AND ZB7_DATA >= '" . $data->ZB7_DATA_DE . "'
- AND ZB7_DATA <= '" . $data->ZB7_DATA_ATE . "'
- AND D_E_L_E_T_ = ''";
- $queryStatus = "SELECT ZB7_STATUS, count(*) as total_status
- FROM ZB7010
- WHERE ZB7_DATA >= '" . $data->ZB7_DATA_DE . "'
- AND ZB7_DATA <= '" . $data->ZB7_DATA_ATE . "'
- AND D_E_L_E_T_ = ''
- GROUP BY ZB7_STATUS
- ORDER BY ZB7_STATUS";
- }
- } else {
- // Se nenhuma data for fornecida, filtre apenas por status
- $queryAbertos = "SELECT count(*) as em_aberto
- FROM ZB7010
- WHERE ZB7_STATUS <> '04'
- AND D_E_L_E_T_ = ''";
- $queryStatus = "SELECT ZB7_STATUS, count(*) as total_status
- FROM ZB7010
- WHERE D_E_L_E_T_ = ''
- GROUP BY ZB7_STATUS
- ORDER BY ZB7_STATUS";
- }
- TSession::setValue(__CLASS__ . '_filter_Chamados_Abertos', $queryAbertos);
- TSession::setValue(__CLASS__ . '_filter_Chamados_Status', $queryStatus);
- // fill the form with data again
- $this->form->setData($data);
- // keep the search data in the session
- TSession::setValue(__CLASS__ . '_filter_data', $data);
- // Redirect to the same page to refresh the dashboard
- AdiantiCoreApplication::loadPage('ChamadosDashboardView');
- }
- }
- fiz um codigo se perceber o zb010 ele ta sendo ligado para outra pagina devido a que tem uma ação com o meus banco
- <?php
- use Adianti\Database\TRecord;
- /**
- * Zb7010 Active Record
- * @author <your-name-here>
- */
- class Zb7010 extends TRecord // CHAMADOS TÉCNICOS
- {
- const TABLENAME = 'ZB7010';
- const PRIMARYKEY= 'R_E_C_N_O_';
- const IDPOLICY = 'max'; // {max, serial}
- /**
- * Constructor method
- */
- public function __construct($id = NULL, $callObjectLoad = TRUE)
- {
- parent::__construct($id, $callObjectLoad);
- parent::addAttribute('ZB7_FILIAL');
- parent::addAttribute('ZB7_DOC');
- parent::addAttribute('ZB7_DATA');
- parent::addAttribute('ZB7_HORA');
- parent::addAttribute('ZB7_USUARI');
- parent::addAttribute('ZB7_PROJET');
- parent::addAttribute('ZB7_CATEGO');
- parent::addAttribute('ZB7_TITULO');
- parent::addAttribute('ZB7_DESCRI');
- parent::addAttribute('ZB7_PRIORI');
- parent::addAttribute('ZB7_STATUS');
- parent::addAttribute('ZB7_CHAPA');
- parent::addAttribute('D_E_L_E_T_');
- parent::addAttribute('R_E_C_D_E_L_');
- }
- }
- ?>
com essa função