String.format = function() {
var s = arguments[0];
for (var i = 0; i < arguments.length - 1; i++) {
var reg = new RegExp("\\{" + i + "\\}", "gm");
s = s.replace(reg, arguments[i + 1]);
}
return s;
};
$.fn.hemisphereGridCalculo = function(configuracao) {
if (typeof configuracao != "object") {
console.error("A configuração deve ser um objeto");
return;
}
configuracao.place = this;
$.ajax({
url : (configuracao.url === undefined ? '' : configuracao.url),
type : (configuracao.method === undefined ? 'POST' : configuracao.method),
dataType : (configuracao.protocolo === undefined ? 'json' : configuracao.protocolo),
statusCode : {
404 : function() {
console.error("Endereço de requisição invalido");
return;
},
500 : function() {
console.error("Ocorreu um erro na requisição");
return;
}
}
}).done(function(data) {
console.log("Done: ",data);
configuracao.callback(data);
}).error(function(jqXHR, textStatus, errorThrown) {
return configuracao.onError(jqXHR, textStatus, errorThrown);
}).success(function(data, textStatus, jqXHR) {
//Limpa os parametros antigos
$(configuracao.place).html("");
var indice = 0;
$.each(data.parametros, function (indice, valor) {
// Input com validação customizada
switch (valor.tipoParametroCalculo) {
case "BOOLEAN":
var input = String.format("<select name='valoresParametroCalculo[{0}].valor'>", indice);
if(valor.valorDefault == true) {
input += "<option value='true' selected='selected'>Verdadeiro</option>";
input += "<option value='falso'>Falso</option>";
}else {
input += "<option value='true'>Verdadeiro</option>";
input += "<option value='falso' selected='selected'>Falso</option>";
}
input += "</select>";
break;
case "DATE":
var input = String.format("<input value='{0}' name='valoresParametroCalculo[{1}].valor' type='text' class='dataInicio'/>", valor.valorDefault, indice);
break;
default:
if(valor.chave == 'tabela.vds') {
var input = String.format("<select name='valoresParametroCalculo[{0}].valor'>", indice);
$.ajax({
url : configuracao.tabelavdsUrl,
type : (configuracao.method === undefined ? 'POST' : configuracao.method),
dataType : (configuracao.protocolo === undefined ? 'json' : configuracao.protocolo),
}).success(function (data, textStatus, jqXHR) {
console.log("Tabela VDS: ", data);
input += "<option value='01'>Tabela 1</option>";
});
input += "</select>";
}else {
var input = String.format("<input value='{0}' name='valoresParametroCalculo[{1}].valor' type='text'/>", valor.valorDefault, indice);
}
break;
}
var idParametroInput = String.format("<input type='hidden' name='valoresParametroCalculo[{0}].parametro' value='{1}' />", indice, valor.id);
var atributo = String.format("<tr><td>{0}</td><td>{1}{2}</td></tr>", valor.descricao, input, idParametroInput);
$(configuracao.place).append(atributo);
indice++;
});
if(data.parametros.length == 0) {
var atributo = String.format("<tr><td colspan='2'>{0}</td></tr>", "Este cálculo não possui parâmetros de configuração");
$(configuracao.place).append(atributo);
}
return data.parametros.length;
});
};