Filter + Datasets

Boa tarde, a documentação do Fluig esta um pouco confusa. Sendo assim alguem poderia me mostrar um exemplo de como usar a ferramente Filter em conjunto com um dataset. Obrigado.

Consegui fazer a utilização do filter em conjunto com dataset, porem a duvida agora é como utilizo a pesquisa. Exemplo pesquisar pela descrição do produto e guardar o valor codigo destre produto. O filter guarda apenas o valor que é consultado no dataset.


function ConfigurarFilterProduto(name) {
    var produtos = RetornaDatasetProdutos();
    var settingsExampleArray = {
        source: produtos,
        displayKey: 'CODIGO',
        multiSelect: false,
        style: {
            autocompleteTagClass: 'tag-gray',
            tableSelectedLineClass: 'info'
        },
        table: {
            header: [{
                'title': 'DESCRICAO',
                'size': 'col-md-12',
                'dataorder': 'CODIGO',
                'standard': false
            }],
            renderContent: ['CODIGO']
        }
    };
    var nome = name;
    var filter = FLUIGC.filter('#' + nome + '', settingsExampleArray);

}


function RetornaDatasetProdutos() {
    var constraints = new Array();
    var dataset = DatasetFactory.getDataset("dsProduto", null, constraints, null);
    return dataset.values;
}

Realmente, o exemplo da Filter com Dataset simplesmente usa a DatasetFactory.getDataset pra ser a fonte. A propriedade source da Filter aceita um array de objetos e utilizará esse array para escrever a tabela de itens que podem ser selecionados, então usa o o atributo values do retorno da DatasetFactory.getDataset (lembrando que ela está sendo executada no front/navegador, então o retorno é diferente de executar no back/servidor).

Outro jeito é utilizar A API REST do Fluig para trazer o resultado do Dataset:



const urlWs = "/api/public/ecm/dataset/search?"
    + "datasetId=ds_usuarios_ativos" // Indica o Dataset
    + "&resultFields=colleagueName,mail" // Campos a retornar
    + "&filterFields=groupId,Gerentes,groupId,Diretoria" // Filtros (Constraints) que sempre serão enviados
    + "&searchField=colleagueName" // Campo que o Filter fará a pesquisa
    + "&" // Precisa do último & porque o Filter vai concatenar o valor de patternKey nessa URL
;

const filterSettings = {
    // Esses valores de source são padrões para o WS de pesquisa em Dataset
    source: {
        url: urlWs,
        contentType: "application/json",
        root: "content",
        pattern: "",
        limit: 50,
        offset: 0,
        patternKey: "searchValue",
        limitkey: "limit",
        offsetKey: "offset"
    },
    displayKey: "mail", // O campo que será exibido / salvo
    multiSelect: true,
    style: {
        autocompleteTagClass: "tag-gray",
        tableSelectedLineClass: "info"
    },
    table: {
        header: [
            {
                "title": "Nome",
                "size": "col-xs-12",
                "dataorder": "colleagueName",
                "standard": true
            }
        ],
        renderContent: ["colleagueName"]
    }
};

FLUIGC.filter('#participantes', filterSettings);

Lembrando que o seu Dataset deve tratar as constraints para filtrar a pesquisa.

Bom dia Bruno, eu consegui usar o filter da maneira mas simples como é descrito no fluig.
E usei em conjunto o dataset.
Porem o campo busca é o mesmo que é guardado no campo value.
É posivel utilizar a busca por exemplo descrição e salvar no campo o codigo por exemplo ?

A documentação informa que ao passar um array como source o filter usará o displayKey como filtro. Não sei se há maneira de mudar isso.

Também gostaria de saber uma maneira de setar outros campos