menu
Fórum Adianti
menu Menu
Dificuldade com cálculos no Framework Olá a todos, Implementei um cálculo de média em um FormView e estou com dificuldade para mostrar o mesmo resultado na minha View em HTML. segue código do FormView: ...
ET
Dificuldade com cálculos no Framework  
Olá a todos,

Implementei um cálculo de média em um FormView e estou com dificuldade para mostrar o mesmo resultado na minha View em HTML.
segue código do FormView:

  1. <?php  
  2. $this->detail_list->addColumn( new TDataGridColumn('nota1_primeiro_bi''Nota 1 Primeiro Bimestre''center'100) );
  3.         $this->detail_list->addColumn( new TDataGridColumn('nota2_primeiro_bi''Nota 2 Primeiro Bimestre''center'100) );
  4.         $this->detail_list->addColumn( new TDataGridColumn('nota3_primeiro_bi''Nota 3 Primeiro Bimestre''center'100) );
  5.         $this->detail_list->addColumn$column_media_primeiro_bi = new TDataGridColumn('= ( {nota1_primeiro_bi} + {nota2_primeiro_bi} + {nota3_primeiro_bi} ) / 3',
  6.         'Média Primeiro Bimestre''center'100));
  7.         
  8.         $formata_valor = function($valor$objeto$row) {
  9.                 if (is_numeric($valor)) 
  10.                 {
  11.                     return number_format($valor2"."".");
  12.                 }
  13.                 return $valor;
  14.             };
  15.             
  16.             $column_media_primeiro_bi->setTransformer($formata_valor);
  17. ?>


A minha dificuldade está em fazer o mesmo cálculo na minha view que é um arquivo html. Segue trecho do código:

<tr> <td colspan="2">{$nota1_primeiro_bi}</td> <td colspan="2">{$nota2_primeiro_bi}</td> <td colspan="2">{$nota3_primeiro_bi}</td> <td colspan="2">Média</td> </tr>


Desde já agradeço a ajuda.


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


HD

Bom dia,

Se eu entendi certinho a sua dúvida, você precisa setar seu arquivo HTML que vai renderizar e habilitar as seções para a substituição das variáveis!

  1. <?php 
  2.         // create the HTML Renderer
  3.         $this->html = new THtmlRenderer('app/resources/arquivo_que_vai_renderizar.html');
  4.         
  5.         $replaces = [];
  6.         $replaces['nota1_primeiro_bi']  = $nota1_primeiro_bi;
  7.         $replaces['nota2_primeiro_bi']  = $nota2_primeiro_bi;
  8.         $replaces['nota3_primeiro_bi']  = $nota3_primeiro_bi;
  9.         
  10.         // replace the main section variables
  11.         $this->html->enableSection('main'$replaces);
  12. ?>


<!--[main]--> <tr> <td colspan="2">{$nota1_primeiro_bi}</td> <td colspan="2">{$nota2_primeiro_bi}</td> <td colspan="2">{$nota3_primeiro_bi}</td> <td colspan="2">Média</td> </tr> <!--[/main]-->
ET

Obrigado pelo retorno Hélquisson.

Deixa eu ver se consigo explicar melhor minha dúvida.

Tenho um datagrid, com as seguintes colunas:

  1. <?php  
  2. //No meu htm consigo exibir o valor desta coluna da seguinte forma: <td colspan="2">{$nota1_primeiro_bi}</td>
  3. $this->detail_list->addColumn( new TDataGridColumn('nota1_primeiro_bi''Nota 1 Primeiro Bimestre''center'100) );
  4. //No meu htm consigo exibir o valor desta coluna da seguinte forma: <td colspan="2">{$nota2_primeiro_bi}</td>
  5.         $this->detail_list->addColumn( new TDataGridColumn('nota2_primeiro_bi''Nota 2 Primeiro Bimestre''center'100) );
  6. //No meu htm consigo exibir o valor desta coluna da seguinte forma: <td colspan="2">{$nota3_primeiro_bi}</td>
  7.         $this->detail_list->addColumn( new TDataGridColumn('nota3_primeiro_bi''Nota 3 Primeiro Bimestre''center'100) );
  8. //Gostaria de exibir o valor da coluna abaixo que é claculado também no meu html, mas não sei como.
  9.         $this->detail_list->addColumn$column_media_primeiro_bi = new TDataGridColumn('= ( {nota1_primeiro_bi} + {nota2_primeiro_bi} + {nota3_primeiro_bi} ) / 3',
  10.         'Média Primeiro Bimestre''center'100));
  11.         
  12.         $formata_valor = function($valor$objeto$row) {
  13.                 if (is_numeric($valor)) 
  14.                 {
  15.                     return number_format($valor2"."".");
  16.                 }
  17.                 return $valor;
  18.             };
  19.             
  20.             $column_media_primeiro_bi->setTransformer($formata_valor);
  21. ?>


Meu HTML SERIA:
<tr> <td colspan="2">{$nota1_primeiro_bi}</td> <td colspan="2">{$nota2_primeiro_bi}</td> <td colspan="2">{$nota3_primeiro_bi}</td> <td colspan="2">Aqui é onde quero exibir o valor calculado da coluna $column_media_primeiro_bi</td> </tr>


Desde já agradeço a ajuda.
HD

Erickson, bom dia!

Ok... no seu código no TDataGridColumn na coluna da média, o primeiro parâmetro é o nome da coluna, você tá fazendo o cálculo da média ali dentro. Você pode fazer esse cálculo dentro do setTransformer.

Fiz um exemplo que talvez te ajude.

No DataGrid:

  1. <?php 
  2.         $datagrid = new TDataGrid;
  3.         $nota1_primeiro_bi    = new TDataGridColumn('nota1_primeiro_bi',    'Nota 1',    'center',   '10%');
  4.         $nota2_primeiro_bi    = new TDataGridColumn('nota2_primeiro_bi',    'Nota 2',    'center',   '30%');
  5.         $nota3_primeiro_bi    = new TDataGridColumn('nota3_primeiro_bi',    'Nota 3',    'center',   '30%');
  6.         $media_primeiro_bi   = new TDataGridColumn('media_primeiro_bi',    'Média',     'center',   '30%');
  7.         $datagrid->addColumn($nota1_primeiro_bi);
  8.         $datagrid->addColumn($nota2_primeiro_bi);
  9.         $datagrid->addColumn($nota3_primeiro_bi);
  10.         $calcula_media $datagrid->addColumn($media_primeiro_bi);
  11.         $calcula_media->setTransformer(function($valor$object$row){
  12.             $media = ($object->nota1_primeiro_bi $object->nota2_primeiro_bi $object->nota3_primeiro_bi) / 3;
  13.             return number_format($media,2,'.','');
  14.         });
  15. ?>


No HTML:

<tr> <td colspan="2">{$nota1_primeiro_bi}</td> <td colspan="2">{$nota2_primeiro_bi}</td> <td colspan="2">{$nota3_primeiro_bi}</td> <td colspan="2">{$media_primeiro_bi}</td> </tr>
ET

Bom dia, Hélquisson. Obrigado pela atenção.

Resolvi da seguinte forma no HTML:

<td colspan="2">number_format(evaluate( ({{nota1_primeiro_bi}} + {{nota2_primeiro_bi}} + {{nota3_primeiro_bi}})/3 ), 1, ',', '.')</td>


HD

Bacana Erickson!!!