Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: a guest on May 31st, 2013  |  syntax: JavaScript  |  size: 3.39 KB  |  views: 30  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. String.format = function() {
  2.   var s = arguments[0];
  3.   for (var i = 0; i < arguments.length - 1; i++) {      
  4.     var reg = new RegExp("\\{" + i + "\\}", "gm");            
  5.     s = s.replace(reg, arguments[i + 1]);
  6.   }
  7.  
  8.   return s;
  9. };
  10.  
  11. $.fn.hemisphereGridCalculo = function(configuracao) {
  12.  
  13.         if (typeof configuracao != "object") {
  14.                 console.error("A configuração deve ser um objeto");
  15.                 return;
  16.         }
  17.        
  18.         configuracao.place = this;
  19.  
  20.         $.ajax({
  21.                 url : (configuracao.url === undefined ? '' : configuracao.url),
  22.                 type : (configuracao.method === undefined ? 'POST' : configuracao.method),
  23.                 dataType : (configuracao.protocolo === undefined ? 'json' : configuracao.protocolo),
  24.                 statusCode : {
  25.                         404 : function() {
  26.                                 console.error("Endereço de requisição invalido");
  27.                                 return;
  28.                         },
  29.                         500 : function() {
  30.                                 console.error("Ocorreu um erro na requisição");
  31.                                 return;
  32.                         }
  33.                 }
  34.         }).done(function(data) {
  35.                 console.log("Done: ",data);
  36.                
  37.                 configuracao.callback(data);
  38.         }).error(function(jqXHR, textStatus, errorThrown) {
  39.                 return configuracao.onError(jqXHR, textStatus, errorThrown);
  40.         }).success(function(data, textStatus, jqXHR) {
  41.  
  42.                 //Limpa os parametros antigos
  43.                 $(configuracao.place).html("");
  44.                 var indice = 0;
  45.                 $.each(data.parametros, function (indice, valor) {
  46.                        
  47.                         // Input com validação customizada
  48.                         switch (valor.tipoParametroCalculo) {
  49.                                 case "BOOLEAN":
  50.                                         var input = String.format("<select name='valoresParametroCalculo[{0}].valor'>", indice);
  51.                                         if(valor.valorDefault == true) {
  52.                                                 input += "<option value='true' selected='selected'>Verdadeiro</option>";
  53.                                                 input += "<option value='falso'>Falso</option>";
  54.                                         }else {
  55.                                                 input += "<option value='true'>Verdadeiro</option>";
  56.                                                 input += "<option value='falso' selected='selected'>Falso</option>";
  57.                                         }
  58.                                         input += "</select>";
  59.                                         break;
  60.                                 case "DATE":
  61.                                         var input = String.format("<input value='{0}' name='valoresParametroCalculo[{1}].valor' type='text' class='dataInicio'/>", valor.valorDefault, indice);
  62.                                         break;
  63.                                 default:
  64.                                        
  65.                                         if(valor.chave == 'tabela.vds') {
  66.                                                 var input = String.format("<select name='valoresParametroCalculo[{0}].valor'>", indice);
  67.                                                 $.ajax({
  68.                                                         url : configuracao.tabelavdsUrl,
  69.                                                         type : (configuracao.method === undefined ? 'POST' : configuracao.method),
  70.                                                         dataType : (configuracao.protocolo === undefined ? 'json' : configuracao.protocolo),
  71.                                                 }).success(function (data, textStatus, jqXHR) {
  72.                                                         console.log("Tabela VDS: ", data);
  73.                                                         input += "<option value='01'>Tabela 1</option>";
  74.                                                 });
  75.                                                 input += "</select>";
  76.                                                
  77.                                         }else {
  78.                                                 var input = String.format("<input value='{0}' name='valoresParametroCalculo[{1}].valor' type='text'/>", valor.valorDefault, indice);
  79.                                         }
  80.                                         break;
  81.                         }
  82.                        
  83.                         var idParametroInput = String.format("<input type='hidden' name='valoresParametroCalculo[{0}].parametro' value='{1}' />", indice, valor.id);
  84.                        
  85.                         var atributo = String.format("<tr><td>{0}</td><td>{1}{2}</td></tr>", valor.descricao, input, idParametroInput);
  86.                         $(configuracao.place).append(atributo);
  87.                        
  88.                         indice++;
  89.                 });
  90.                
  91.                 if(data.parametros.length == 0) {
  92.                         var atributo = String.format("<tr><td colspan='2'>{0}</td></tr>", "Este cálculo não possui parâmetros de configuração");
  93.                         $(configuracao.place).append(atributo);
  94.                 }
  95.                
  96.                 return data.parametros.length;
  97.         });
  98.  
  99. };