menu
Fórum Adianti
menu Menu
Criar um botão de ação para expandir ou comprimir os grupos de um DataGrid. Estive pesquisando como expandir ou comprimir os grupos do Datagrid, a solução encontrada no fórum, foi um post de 2017, através de JS, porém preciso que seja através da ação de um botão, como não tenho muita experiência nessa área do JS, gostaria de saber se existe essa possibilidade. Agradeço qualquer dica! ...
DA
Criar um botão de ação para expandir ou comprimir os grupos de um DataGrid.  
Estive pesquisando como expandir ou comprimir os grupos do Datagrid, a solução encontrada no fórum, foi um post de 2017, através de JS, porém preciso que seja através da ação de um botão, como não tenho muita experiência nessa área do JS, gostaria de saber se existe essa possibilidade.

Agradeço qualquer dica!

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 (4)


NR

Tente o seguinte:
  1. <?php
  2. $this->form->addButton('Ocultar/Expandir'"$('tr.info').click();",'fa:check');
  3. ?>
DA

Bom dia, Nataniel

Agora que consegui retornar ao projeto, sua resposta como sempre funcionou perfeitamente.

Mudei para um Actionlink e criei uma função com o comando, para poder usá-la no onShow, porém ela não funciona, só no click do botão, a intenção era trazer tudo comprimido.

