Vamos lá... estou querendo fazer apenas um piloto, que seria um formulário de baixa. Minha intenção é que esse DATASET vá buscar do cadastro de produtos do protheus.
então, estou fazendo um piloto inicialmente com um dataset estatitico.
1 - Dataset estático.
function defineStructure() {
}
function onSync(lastSyncDate) {
}
function createDataset(fields, constraints, sortFields) {
var dataset = DatasetBuilder.newDataset ();
//Cria Colunas
dataset.addColumn("codigo");
dataset.addColumn("descricao");
dataset.addColumn("UN");
dataset.addColumn("Tipo");
dataset.addColumn("Grupo");
//Cria Registros
dataset.addRow(new Array("000001", "Flor de Sal 300g", "UN", "Produto Acabado","Foods"));
dataset.addRow(new Array("000002", "Sal de Parrilla 1Kg", "UN", "Produto Acabado","Foods"));
dataset.addRow(new Array("000003", "Sal Refinado Sosal de 25Kg", "SC", "Produto Acabado","Sal Refinado"));
dataset.addRow(new Array("000004", "Sal Moido em Big Bag", "TN", "Produto Acabado","Sal Moido"));
dataset.addRow(new Array("000005", "Notebook Lenovo 330S", "UN", "Ativo Imobilizado","Produtos de Informatica"));
return dataset;
}function onMobileSync(user) {
}
Dataset que chamada o dataset estático com as as constraints
function defineStructure() {
}
function onSync(lastSyncDate) {
}
function createDataset(fields, constraints, sortFields) {
var dataset = DatasetBuilder.newDataset();
dataset.addColumn("codigo");
dataset.addColumn("descricao");
var tempDataset = DatasetFactory.getDataset("DsProdutos", null, null, null);
if(constraints!=null && constraints.length){ //se tiver constraint filtra
if(constraints[0].constraintType==ConstraintType.MUST) { // implementação somente para o MUST
for(var a=0;a< tempDataset.length;a++){
// se o valor inicial da constraint for igual ao valor do campo na constraint adiciona a linha
if(constraints[0].initialValue==tempDataset[a][constraints[0].fieldName]){
dataset.addRow(new Array(tempDataset.getValue(a, "codigo"), tempDataset.getValue(a, "descricao")));
}
}
}
} else { // se não tiver constraint adiciona todas as linhas
for(var a=0;a< tempDataset.length;a++){
dataset.addRow(new Array(tempDataset.getValue(a, "codigo"), tempDataset.getValue(a, "descricao")));
}
}
return dataset;
}function onMobileSync(user) {
}
E o JS que chama o dataset com as contraints e não dar certo.
function setSelectedZoomItem(selectedItem) {
//Pegar o name do zoom que foi selecionado
var zoomName = selectedItem.inputName;
var index = zoomName.split('___');
//indice da linha do campo pai e filho
var indice = index[1];
// Verifica se o campo zoom é o mesmo que foi selecionado
if (zoomName == "codproduto___" + indice) {
// Pega o código do produto
var codigo = selectedItem["codigo"];
// Cria uma constraint filtrando a coluna Codigo e passando como valor o codigo do produto
var c1 = DatasetFactory.createConstraint("codigo", codigo, codigo, ConstraintType.MUST);
var constraints = new Array(c1);
//Aplicando a constraint no dataset DsProdutos
var retornoDataset = DatasetFactory.getDataset("Ds_ProdutosForm", null, constraints, null);
console.log("indice:", indice)
console.log("Código do produto:", codigo)
console.log("Retorno Código:", retornoDataset.values[0].codigo)
console.log("Retorno Descrição:", retornoDataset.values[0].descricao)
}
}
retornoDataset.values[0].codigo
retornoDataset.values[0].descricao
ambos reportam que os valores são 'undefined' no inspecionar... não está funcionando.