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:
Em anexo a imagem de como aparece no browse.
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:
- <?php
- **
- * TarefaMovimentoList
- *
- * @version 1.0
- * @package
- * @subpackage
- * @author
- * @copyright
- * @license
- */
- class TarefaMovimentoList extends TPage
- {
- private $form, $cards, $pageNavigation;
- use Adianti\Base\AdiantiStandardCollectionTrait;
- public function __construct()
- {
- parent::__construct();
- $this->setDatabase('advday');
- $this->setActiveRecord('TarefaMovimento');
- $criteria = new TCriteria;
- $criteria->add(new TFilter('situacao', '=','0'));
- $criteria->add(new TFilter('system_user_id','=',TSession::getValue('userid')));
- $this->setCriteria($criteria); // define a standard filter
- $this->addFilterField('numero');
- $this->form = new BootstrapFormBuilder('form_search_Tarefas');
- $this->form->setFormTitle('Movimentação de Tarefas');
- $description = new TEntry('numero');
- $this->form->addFields( [new TLabel('Número do Processo:')], [$description] );
- $this->form->addAction('Procurar', new TAction([$this, 'onSearch']), 'fa:search blue');
- $this->form->addActionLink('Novo', new TAction(['TarefaMovimentoForm', 'onEdit']), 'fa:plus-circle green');
- $this->cards = new TCardView;
- $this->cards->setUseButton();
- $this->setCollectionObject($this->cards);
- $this->cards->setContentHeight(170);
- //$action = new TAction([$this, 'onSelect'], ['id'=> '{id}']);
- //$this->cards->addAction($action, 'Seleciona', 'fa:check blue');
- $edit_action = new TAction(['TarefaMovimentoForm', 'onEdit'], ['id'=> '{id}']);
- $delete_action = new TAction([$this, 'onDelete'], ['id'=> '{id}', 'register_state' => 'false']);
- $encerra_action = new TAction([$this, 'onEncerra'], ['id'=> '{id}', 'register_state' => 'false']);
- $this->cards->addAction($edit_action, 'Altera', 'far:edit bg-blue');
- $this->cards->addAction($delete_action, 'Exclui', 'far:trash-alt bg-red');
- $this->cards->addAction($encerra_action, 'Encerra', 'fas:ban bg-green');
- $this->cards->setTitleAttribute('tarefas->descricao');
- $this->cards->setItemDataBase('advday');
- //O Problema é nesta atribuição
- $this->cards->setItemTemplate('<div style="float:left;width:50%;padding-right:10px">
- <b>Processo</b> <br> {processos->numero} <br>
- <b>Aberta por</b> <br> {origemnome->name} <br>
- <b>Descricao</b> <br> {tarefa} <br>
- <b>Prazo</b> <br> {inicio} a {final} <br>
- </div>');
- // creates the page navigation
- $this->pageNavigation = new TPageNavigation;
- $this->pageNavigation->setAction(new TAction([$this, 'onReload']));
- // creates the page structure using a table
- $vbox = new TVBox;
- $vbox->style = 'width: 100%';
- //$vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $vbox->add($this->form); // add a row to the fo
- $vbox->add(TPanelGroup::pack('', $this->cards, $this->pageNavigation)); // add a row for page navigation
- parent::add($vbox);
- }
- /**
- * Item edit action
- */
- public static function onSelect($param = NULL)
- {
- TSession::setValue('processo_id', $param['id']);
- AdiantiCoreApplication::loadPage('TarefaMovimentoForm', 'onLoad');
- }
- public function loadPage()
- {
- }
- public function onEncerra($param)
- {
- try
- {
- TTransaction::open('advday');
- $tarefa = new TarefaMovimento($param['key']);
- $tarefa->situacao = '1';
- $tarefa->encerra = date('Y-m-d');
- $tarefa->store();
- TTransaction::close(); // close the transaction
- new TMessage('info', 'Tarefa Encerrada!',new TAction(array('TarefaMovimentoList', 'onReload'),['id' => $param['key']]));
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- }
- ?>
Em anexo a imagem de como aparece no browse.
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.
E no List
Modifiquei a linha do setItemTemplate para buscar o período, funcionou da forma desejada agora, mostrando as datas formatadas.
Se existe alguma outra solução gostaria de conhecer.
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.