Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Converter campo Date dentro de um setItemTemplate do TCardView. Boa Tarde, Estou enfrentando o mesmo problema que relatei no post https://adianti.com.br/forum/pt/view_6280?converter-uma-data-para-ddmmyyyy-dentro-de-um-setdisplaymask , lá consegui resolver criando um form para o TSeekButton. Agora para o CardView não sei bem o que fazer, já tentei as diversas formas de conversão usando o TDate sem sucesso. O que vi em comum com os widgets é ...
DA
Converter campo Date dentro de um setItemTemplate do TCardView.  
Boa Tarde,

Estou enfrentando o mesmo problema que relatei no post https://adianti.com.br/forum/pt/view_6280?converter-uma-data-para-ddmmyyyy-dentro-de-um-setdisplaymask , lá consegui resolver criando um form para o TSeekButton.

Agora para o CardView não sei bem o que fazer, já tentei as diversas formas de conversão usando o TDate sem sucesso. O que vi em comum com os widgets é que eles usam um Render para montar, acredito que esse Render não interprete a conversão, se for isso mesmo alguém tem alguma solução ou passou por isso? O Framework não comporta esse tipo de operação? Como resolver?

Ainda estou aprendendo o Adianti, gostaria de alguma dica.

Segue o fonte:
  1. <?php
  2. **
  3.  * TarefaMovimentoList
  4.  *
  5.  * @version    1.0
  6.  * @package   
  7.  * @subpackage 
  8.  * @author     
  9.  * @copyright  
  10.  * @license    
  11.  */
  12. class TarefaMovimentoList extends TPage
  13. {
  14.     private $form$cards$pageNavigation;
  15.     
  16.     use Adianti\Base\AdiantiStandardCollectionTrait;
  17.     public function __construct()
  18.     {
  19.         parent::__construct();
  20.         $this->setDatabase('advday');
  21.         $this->setActiveRecord('TarefaMovimento');
  22.      
  23.         $criteria = new TCriteria;
  24.         $criteria->add(new TFilter('situacao''=','0'));
  25.         $criteria->add(new TFilter('system_user_id','=',TSession::getValue('userid')));
  26.         $this->setCriteria($criteria); // define a standard filter
  27.         $this->addFilterField('numero');
  28.         $this->form = new BootstrapFormBuilder('form_search_Tarefas');
  29.         $this->form->setFormTitle('Movimentação de Tarefas');
  30.         
  31.         $description = new TEntry('numero');
  32.         $this->form->addFields( [new TLabel('Número do Processo:')], [$description] );
  33.         
  34.         $this->form->addAction('Procurar', new TAction([$this'onSearch']), 'fa:search blue');  
  35.         $this->form->addActionLink('Novo',  new TAction(['TarefaMovimentoForm''onEdit']), 'fa:plus-circle green');
  36.         
  37.         $this->cards = new TCardView;
  38.         $this->cards->setUseButton();
  39.         
  40.         $this->setCollectionObject($this->cards);
  41.         
  42.         $this->cards->setContentHeight(170);
  43.  
  44.         //$action   = new TAction([$this, 'onSelect'], ['id'=> '{id}']);
  45.         //$this->cards->addAction($action,   'Seleciona',   'fa:check blue');
  46.         $edit_action   = new TAction(['TarefaMovimentoForm''onEdit'], ['id'=> '{id}']);
  47.         $delete_action = new TAction([$this'onDelete'], ['id'=> '{id}''register_state' => 'false']);
  48.         $encerra_action = new TAction([$this'onEncerra'], ['id'=> '{id}''register_state' => 'false']);
  49.         $this->cards->addAction($edit_action,   'Altera',   'far:edit bg-blue');
  50.         $this->cards->addAction($delete_action'Exclui''far:trash-alt bg-red');
  51.         $this->cards->addAction($encerra_action'Encerra''fas:ban bg-green');  
  52.         $this->cards->setTitleAttribute('tarefas->descricao');
  53.         $this->cards->setItemDataBase('advday');
  54.         //O Problema é nesta atribuição
  55.         $this->cards->setItemTemplate('<div style="float:left;width:50%;padding-right:10px">
  56.         <b>Processo</b> <br> {processos->numero} <br>
  57.         <b>Aberta por</b> <br> {origemnome->name} <br>
  58.         <b>Descricao</b> <br> {tarefa} <br>
  59.         <b>Prazo</b> <br> {inicio} a {final} <br>
  60.             </div>');
  61.         // creates the page navigation
  62.         $this->pageNavigation = new TPageNavigation;
  63.         $this->pageNavigation->setAction(new TAction([$this'onReload']));
  64.        
  65.         // creates the page structure using a table
  66.         $vbox = new TVBox;
  67.         $vbox->style 'width: 100%';
  68.         //$vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  69.         $vbox->add($this->form); // add a row to the fo
  70.         $vbox->add(TPanelGroup::pack(''$this->cards$this->pageNavigation)); // add a row for page navigation
  71.         
  72.         parent::add($vbox);
  73.        
  74.  
  75.     }
  76.     
  77.     /**
  78.      * Item edit action
  79.      */
  80.     public static function onSelect($param NULL)
  81.     {
  82.         TSession::setValue('processo_id'$param['id']);
  83.         AdiantiCoreApplication::loadPage('TarefaMovimentoForm''onLoad');
  84.     }
  85.     public function loadPage()
  86.     {
  87.     }
  88.     public function onEncerra($param)
  89.     {
  90.       try
  91.       {   
  92.        TTransaction::open('advday');
  93.        $tarefa = new TarefaMovimento($param['key']);
  94.        
  95.        $tarefa->situacao '1';
  96.        $tarefa->encerra date('Y-m-d');
  97.        $tarefa->store();
  98.        TTransaction::close(); // close the transaction
  99.            
  100.        new TMessage('info''Tarefa Encerrada!',new TAction(array('TarefaMovimentoList''onReload'),['id' => $param['key']]));
  101.       }
  102.       catch (Exception $e// in case of exception
  103.       {
  104.           new TMessage('error'$e->getMessage());
  105.           TTransaction::rollback();
  106.       }
  107.     }  
  108. }
  109. ?>

Em anexo a imagem de como aparece no browse.

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (2)


DA

Boa Noite,

Continuei minha pesquisa em busca de uma solução para o meu problema e encontrei uma solução alternativa, não sei se é a melhor e mais elegante dentro do Framework.

No model criei um get que devolve o período já convertido.

  1. <?php
  2.  public function get_periodo()
  3.     {
  4.       
  5.         return TDate::date2br($this->inicio).' a '.TDate::date2br($this->final) ; 
  6.    
  7.     }  
  8. ?>

E no List
Modifiquei a linha do setItemTemplate para buscar o período, funcionou da forma desejada agora, mostrando as datas formatadas.
  1. <?php
  2.  $this->cards->setItemTemplate('<div style="float:left;width:50%;padding-right:10px">
  3.         <b>Processo</b> <br> {processos->numero} <br>
  4.         <b>Aberta por</b> <br> {origemnome->name} <br>
  5.         <b>Descricao</b> <br> {tarefa} <br>
  6.         <b>Prazo</b> <br> {periodo} <br>
  7.             </div>');
  8. ?>

Se existe alguma outra solução gostaria de conhecer.
AP

Boa noite.
Gostei muito da sua ideia, estava a tarde toda aqui tentando resolver uma situação.
Aqui eu precisava saber se um campo da tabela possui valor, caso haja vai aparecer um link no TCard, se não houver não vai ter esse link (com aparência de botão).
Fiz uma função no model, como você fez, e lá faço a validação, quando o campo está com algum valor ele dá um retorno desse código todo (html do botão com o link já)
Sou novato no Adianti, adquiri o curso em dezembro agora (2020) e estou gostando muito do framework.