Segue o código para avaliação e ajuda, para me indicar onde estou errando.

  1. <?php
  2. /**
  3. * MapaPreventivaForm
  4. *
  5. * @version   
  6. * @package   
  7. * @subpackage
  8. * @author    
  9. * @copyright 
  10. * @license   
  11. */
  12. class MapaPreventivaForm extends TPage
  13. {
  14.     protected $form// form 
  15.   
  16.     use Adianti\base\AdiantiStandardListTrait// Standard form methods
  17.  
  18.     /** 
  19.      * Class constructor
  20.      * Creates the page and the registration form 
  21.      */ 
  22.     function __construct()
  23.     {
  24.         parent::__construct();
  25.      
  26.         $this->form = new BootstrapFormBuilder('form_MapaPreventiva');
  27.         $this->form->setFormTitle('<b>Mapa de Manutenção</b>');
  28.         $this->indicator1 = new THtmlRenderer('app/resources/info-box.html');
  29.         $this->indicator2 = new THtmlRenderer('app/resources/info-box.html');
  30.         $this->indicator3 = new THtmlRenderer('app/resources/info-box.html');
  31.         $this->indicator4 = new THtmlRenderer('app/resources/info-box.html');
  32.         $this->datagrid = new BootstrapDatagridWrapper(new TDataGrid); 
  33.         $this->datagrid->setGroupColumn('placa''<i>Equipamento: </i> <b>{placa}  {equipamento} </b>');
  34.         $this->datagrid->setHeight(200);
  35.         $this->datagrid->name 'grid_manu';
  36.         
  37.         $action3 = new TDataGridAction(array($this'onGeraProg'), ['id' => '{id}','medida_id'=>'{medida_id}''troca'=>'{troca}','leitura'=>'{leitura}','periodo'=>'{periodo}','register_state' => 'false'] );
  38.         $this->datagrid->addAction($action3'Gera Programação''fa:edit #000000');
  39.         $this->datagrid->style "width: 100%";
  40.         $this->datagrid->makeScrollable();
  41.         $this->proggrid = new BootstrapDatagridWrapper(new TDataGrid); 
  42.         $this->proggrid->setGroupColumn('preventiva_id''<i>Equipamento: </i> <b>{placa}  {equipamento} </b>');
  43.         $this->proggrid->setHeight(200);
  44.         $this->proggrid->style "width: 100%";
  45.         $this->proggrid->makeScrollable();
  46.         $this->tacogrid = new BootstrapDatagridWrapper(new TDataGrid); 
  47.         $this->tacogrid->setHeight(200);
  48.         $this->tacogrid->style "width: 100%";
  49.         $this->tacogrid->makeScrollable();       
  50.         
  51.         $this->bategrid = new BootstrapDatagridWrapper(new TDataGrid); 
  52.         $this->bategrid->setHeight(200);
  53.         $this->bategrid->style "width: 100%";
  54.         $this->bategrid->makeScrollable();    
  55.        
  56.         // create the datagrid column
  57.         $column_medida= new TDataGridColumn('medida','Medida','left','50%');
  58.         $column_troca= new TDataGridColumn('troca','Troca','left','10%');
  59.         $column_periodo = new TDataGridColumn('periodo','Período','left','10%');
  60.         $column_leitura = new TDataGridColumn('leitura','Leitura','left','10%');
  61.         $column_hoje = new TDataGridColumn('hoje','Hoje','left','10%');
  62.                 // enabled AutoHide
  63.         // create the datagrid column
  64.         $column_prg_medida= new TDataGridColumn('medida','Medida','left','40%');
  65.         $column_prg_vlratual= new TDataGridColumn('valor_atual','Atual','left','10%');
  66.         $column_prg_vlranter= new TDataGridColumn('valor_anterior','Anterior','left','10%');
  67.         $column_prg_ordem   = new TDataGridColumn('ordem_servico','O.S.','left','10%');
  68.         $column_prg_dataanter = new TDataGridColumn('data_anterior','Periodo','left','10%');
  69.         $column_prg_situacao = new TDataGridColumn('situacao','Status','left','20%');
  70.         $column_taco_equipto= new TDataGridColumn('equipto','Equipamento','left','30%');
  71.         $column_taco_documento= new TDataGridColumn('documento','Documento','left','10%');
  72.         $column_taco_emissao= new TDataGridColumn('emissao','Emissao','left','10%');
  73.         $column_taco_validade= new TDataGridColumn('validade','Validade','left','10%');
  74.         $column_taco_situacao= new TDataGridColumn('situacao','Certificado','left','30%');
  75.         $column_taco_certificado= new TDataGridColumn('certificado','Situação','left','0%');
  76.         $column_bate_equipto= new TDataGridColumn('equipamento','Equipamento','left','40%');
  77.         $column_bate_serie= new TDataGridColumn('serie','Serie','left','20%');
  78.         $column_bate_fabricante= new TDataGridColumn('fabricante','Fabricante','left','10%');
  79.         $column_bate_validade= new TDataGridColumn('data_validade','Garantia','left','10%');
  80.         $column_bate_situacao= new TDataGridColumn('situacao','Situação','left','20%');
  81.         $empresa_id = new TDBUniqueSearch('empresa_id','pcmman','Empresas','id','descricao');
  82.         $empresa_id->setSize('100%');
  83.         $empresa_id->setMinLength(0);
  84.         $this->form->addFields( [ new TLabel('Empresa') , $empresa_id ]);
  85.         // add the columns to the DataGrid
  86.      //   $this->datagrid->addColumn($column_placa);
  87.      //   $this->datagrid->addColumn($column_equipto);
  88.         $this->datagrid->addColumn($column_medida);
  89.         $this->datagrid->addColumn($column_troca);
  90.         $this->datagrid->addColumn($column_periodo);
  91.         $this->datagrid->addColumn($column_leitura);
  92.         $this->datagrid->addColumn($column_hoje);
  93.    
  94.         $column_hoje->setTransformer( function ($value) {
  95.         
  96.             if ($value)
  97.             {
  98.                 $value TDate::convertToMask($value'yyyy-mm-dd''dd/mm/yyyy');
  99.                 return $value;
  100.              }
  101.           });
  102.           $column_periodo->setTransformer( function ($value) {
  103.         
  104.             if ($value)
  105.             {
  106.                 $value TDate::convertToMask($value'yyyy-mm-dd''dd/mm/yyyy');
  107.                 return $value;
  108.              }
  109.           });
  110.        
  111.          // add the search form actions
  112.           $this->form->addAction('Atualizar', new TAction( array( $this'onProcLog')), 'fa:reply red');
  113.           $this->form->addActionLink('Ocultar/Expandir',  new TAction([$this'abrefecha']), 'fa:check blue');
  114.           $this->proggrid->addColumn($column_prg_medida);
  115.           $this->proggrid->addColumn($column_prg_vlranter);
  116.           $this->proggrid->addColumn($column_prg_vlratual);
  117.           $this->proggrid->addColumn($column_prg_ordem);
  118.           $this->proggrid->addColumn($column_prg_dataanter);
  119.           $this->proggrid->addColumn($column_prg_situacao);
  120.           $column_prg_dataanter->setTransformer( function ($value) {
  121.           
  122.               if ($value)
  123.               {
  124.                   $value TDate::convertToMask($value'yyyy-mm-dd''dd/mm/yyyy');
  125.                   return $value;
  126.                }
  127.             });
  128.             $column_prg_situacao->setTransformer( function ($value) {
  129.                 if ($value == '0')
  130.                 {
  131.                     $div = new TElement('span');
  132.                     $div->class="label label-primary";
  133.                     $div->style="text-shadow:none; font-size:12px";
  134.                     $div->add('Aguardando O.S');
  135.                     return $div;
  136.                 }
  137.                 else
  138.                 if ($value == '1')
  139.                 {
  140.                     $div = new TElement('span');
  141.                     $div->class="label label-danger";
  142.                     $div->style="text-shadow:none; font-size:12px";
  143.                     $div->add('Em manutenção');
  144.                     return $div;
  145.                 }
  146.                 else
  147.                 {
  148.                   $div = new TElement('span');
  149.                   $div->class="label label-success";
  150.                   $div->style="text-shadow:none; font-size:12px";
  151.                   $div->add('Concluido');
  152.                   return $div;
  153.               }
  154.             });
  155.             
  156.             $this->tacogrid->addColumn($column_taco_equipto);
  157.             $this->tacogrid->addColumn($column_taco_documento);
  158.         //    $this->tacogrid->addColumn($column_taco_emissao);
  159.             $this->tacogrid->addColumn($column_taco_validade);
  160.             $this->tacogrid->addColumn($column_taco_situacao);
  161.             $this->tacogrid->addColumn($column_taco_certificado);
  162.             $column_taco_certificado->setVisibility(false);
  163.             $column_taco_validade->setTransformer( function ($value) {
  164.           
  165.                 if ($value)
  166.                 {
  167.                     $value TDate::convertToMask($value'yyyy-mm-dd''dd/mm/yyyy');
  168.                     return $value;
  169.                  }
  170.               });        
  171.               $column_taco_emissao->setTransformer( function ($value) {
  172.           
  173.                 if ($value)
  174.                 {
  175.                     $value TDate::convertToMask($value'yyyy-mm-dd''dd/mm/yyyy');
  176.                     return $value;
  177.                  }
  178.               });    
  179.               $column_taco_situacao->setTransformer( function ($value,$object,$row) {
  180.                 if ($object->certificado == '0')
  181.                 {
  182.                     $div = new TElement('span');
  183.                     $div->class="label label-success";
  184.                     $div->style="text-shadow:none; font-size:12px";
  185.                     $div->add('No Prazo');
  186.                     return $div;
  187.                 }
  188.                 else
  189.                 if ($object->certificado == '1')
  190.                 {
  191.                     $div = new TElement('span');
  192.                     $div->class="label label-info";
  193.                     $div->style="text-shadow:none; font-size:12px";
  194.                     $div->add($value);
  195.                     return $div;
  196.                 }
  197.                 else
  198.                 if ($object->certificado == '2')
  199.                 {
  200.                     $div = new TElement('span');
  201.                     $div->class="label label-danger";
  202.                     $div->style="text-shadow:none; font-size:12px";
  203.                     $div->add('Vencido');
  204.                     return $div;
  205.                 }
  206.                 else
  207.                 {
  208.                     $div = new TElement('span');
  209.                     $div->class="label label-default";
  210.                     $div->style="text-shadow:none; font-size:12px";
  211.                     $div->add('Inativo');
  212.                     return $div;
  213.                 }
  214.             });
  215.               $this->bategrid->addColumn($column_bate_equipto);
  216.               $this->bategrid->addColumn($column_bate_serie);
  217.               $this->bategrid->addColumn($column_bate_fabricante);
  218.               $this->bategrid->addColumn($column_bate_validade);
  219.               $this->bategrid->addColumn($column_bate_situacao);
  220.   
  221.   
  222.               $column_bate_validade->setTransformer( function ($value) {
  223.             
  224.                   if ($value)
  225.                   {
  226.                       $value TDate::convertToMask($value'yyyy-mm-dd''dd/mm/yyyy');
  227.                       return $value;
  228.                    }
  229.                 });   
  230.                 $column_bate_situacao->setTransformer( function ($value) {
  231.                     if ($value == '1')
  232.                     {
  233.                         $div = new TElement('span');
  234.                         $div->class="label label-danger";
  235.                         $div->style="text-shadow:none; font-size:12px";
  236.                         $div->add('Vencida');
  237.                         return $div;
  238.                     }  
  239.                 });
  240.         // create the datagrid model
  241.         $this->datagrid->createModel();
  242.         $this->proggrid->createModel(); 
  243.         $this->tacogrid->createModel();
  244.         $this->bategrid->createModel();
  245.         // creates the page navigation
  246.      
  247.         // creates the form 
  248.         $panel = new TPanelGroup('<b>Mapa de Programação Preventiva</b>','orange');
  249.         $panel->add($this->datagrid);
  250.         $panel2 = new TPanelGroup('<b>Programações em Andamento</b>','yellow');
  251.        $panel2->add($this->proggrid);
  252.        $panel3 = new TPanelGroup('<b>Situação de Tacógrafos</b>','#dde171');
  253.        $panel3->add($this->tacogrid);
  254.        $panel4 = new TPanelGroup('<b>Garantia das Baterias</b>','#dde171');
  255.        $panel4->add($this->bategrid);
  256.       
  257.          // vertical box container 
  258.         $container = new TVBox;
  259.         $container->style ='width: 100%';
  260.         $div = new TElement('div');
  261.         $div->class "row";
  262.      //   $div->add( TElement::tag('div', $this->label_dashboard, ['class' => 'col-sm-12']) );
  263.         $div->addTElement::tag('div'$this->indicator1, ['class' => 'col-sm-3']) );
  264.         $div->addTElement::tag('div'$this->indicator2, ['class' => 'col-sm-3']) );
  265.         $div->addTElement::tag('div'$this->indicator3, ['class' => 'col-sm-3']) );
  266.         $div->addTElement::tag('div'$this->indicator4, ['class' => 'col-sm-3']) );
  267.      //   $div->add( TElement::tag('div', TPanelGroup::pack('<b>Mapa de Programação Preventiva</b>', $this->datagrid), ['class' => 'col-sm-12']) );
  268.         $div->addTElement::tag('div',$panel , ['class' => 'col-sm-12']) );
  269.         $div->addTElement::tag('div',$panel2, ['class' => 'col-sm-12']) );
  270.         $div->addTElement::tag('div',$panel3, ['class' => 'col-sm-6']) );
  271.         $div->addTElement::tag('div',$panel4, ['class' => 'col-sm-6']) );
  272.         $container->add($this->form);
  273.         $container->add($div);
  274.         parent::add($container);
  275.         
  276.    }
  277.   public static function abrefecha()
  278.    {
  279.     TScript::create("$('tr.info').click();");
  280.    }
  281.    public function onProcLog$param null )
  282.    {
  283.    
  284.       try
  285.       {
  286.             $dataform $this->form->getData();
  287.             $source TTransaction::open('pcmman');
  288.           
  289.             if (!$param['empresa_id']) 
  290.             {
  291.                 $mapa_preventiva  ViewMapapreventiva::orderBy('placa,medida_id')->load();
  292.                 $programacao      ViewProgramacao::where('situacao','<>','2')->orderBy('preventiva_id')->load();
  293.                 $preventivaexecuta ViewMapapreventiva::count();
  294.                 $aguardando        ViewProgramacao::where('situacao','=','0')->count();
  295.                 $manutencao        ViewProgramacao::where('situacao','=','1')->count();
  296.                 $concluido         ViewProgramacao::where('situacao','=','2')->count();
  297.                 $tacografo         ViewTacografo::orderBy('validade')->load();
  298.                 $baterias          ViewBaterias::orderBy('data_validade')->load();     
  299.               }
  300.              else
  301.             {        
  302.                 $mapa_preventiva  ViewMapapreventiva::where('empresa','=',$param['empresa_id'])->orderBy('placa,medida_id')->load();
  303.                 $programacao      ViewProgramacao::where('situacao','<>','2')->where('empresa','=',$param['empresa_id'])->orderBy('preventiva_id')->load();
  304.                 $preventivaexecuta ViewMapapreventiva::where('empresa','=',$param['empresa_id'])->count();
  305.                 $aguardando        ViewProgramacao::where('situacao','=','0')->where('empresa','=',$param['empresa_id'])->count();
  306.                 $manutencao        ViewProgramacao::where('situacao','=','1')->where('empresa','=',$param['empresa_id'])->count();
  307.                 $concluido         ViewProgramacao::where('situacao','=','2')->where('empresa','=',$param['empresa_id'])->count();
  308.                 $tacografo         ViewTacografo::where('empresa','=',$param['empresa_id'])->orderBy('validade')->load();
  309.                 $baterias          ViewBaterias::where('empresa','=',$param['empresa_id'])->orderBy('data_validade')->load();
  310.                
  311.             } 
  312.             $this->datagrid->clear();
  313.             if ($mapa_preventiva)
  314.             {
  315.                 
  316.                 foreach ($mapa_preventiva as $mapa)
  317.                 {
  318.                     $programa      = new stdClass;
  319.                     $programa->id            $mapa->id;
  320.                     $programa->placa         $mapa->placa;
  321.                     $programa->equipamento   $mapa->equipamento;
  322.                     $programa->medida        $mapa->medida;
  323.                     $programa->troca         $mapa->troca;
  324.                     $programa->periodo       $mapa->periodo;
  325.                     $programa->leitura       $mapa->leitura;
  326.                     $programa->hoje          $mapa->hoje;
  327.                     $programa->medida_id     $mapa->medida_id;
  328.                     
  329.                     $this->datagrid->addItem($programa);
  330.                   
  331.                 }
  332.             }  
  333.             $this->proggrid->clear();
  334.             if ($programacao)
  335.             {
  336.                 
  337.                 foreach ($programacao as $manut)
  338.                 {
  339.                     $programa      = new stdClass;
  340.                     $programa->id              $manut->id;
  341.                     $programa->preventiva_id   $manut->preventiva_id;
  342.                     $programa->itemplano_id    $manut->itemplano_id;
  343.                     $programa->valor_atual     $manut->valor_atual;
  344.                     $programa->valor_anterior  $manut->valor_anterior;
  345.                     $programa->data_anterior   $manut->data_anterior;
  346.                     $programa->situacao        $manut->situacao;
  347.                     $programa->data_manut      $manut->data_manut;
  348.                     $programa->ordem_servico   $manut->ordem_servico;
  349.                     $programa->medida          $manut->medida;
  350.                     $programa->equipamento     $manut->equipamento;
  351.                     $programa->placa           $manut->placa;
  352.                     $this->proggrid->addItem($programa);
  353.                   
  354.                 }
  355.             }  
  356.             $this->tacogrid->clear();
  357.             if ($tacografo)
  358.             {
  359.                 
  360.                 foreach ($tacografo as $manut)
  361.                 {
  362.                     $programa      = new stdClass;
  363.                   
  364.                     $programa->documento       $manut->documento;
  365.                     $programa->emissao         $manut->emissao;
  366.                     $programa->validade        $manut->validade;
  367.                     $programa->situacao        $manut->situacao;
  368.                     $programa->equipto         $manut->equipto;
  369.                     $programa->certificado     $manut->certificado;
  370.                    
  371.                     $this->tacogrid->addItem($programa);
  372.                   
  373.                 }
  374.             }  
  375.             $this->bategrid->clear();
  376.             if ($baterias)
  377.             {
  378.                 
  379.                 foreach ($baterias as $manut)
  380.                 {
  381.                     $programa      = new stdClass;
  382.                   
  383.                     $programa->equipamento     $manut->equipamento;
  384.                     $programa->serie           $manut->serie;
  385.                     $programa->fabricante      $manut->fabricante;
  386.                     $programa->situacao        $manut->situacao;
  387.                     $programa->data_validade   $manut->data_validade;
  388.                    
  389.                     $this->bategrid->addItem($programa);
  390.                   
  391.                 }
  392.             }  
  393.          $this->indicator1->enableSection('main', ['title' => 'A programar''icon' => 'bullhorn''background' => 'red''value' => number_format($preventivaexecuta,0,',','.')] ); 
  394.          $this->indicator2->enableSection('main', ['title' => 'Aguardando O.S''icon' => 'clock''background' => 'blue''value' => number_format($aguardando,0,',','.')] );     
  395.          $this->indicator3->enableSection('main', ['title' => 'Em Manutenção''icon' => 'wrench''background' => 'orange''value' => number_format($manutencao,0,',','.')] );     
  396.          $this->indicator4->enableSection('main', ['title' => 'Concluidas''icon' => 'thumbs-up''background' => 'green''value' => number_format($concluido,0,',','.')] );     
  397.          $this->form->setData($dataform);  
  398.         
  399.         }
  400.       catch (Exception $e
  401.     {
  402.         new TMessage('error'$e->getMessage());
  403.     }             
  404.    }
  405.     public function onGeraProg$param )
  406.     {
  407.         $action = new TAction(array($this'programar'));
  408.         $action->setParameters($param); // pass the key parameter ahead
  409.         
  410.         // shows a dialog to the user
  411.         new TQuestion('Deseja Programar essa manutenção?'$action);   
  412.     }  
  413.     public function programar($param){
  414.         try  
  415.         { 
  416.           TTransaction::open('pcmman'); 
  417.             $data = new Programacao;
  418.             $data->preventiva_id = (int) $param['id'];
  419.             $data->itemplano_id  = (int) $param['medida_id'];
  420.             $data->valor_anterior = (int) $param['troca'];
  421.             $data->valor_atual   = (int) $param['leitura'];
  422.             $data->data_manut    date('Y-m-d');
  423.             $data->situacao      0;
  424.             $data->data_anterior TDate::convertToMask($param['periodo'],'dd/mm/yyyy','yyyy-mm-dd');
  425.             $data->store();
  426.             TTransaction::close();
  427.             $this->onProcLog();
  428.          }
  429.          catch (Exception $e// in case of exception
  430.         {
  431.           new TMessage('error'$e->getMessage()); // shows the exception error message
  432.               TTransaction::rollback(); // undo all pending operations
  433.         
  434.        }
  435.     function show()
  436.    {
  437.        $this->onProcLog();
  438.        $this->abrefecha();
  439.        parent::show();
  440.    }       
  441. }
  442. ?>
NR

Provavelmente o javascript está executando antes do término do carregamento/processamento da página. Tente o seguinte:
  1. <?php
  2. public static function abrefecha()
  3. {
  4.        TScript::create("
  5.            $(function(){
  6.                $('tr.info').click();
  7.            });
  8.        ");
  9. }
  10. ?>
DA

Bom dia, Nataniel

Funcionou certinho agora.

Só para compreender a inclusão de FUNCTION no script, ele cria a função no JS e depois ela será chamada na sequência do processo da função SHOW, diferente de antes que executava o comando direto antes da conclusão na chamada da função abrefecha(), trocando em miúdo seria isso ou não?

Grato por mais esse auxílio!