Tenho um zoom "velho" que mostra os grupos de acordo com a matrícula do usuário.
Quero fazer isso no zoom "novo", mas ele não funciona com o filterValues. Alguém sabe como ajudar?
ZOOM VELHO - FUNCIONA
<div class="grid-5-12">
<label for="nm_area">Área Solicitante <span style="color: red;">*</span></label>
<input type="text" name="nm_area" id="nm_area" tabindex="6" readonly>
</div>
<div class="grid-1-12">
<label> </label>
<a id="lupa_area" href="#" class="zoomResponsible" data-select-user="" onClick="Javascript:zoomArea(this)"></a>
</div>
<script>
function zoomArea(){
window.open('/webdesk/zoom.jsp?'+
'datasetId=colleagueGroup&' +
'dataFields=colleagueGroupPK.companyId,Código da Empresa,colleagueGroupPK.groupId,Área&' +
'resultFields=colleagueGroupPK.companyId,colleagueGroupPK.groupId&' +
'filterValues=colleagueGroupPK.colleagueId,'+document.getElementById("id_solicitante").value+
'&type=area','zoom', 'status, scrollbars=no, width=640, height=480, top=0, left=0');
}
</script>
ZOOM NOVO - NÃO FUNCIONA
<input type="zoom" class="form-control" id="nm_area" name="nm_area"
dataset="colleagueGroup"
datasetvalue="groupId"
data-zoom="{
'displayKey':'groupId',
'datasetId':'colleagueGroup',
'filterValues':'colleagueGroupPK.colleagueId, id_solicitante',
'fields':[{'field':'groupId','label':'Área','standard':true}]}">
PEGANDO O CAMPO ID_SOLICITANTE
Formulário:
<input type="hidden" name="id_solicitante" id="id_solicitante">
displayFields:
if (atividade == '0') {
var matricula = getValue("WKUser");
var c1 = DatasetFactory.createConstraint("colleaguePK.colleagueId", matricula, matricula, ConstraintType.MUST);
var ds_solicitante = DatasetFactory.getDataset("colleague", null, new Array(c1), null);
form.setValue('nm_solicitante', ds_solicitante.getValue(0, "colleagueName"));
form.setValue("id_solicitante", ds_solicitante.getValue(0, "colleaguePK.colleagueId"));
}
Marcella, caso a resposta abaixo tenha solucionado, peço que sinalize para ajudar os outros que tenham a mesma dúvida. Não testei a solução, respondi no "teoricamente".
— Alef Vinicius 28 de Jan de 2020Não funcionou, acredito que tenha algum problema com as aspas, anexei a imagem.
— Marcella 28 de Jan de 2020Tem a ver com as aspas sim, Marcella, acabei de editar o exemplo na resposta, tente novamente.
— Alef Vinicius 28 de Jan de 2020Caso ainda assim não funcione, remova o filterValues da definição do campo e utilize a função: reloadZoomFilterValues como mostrada na resposta.
— Alef Vinicius 28 de Jan de 2020Já tinha tentado assim, ele até traz os dados, mas vem duplicado, coisa que não acontece com o zoom antigo. Coloquei a foto para você ver. Vou continuar tentando, caso consiga, posto a resposta.
— Marcella 28 de Jan de 2020Ah, o campo id_solicitante é preenchido assim que a página carrega.
— Marcella 28 de Jan de 2020Marcella, mostra a consulta do dataset no eclipse, consegue fazer isso? Provavelmente o filtro não tá sendo aplicado ainda. Ah, mesmo sendo após o carregamento da página, tem que ter certeza se não tá sendo renderizado antes do campo. Já tentou fixar o valor no filterValues. Desta forma:
'filterValues':'colleagueGroupPK.colleagueId, 'filterValues':'colleagueGroupPK.colleagueId,1233456789',
— Alef Vinicius 28 de Jan de 2020Coloquei o print da consulta do dataset, é um dataset interno. Testei com a matrícula chumbada, dessa forma não traz nenhum dado. Mesmo que ele não esteja sendo renderizado, não deveria funcionar com o reloadZoomFilterValues?
— Marcella 28 de Jan de 2020Tentou dessa forma, Marcella, caso funcione podemos ajustar o filtro.
— Alef Vinicius 28 de Jan de 2020Tinha testado errado, foi mal hehehe Dessa forma funcionou, trouxe direitinho os grupos pela matrícula do usuário. Coloquei o print.
— Marcella 28 de Jan de 2020Marcella, o problema está no filtro. Como havia mencionado, a renderização do ZOOM tem acontecido antes do valor campo id_solicitante ser preenchido. Como que você preenche esse campo?
— Alef Vinicius 28 de Jan de 2020Marcella, como disse, inicializa o ZOOM sem o filterValues, depois no console, no contexto do formulário, executa o seguinte:
Deve funcionar.
— Alef Vinicius 28 de Jan de 2020Eu pego por meio do displayFields. Acrescentei o código. Vou tentar dessa forma.
— Marcella 28 de Jan de 2020Faz o teste que passei, Marcella, acima do seu comentário, ele poderá ser executado via displayFields. Porém, precisa confirmar se funcionará efetuando o procedimento que passei aí no comentário.
— Alef Vinicius 28 de Jan de 2020Não sei se entendi bem. Fiz o teste no console do navegador:
Não postei o print pq está dando erro.
— Marcella 30 de Jan de 2020Não, Marcella, não pode ser no setSelectedZoomItem não. Quando quando falo pra executar no console é pq o filtro tem que acontecer após a renderização do zoom. Uma das opções é o console. Porém, você pode criar um botão no formulário que chama essa função. Funcionará do mesmo jeito. Vou exemplificar.
— Alef Vinicius 04 de Feb de 2020Adiciona esse botão
E adiciona essa função aos scripts
Vai funcionar!
— Alef Vinicius 04 de Feb de 2020Obrigada Alef, ajudou bastante! Pena que o usuário acabou desistindo desse campo hahaha
— Marcella 06 de Feb de 2020