Olá, Boa tarde a todos! Para atender uma solicitação, preciso usar um campo zoom de forma dinâmica e estou tentando criar o campo por meio do método append, mas não obtive sucesso nenhuma das tentativas. Caso alguém possa me ajudar ou já tenha passado por algo parecido, agradeço!
Ele vai ser inserido em determinada atividade ou conforme seleção de algum campo? Eu geralmente deixo ele oculto, mas criado no formulário, dependendo da situação eu exibo ele.
Olá, Rodrigo!
Anteriormente eu já fiz desse jeito, mas agora são muitos campos nas opções e deixa-los no código oculto iria gerar muito “lixo”, por isso estou optando por adicionar os campos de forma dinâmica.
O Zoom é tipo o componente Filter do Style Guide, porém já é carregado automaticamente. Por isso você não conseguirá criar um Zoom com append.
Você pode fazer o append com um input e então executar a função que cria o Filter.
Documentação do Filter: https://style.fluig.com/miscellaneous.html#filter
Porém o Fluig não criará o campo na tabela/dataset do Formulário, pois ele cria os campos analisando os campos do formulário no HTML e como esse campo não existe ele não será criado. Então você terá que armazenar seus dados de alguma forma diferente.
Depois de pesquisar como funciona a técnica Pai x Filho eu consegui fazer o append do Zoom e carregá-lo. Segue um código de exemplo.
// Criando o elemento Zoom
let zoomInput = $(`<input type="zoom" class="form-control" name="teste" id="teste" data-zoom="{'displayKey':'CATEGORIA','datasetId':'ds_rm_produto_categorias','fields':[{'field':'CATEGORIA','label':'Categoria','standard': true},{'field':'CODIGO','label': 'Código','visible': 'false'}]}">`);
// Fazendo o append dele
$("#painelProduto").append(zoomInput);
// Executando o loading do Zoom. Aqui preciso passar o elemento HTML ao invés do objeto JQuery
loadZoomForInput(zoomInput.get(0));
Então você faria algum botão pra executar as ações.
Porém, salientando novamente, dessa forma o Fluig não criará os campos no dataset do formulário. Até estou curioso pra saber o motivo de usar assim.
Olá, Bruno!
Após ler a sua resposta e pesquisar um pouco mais sobre, percebi que realmente não há uma maneira de fazer esse tipo de implementação do campo com o campo zoom. Depois de realizar mais algumas pesquisas e testes, estou tentando fazer o mesmo tipo de implementação, mas agora estou fazendo uso de um campo select, porém, ele não me trás o dataset que passo como parâmetro, poderia me dar alguma ajuda?
Felipe, é meio que o mesmo problema do Zoom. Quando você cria o select informando o Dataset o Fluig executa um evento que faz a pesquisa dos dados e preenche o select pra você. Você pode usar o Filter (o qual você indica o dataset e todos os outros detalhes pra preencher ele) ou você teria que consultar manualmente o dataset e montar o select com todos os seus elementos. Exemplo de como consultar um dataset no JS de um formulário: Desenvolvimento de Formulários - TOTVS Fluig - TDN
Eu não sei qual evento o Fluig dispara pra fazer essas conversões do Zoom e Select com dataset. Se descobrir qual é a função/evento talvez dê pra forçar ele a executar após fazer o append. Mas ainda assim você terá o problema de como deixará salvo essas informações tá. Se observar a técnica “Pai x Filho” verá que o Fluig salva as informações em um lugar diferente do dataset associado ao formulário, pois o Pai x Filho funciona assim com append. Aliás, a técnica Pai x Filho não te atende nesse caso?
Aliás, pensando na técnica “Pai x Filho” percebi que dá sim pra fazer um append com o Zoom, mas como expliquei anteriormente precisa descobrir como o Fluig força o Zoom a ser executado. Se eu descobrir posto aqui.
Complementei a minha resposta com um Zoom adicionado com append
Olá Felipe, No Fluig Academy, curso de Desenvolvimento de Processos - BPM/ECM Intermediate tem um vídeo mostrando exatamente como colocar um Dataset no campo Select, talvez sirva de ajuda: http://fluig.eadbox.com/ng/student/courses/desenvolvimento-de-processos-bpm-barra-ecm-intermediate/lectures/datasets/contents/59ee0f8f493a26002f667daa/
Atenciosamente, Camila Silva
Olá, Camila!
O problema que eu estou tendo, não é exatamente como colocar um Dataset no campo select, isso já foi feito antes… o problema em si é que, ao criar o campo select utilizando o método .append(), o campo não pega o atributo “dataset”. Pensei que fosse erro de sintaxe ou algo do tipo, copiei um outro campo que estava funcionando e colei no .append, mas mesmo assim não funcionou.