Versão atual:

Filtrar o segundo zoom de acordo com o que foi selecionado no primeiro usando reloadZoomFilterValues

Estou tentando utilizar um filtro no meu segundo zoom de acordo com o que for selecionado no primeiro zoom, mas não consigo fazer funcionar.

Exemplo, selecionei o estabelecimento 501, no segundo zoom deveria trazer somente o ultimo registro que é o único que pertence ao mesmo estabelecimento:

Print1.png

Os campos zoom:

<div class="row">
    <div class="form-group col-md-6">
        <label for="empresa">Estabelecimento:</label>
        <input
            type="zoom"
            id = "z_Estabelecimento"
            name="z_Estabelecimento"
            data-zoom="{
                'displayKey':'Estabelecimento',
                'datasetId':'dsEstabelecimento',
                'maximumSelectionLength':'1',
                'placeholder':'Escolha o estabelecimento',
                'fields':[
                    {
                       'field':'Empresa',
                       'label':'Empresa'
                    },{
                      'field':'Estabelecimento',
                      'label':'Estabelecimento',
                      'standard':'true'
                    }
                ]
             }"
        />
    </div>
    <div class="form-group col-md-6">
        <label for="centroCusto">Centro de Custo:</label>
        <input
            type="zoom"
            id = "z_CentroCusto"
            name="z_CentroCusto"
            data-zoom="{
                'displayKey':'centroCusto',
                'datasetId':'dsCentroCusto',
                'maximumSelectionLength':'1',
                'placeholder':'Escolha o centro de custo',
                'fields':[
                    {
                       'field':'Descricao',
                       'label':'Descrição'
                    },
                    {
                       'field':'Estabelecimento',
                       'label':'Estabelecimento',
                       'standard':'true'
                    },{
                      'field':'centroCusto',
                      'label':'Centro de Custo'                                  
                    }
                ]
             }"
        />
    </div>
</div>

Função reloadZoomFilterValues:

function setSelectedZoomItem(selectedItem) {

        if(selectedItem.inputId == "z_Estabelecimento"){
            $("#z_CentroCusto").val('');
            reloadZoomFilterValues("z_CentroCusto", "Estabelecimento," + selectedItem["Estabelecimento"]);
      }
    };

Dataset do primeiro zoom:

function createDataset(fields, constraints, sortFields) {

    //Cria as colunas
    var dataset = DatasetBuilder.newDataset();
    dataset.addColumn("DocumentID");
    dataset.addColumn("Empresa");
    dataset.addColumn("Estabelecimento");

    //Cria a constraint para buscar os formulários ativos
    var cst = DatasetFactory.createConstraint("metadata#active", true, true, ConstraintType.MUST);
    var constraints = new Array(cst);

    var datasetPrincipal = DatasetFactory.getDataset("DSForm_Estabelecimento", null, constraints, null);

    for (var i = 0; i < datasetPrincipal.rowsCount; i++) {
        var documentId = datasetPrincipal.getValue(i, "metadata#id");
        var documentVersion = datasetPrincipal.getValue(i, "metadata#version");

        //Cria as constraints para buscar os campos filhos, passando o tablename, número da formulário e versão
        var c1 = DatasetFactory.createConstraint("tablename", "estab" ,"estab", ConstraintType.MUST);
        var c2 = DatasetFactory.createConstraint("metadata#id", documentId, documentId, ConstraintType.MUST);
        var c3 = DatasetFactory.createConstraint("metadata#version", documentVersion, documentVersion, ConstraintType.MUST);
        var constraintsFilhos = new Array(c1, c2, c3);

        //Busca o dataset
        var datasetFilhos = DatasetFactory.getDataset("DSForm_Estabelecimento", null, constraintsFilhos, null);

        for (var j = 0; j < datasetFilhos.rowsCount; j++) {
            //Adiciona os valores nas colunas respectivamente.
            dataset.addRow(new Array(
                    documentId,
                    datasetFilhos.getValue(j, "empresa"),
                    datasetFilhos.getValue(j, "estabelecimento")));
        }
    }

    return dataset;
}

Dataset do segundo zoom:

function createDataset(fields, constraints, sortFields) {

    //Cria as colunas
    var dataset = DatasetBuilder.newDataset();
    dataset.addColumn("DocumentID");
    dataset.addColumn("Empresa");
    dataset.addColumn("Estabelecimento");
    dataset.addColumn("centroCusto");
    dataset.addColumn("Descricao");

    var estabelecimento = '';
    if (constraints != null) {
        for (var i = 0; i < constraints.length; i++) {

            if (constraints[i].fieldName == "Estabelecimento") { 
                estabelecimento = constraints[i].initialValue.toString();
            }
        }
    }

    //Cria a constraint para buscar os formulários ativos
    var cst = DatasetFactory.createConstraint("metadata#active", true, true, ConstraintType.MUST);
    //var cst2 = DatasetFactory.createConstraint("Estabelecimento", estabelecimento, estabelecimento, ConstraintType.MUST);
    var constraints = new Array(cst);

    var datasetPrincipal = DatasetFactory.getDataset("DSForm_Centro_Custo", null, constraints, null);

    for (var i = 0; i < datasetPrincipal.rowsCount; i++) {
        var documentId = datasetPrincipal.getValue(i, "metadata#id");
        var documentVersion = datasetPrincipal.getValue(i, "metadata#version");

        //Cria as constraints para buscar os campos filhos, passando o tablename, número da formulário e versão
        var c1 = DatasetFactory.createConstraint("tablename", "ccusto" ,"ccusto", ConstraintType.MUST);
        var c2 = DatasetFactory.createConstraint("metadata#id", documentId, documentId, ConstraintType.MUST);
        var c3 = DatasetFactory.createConstraint("metadata#version", documentVersion, documentVersion, ConstraintType.MUST);
        var constraintsFilhos = new Array(c1, c2, c3);

        //Busca o dataset
        var datasetFilhos = DatasetFactory.getDataset("DSForm_Centro_Custo", null, constraintsFilhos, null);

        for (var j = 0; j < datasetFilhos.rowsCount; j++) {
            //Adiciona os valores nas colunas respectivamente.
            dataset.addRow(new Array(
                    documentId,
                    datasetFilhos.getValue(j, "empresa"),
                    datasetFilhos.getValue(j, "estabelecimento"),
                    datasetFilhos.getValue(j, "centroCusto"),
                    datasetFilhos.getValue(j, "descricao")));
        }
    }

    return dataset;
}

Versão (1):

Ver a versão formatada

Filtrar o segundo zoom de acordo com o que foi selecionado no primeiro usando reloadZoomFilterValues

Comentário

new question