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. $formata_valor = function($valor, $objeto, $row) {
  8. if (is_numeric($valor))
  9. {
  10. return number_format($valor, 2, ".", ".");
  11. }
  12. return $valor;
  13. };
  14. $column_media_primeiro_bi->setTransformer($formata_valor);
  15. ?>


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.


Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework 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. $replaces = [];
  5. $replaces['nota1_primeiro_bi'] = $nota1_primeiro_bi;
  6. $replaces['nota2_primeiro_bi'] = $nota2_primeiro_bi;
  7. $replaces['nota3_primeiro_bi'] = $nota3_primeiro_bi;
  8. // replace the main section variables
  9. $this->html->enableSection('main', $replaces);
  10. ?>


<!--[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. $formata_valor = function($valor, $objeto, $row) {
  12. if (is_numeric($valor))
  13. {
  14. return number_format($valor, 2, ".", ".");
  15. }
  16. return $valor;
  17. };
  18. $column_media_primeiro_bi->setTransformer($formata_valor);
  19. ?>


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!!!