147 lines
4.1 KiB
JavaScript
147 lines
4.1 KiB
JavaScript
function createDataset(fields, constraints, sortFields) {
|
|
var dataset = DatasetBuilder.newDataset();
|
|
dataset.addColumn("DESCRICAO");
|
|
dataset.addColumn("CBO");
|
|
|
|
var servicecode = "Postprod";
|
|
var usuario = "fluig";
|
|
var senha = "Ginseng@";
|
|
|
|
var filial = "01";
|
|
var pagesize = 100;
|
|
var page = 1;
|
|
var total = null;
|
|
var termoBusca = getSearchTerm(constraints);
|
|
var limiteLinhas = getLimit(constraints, 200);
|
|
var linhasAdicionadas = 0;
|
|
|
|
try {
|
|
var clientService = fluigAPI.getAuthorizeClientService();
|
|
|
|
while (true) {
|
|
var endpoint =
|
|
"https://rest.grupoginseng.com.br/rest/uf_sigagpe/funcoes" +
|
|
"?filial=" + encodeURIComponent(filial) +
|
|
"&page=" + encodeURIComponent(page) +
|
|
"&pagesize=" + encodeURIComponent(pagesize);
|
|
|
|
var data = {
|
|
companyId: "1",
|
|
serviceCode: servicecode,
|
|
endpoint: endpoint,
|
|
method: "get",
|
|
timeoutService: "60000",
|
|
params: {},
|
|
options: {
|
|
encoding: "UTF-8",
|
|
useBasicAuth: true,
|
|
username: usuario,
|
|
password: senha
|
|
}
|
|
};
|
|
|
|
var vo = clientService.invoke(JSON.stringify(data));
|
|
var retorno = vo.getResult();
|
|
|
|
if (!retorno) break;
|
|
|
|
var obj = JSON.parse(retorno);
|
|
|
|
// se a API usa "sucesso"
|
|
if (obj.sucesso !== true) {
|
|
dataset.addRow(["(API retornou sucesso=false)", ""]);
|
|
break;
|
|
}
|
|
|
|
// sua lista vem em "funcoes" (não "items")
|
|
var funcoes = obj.funcoes;
|
|
|
|
if (!funcoes || funcoes.length === 0) break;
|
|
|
|
// guarda total se vier
|
|
if (total === null && obj.total != null) total = Number(obj.total);
|
|
|
|
for (var i = 0; i < funcoes.length; i++) {
|
|
var descricao = String(funcoes[i].RJ_DESC || "");
|
|
var cbo = String(funcoes[i].RJ_CODCBO || "");
|
|
|
|
if (matchSearch(termoBusca, descricao, cbo)) {
|
|
dataset.addRow([descricao, cbo]);
|
|
linhasAdicionadas++;
|
|
if (linhasAdicionadas >= limiteLinhas) break;
|
|
}
|
|
}
|
|
|
|
if (linhasAdicionadas >= limiteLinhas) break;
|
|
|
|
// condição de parada segura
|
|
if (funcoes.length < pagesize) break;
|
|
|
|
// se quiser parar com base no total:
|
|
if (total !== null && page * pagesize >= total) break;
|
|
|
|
page++;
|
|
}
|
|
|
|
} catch (e) {
|
|
dataset = DatasetBuilder.newDataset();
|
|
dataset.addColumn("DESCRICAO");
|
|
dataset.addColumn("CBO");
|
|
dataset.addRow(["ERRO AO CARREGAR FUNCOES: " + String(e), ""]);
|
|
}
|
|
|
|
return dataset;
|
|
}
|
|
|
|
function getSearchTerm(constraints) {
|
|
if (!constraints || constraints.length === 0) return "";
|
|
|
|
var searchField = "";
|
|
var searchValue = "";
|
|
var term = "";
|
|
|
|
for (var i = 0; i < constraints.length; i++) {
|
|
var c = constraints[i];
|
|
var field = String(c.getFieldName ? c.getFieldName() : c.fieldName || "").toLowerCase();
|
|
var value = String(c.getInitialValue ? c.getInitialValue() : c.initialValue || "");
|
|
|
|
if (field === "searchfield") {
|
|
searchField = String(value).toLowerCase();
|
|
} else if (field === "searchvalue") {
|
|
searchValue = value;
|
|
} else if (field === "descricao" || field === "rj_desc" || field === "cbo" || field === "rj_codcbo") {
|
|
term = value;
|
|
}
|
|
}
|
|
|
|
if (searchValue !== "") return searchValue;
|
|
if (searchField !== "" && term !== "") return term;
|
|
return term;
|
|
}
|
|
|
|
function getLimit(constraints, defaultValue) {
|
|
if (!constraints || constraints.length === 0) return defaultValue;
|
|
|
|
for (var i = 0; i < constraints.length; i++) {
|
|
var c = constraints[i];
|
|
var field = String(c.getFieldName ? c.getFieldName() : c.fieldName || "").toLowerCase();
|
|
var value = String(c.getInitialValue ? c.getInitialValue() : c.initialValue || "");
|
|
|
|
if (field === "sqllimit" || field === "limit") {
|
|
var n = parseInt(value, 10);
|
|
if (!isNaN(n) && n > 0) return n;
|
|
}
|
|
}
|
|
|
|
return defaultValue;
|
|
}
|
|
|
|
function matchSearch(term, descricao, cbo) {
|
|
var t = String(term || "").toLowerCase().trim();
|
|
if (t === "") return true;
|
|
|
|
var desc = String(descricao || "").toLowerCase();
|
|
var cod = String(cbo || "").toLowerCase();
|
|
return desc.indexOf(t) >= 0 || cod.indexOf(t) >= 0;
|
|
}
|