Campo de um formulário em dataset

Pessoal, tenho esse código de dataSet em anexo, na linha 20 eu tentei pegar o valor de um campo no formulário, e coloca-lo, no array da linha 25, é possível fazer teste modelo ou parecido? Visto que assim não me retornou nada.

Abs!

if(constraints!=null && constraints.length){ log.info("EXISTE CONSTRAINTS---->"); log.info("teste "+ constraints.length); for (var i = 0; i < constraints.length; i++) { log.info("CONSTRAINTS[I].FIELDNAME---> " );//+ constraints[i].fieldName); if (constraints[i].fieldName == "ZV_PI") { cOpcao = constraints[i].initialValue; log.info("COPCAO-----> " + cOpcao); } } }



$("#btZoomColaborador").click(function(){
    openZoom("Colaboradores", "dsColaboradores", "Codigo,Codigo,Nome,Nome", "Codigo,Nome", "colaboradores", "");                
    });

    //Criar envento on-click para ativar o evento
    function openZoom(title, dataset, fields, resultFields, type, filters){
        openZoomWindowParam(title, dataset, fields, resultFields, type, filters);
    }


function setSelectedZoomItem(selectedItem) {
    if(selectedItem.type=='colaboradores' && (atividade==inicio)){           
        $('#ZV_COLABOR').val(selectedItem.Codigo.trim());
        $('#ZV_NOME').val(selectedItem.Nome.trim());                             
    }
}

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Boa tarde Quemuel,

form.getValue ou hAPI.getCardValue referentes a campos de formulário não estão disponíveis em datasets.

As opções seriam passar o valor desse campo do formulário como uma constraint para esse dataset ou consultar o valor desse campo no dataset do formulário em questão.

====

Pelo que entendi o campo ZV_PI seria o campo Funcionário? do formulário isso?

Então na função de onchange desse select daria de colocar:


function funcaoOnChange(combo) {
    var valor = $("#ZV_PI").val();
    reloadZoomFilterValues('nome do campo onde tem o zoom de colaborador', "ZV_PI," + valor);
}

E o dataset acho que não mudaria muito o que você fez:


function createDataset(fields, constraints, sortFields) {
    var dataset = DatasetBuilder.newDataset();

    dataset.addColumn("Codigo");
    dataset.addColumn("Nome");

    //Pegar codigo do servico(neste caso o WS)
    var servico = "WSSZU";

    //Instanciar o servico
    var instanceservice = ServiceManager.getServiceInstance(servico);

    // Coloque aqui um valor default
    var cOpcao;

    if (constraints!=null && constraints.length) { 
        log.info("EXISTE CONSTRAINTS---->"); 
        log.info("teste "+ constraints.length); 
        for (var i = 0; i < constraints.length; i++) { 
            log.info("CONSTRAINTS[I].FIELDNAME---> " + constraints[i].fieldName);
            if (constraints[i].fieldName == "ZV_PI") { 
                opcao = constraints[i].initialValue; 
                log.info("COPCAO-----> " + cOpcao); 
            }
        }
    }

    //Instaciando o WSSZU
    var classesb1 = instanceservice.instantiate("meu_link");
    var objetowssb1 = classesb1.getWSSZUSOAP();
    var array = objetowssb1.colaboradores("01", "03", cOpcao);
    var alista = array.getLISTACOLABORADORES();

    for(var i=0; i < alista.size(); i++ ){
         var listaSZU = alista.get(i);
         dataset.addRow(new Array(listaSZU.getCBCOD(),listaSZU.getCBNOME()));
    }

    return dataset;
}

======

Exemplo com input zoom:

Você teria essas funções:


function OnChange(combo) {
    var valor = combo.value;
    reloadZoomFilterValues('ZV_COLABOR', "ZV_PI," + valor);
}

function setSelectedZoomItem(selectedItem) {
    $("Id do campo Nome do colaborador").val(selectedItem["Nome"])
}

function removedZoomItem(removedItem) {
    $("#Id do campo Nome do colaborador").val('');
}

e usaria esse input:


<div class="form-input">
            <input class="form-control" type="zoom"
                                    id = "ZV_COLABOR"
                                    name="ZV_COLABOR"
                                    data-zoom="{
                                        'displayKey':'Codigo',
                                        'datasetId':'codigo do seu dataset de colaborador',
                                        'maximumSelectionLength':'1',
                                        'placeholder':'Selecione um Colaborador',
                                        'fields':[
                                            {
                                               'field':'Codigo',
                                               'label':'Codigo',
                                               'standard':'true'
                                            },
                                            {
                                               'field':'Nome',
                                               'label':'Nome'
                                            }
                                        ]
                                     }"
                                />
        </div>

@Diogo, adicionei na pergunta como tentei fazer, porém não deu certo! vc teria algum exemplo? Essa parte é nova pra mim, e estou tento dificuldades Obg!

Quemuel, como e onde você está chamando esse dataset?

No meu formulário, criei um buttom=“zoom”: <button class="btn btn-sm fluigicon fluigicon-search fluigicon-xs " type="button" id="btZoomColaborador"></button>
e no custom.js: setSelectedZoomItem(selectedItem)

Adicionei uma imagem do formulário com os campos!

Opa, atualizei a resposta

Diogo, não está passando dentro do For. não está nem mostrando o log.info("EXISTE CONSTRAINTS---->");

Coloca um log.dir(constraints); antes do for e vẽ o que aparece no log. Porque sempre vai ter constraint, pois o zoom sempre manda a contraint para receber no maximo 300 registros.

me retornou null. Na verdade nem entrou no if (constraints!=null && constraints.length) {

anexa como está o html do campo de zoom

Anexei, uma imagem!

ah sim, pensei que você estava usando um input type zoom. Algum problema em usar o input type zoom? Ou precisa ser dessa forma que você fez?

Diogo, havia esqueci uma parte do html. Postei a imagem de novo!

Se ficar melhor pra implementar o dataset, posso alterar. É pq o pessoal aqui acostumou com essa outra forma, e reclamam da outra kk

Diogo, msm só nessa parte a constraint sempre está ficando com valor null
if (constraints != null && constraints.length) { log.info("###CONSTRAINTS---->####"); log.dir(constraints); for (var i = 0; i < constraints.length; i++) { log.info("CONSTRAINTS[I].FIELDNAME---> " + constraints[i].fieldName); if (constraints[i].fieldName == "ZV_PI") { //var cOpcao = ''; opcao = constraints[i].initialValue; //log.info("COPCAO-----> " + cOpcao); } } }

Atualizi a resposta com um exemplo utilizando o input zoom. Se você preferir a outra forma, aí você anexa o código da função que o btZoomColaborador chama.

@Diogo, implementei na pergunta

Você tem que passar a constraint no parâmetro filterValues da URL de chamada do zoom, no formato “campo, valor”. function OnChange(combo) {
var valor = combo.value;
window.open("/webdesk/zoom.jsp?datasetId=SeuDataset&dataFields=Codigo, Codigo, Nome, Nome&resultFields=Codigo,Nome&type=colaboradores&filterValues=ZV_PI, " + valor,“zoom” , “status, scrollbars=no, width=600, height=350, top=0, left=0”);
} . Provável que você mudaria usando teu parãmetro filters

Vou tentar dessa forma, se não der tento o imput=“zoom”,Abs