Rev 1786 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/**
* Created by jorgemachado on 28/12/16.
*/
/**
*
* @param serviceName
* @param form
* @param handlerOk(responseObjJson)
* @param handlerFail(responseObjJson)
*/
function widgetCall(serviceName,form,handlerOk,handlerFail)
{
var data = $(form).serialize().replace(/%0D%0A/g, '%0A').replace(/\r?\n/g, "\r\n");
widgetCallWithActionParameters($(form).attr("action"),serviceName,data,form,handlerOk,handlerFail);
}
/**
* Use parameters instead of serialize form
* @param serviceName
* @param parameters
* @param form
* @param handlerOk
* @param handlerFail
*/
function widgetCallWithParameters(serviceName,parameters,form,handlerOk,handlerFail)
{
widgetCallWithActionParameters($(form).attr("action"),serviceName,parameters,form,handlerOk,handlerFail);
}
/**
* Created by jorgemachado on 28/12/16.
*/
/**
*Use parameters instead of serialize form and the action provided
* @param serviceName
* @param webMessagesContainer
* @param handlerOk(responseObjJson)
* @param handlerFail(responseObjJson)
*/
function widgetCallWithActionParameters(action,serviceName,parameters,webMessagesContainer,handlerOk,handlerFail)
{
$(webMessagesContainer).find(".web-messages").html('<div class="alert alert-info">Enviando ...</div>');
var data = parameters;
$.ajax({
url: action + "?dispatch=executeService&serviceJson=" + serviceName,
type: "POST",
data: data,
dataType: "json",
statusCode: {
401:function() {
$("#modalAuthentication").modal({ show : 'true'});
}
},
success: function(resposta)
{
$(webMessagesContainer).find(".web-messages").html("");
if(resposta.service == "error")
{
$(webMessagesContainer).find(".web-messages").html('<div class="alert alert-danger">' + resposta.exception + '</div>');
if(handlerFail != undefined)
{
handlerFail(resposta.exception);
}
alert("Erro de chamada ao Serviço, veja os erros");
}
else if(resposta.service == "fail")
{
for(var msg in resposta.messages)
{
$(webMessagesContainer).find(".web-messages").append('<div class="alert alert-success">' + resposta.messages[msg] + '</div>');
}
for(var error in resposta.errors)
{
$(webMessagesContainer).find(".web-messages").append('<div class="alert alert-warning">' + resposta.errors[error] + '</div>');
}
if(handlerFail != undefined)
{
handlerFail(resposta.response);
}
alert("Erro de chamada ao Serviço, veja os erros");
}
else if(resposta.service == "ok")
{
for(var msg in resposta.messages)
{
$(webMessagesContainer).find(".web-messages").append('<div class="alert alert-success">' + resposta.messages[msg] + '</div>');
}
if(handlerOk != undefined)
handlerOk(resposta.response);
}
},
error: function(resposta) {
$(webMessagesContainer).find(".web-messages").html('<div class="alert alert-danger">Erro de comunicação, por favor tente novamente</div>');
if(handlerFail != undefined)
{
handlerFail(resposta.exception);
}
alert("Erro de chamada ao Serviço, veja os erros");
}
});
}
function widgetSimpleCall(serviceName,form,handlerOk,handlerFail){
var data = $(form).serialize().replace(/%0D%0A/g, '%0A').replace(/\r?\n/g, "\r\n");
widgetSimpleCallWithActionParameters($(form).attr("action"),serviceName,data,form,handlerOk,handlerFail);
}
/**
*
* @param serviceName
* @param form
* @param handlerOk()
* @param handlerFail()
*/
function widgetSimpleCallWithActionParameters(action,serviceName,data,webMessagesContainer,handlerOk,handlerFail)
{
$(webMessagesContainer).find(".web-messages").html('<div class="alert alert-info">Enviando ...</div>');
$.ajax({
url: action + "?dispatch=executeSimpleServiceOkFail&serviceJson=" + serviceName,
type: "POST",
data: data,
dataType: "json",
statusCode: {
401:function() {
$('.modal').modal("hide");
$("#modalAuthentication").modal({ show : 'true'});
}
},
success: function(resposta)
{
$(webMessagesContainer).find(".web-messages").html("");
if(resposta.service == "error")
{
$(webMessagesContainer).find(".web-messages").html('<div class="alert alert-danger">' + resposta.exception + '</div>');
if(handlerFail != undefined)
{
handlerFail();
}
alert("Erro de chamada ao Serviço, veja os erros");
}
else if(resposta.service == "fail")
{
for(var msg in resposta.messages)
{
$(webMessagesContainer).find(".web-messages").append('<div class="alert alert-success">' + resposta.messages[msg] + '</div>');
}
for(var error in resposta.errors)
{
$(webMessagesContainer).find(".web-messages").append('<div class="alert alert-warning">' + resposta.errors[error] + '</div>');
}
if(handlerFail != undefined)
{
handlerFail();
}
alert("Erro de chamada ao Serviço, veja os erros");
}
else if(resposta.service == "ok")
{
for(var msg in resposta.messages)
{
$(webMessagesContainer).find(".web-messages").append('<div class="alert alert-success">' + resposta.messages[msg] + '</div>');
}
for(var error in resposta.errors)
{
$(webMessagesContainer).find(".web-messages").append('<div class="alert alert-warning">' + resposta.errors[error] + '</div>');
}
if(handlerOk != undefined)
handlerOk();
}
},
error: function(resposta)
{
$(webMessagesContainer).find(".web-messages").html('<div class="alert alert-danger">Erro de comunicação, por favor tente novamente</div>');
if(handlerFail != undefined)
{
handlerFail(resposta.exception);
}
alert("Erro de chamada ao Serviço, veja os erros");
}
});
}
var BacoJS = (function () {
function orderKeys(obj, expected) {
var keys = Object.keys(obj).sort(function keyOrder(k1, k2)
{
if(k1 == "@class")
return -1;
else if(k2 == "@class")
return 1
else
return 0;
//if (k1 < k2) return -1;
//else if (k1 > k2) return +1;
//else return 0;
});
var i, after = {};
for (i = 0; i < keys.length; i++) {
after[keys[i]] = obj[keys[i]];
delete obj[keys[i]];
}
for (i = 0; i < keys.length; i++) {
obj[keys[i]] = after[keys[i]];
}
return obj;
}
function orderKeysRecur(obj, expected)
{
if(typeof obj == "object")
orderKeys(obj, expected);
for (var k in obj)
{
if (typeof obj[k] == "object" && obj[k] !== null)
orderKeysRecur(obj[k]);
}
}
return {
stringifyOrdered: function (jsonObj) {
orderKeysRecur(jsonObj)
//return JSON.stringify(jsonObj);
return angular.toJson(jsonObj);
}
};
})();
/*var exampleBacoJs =
{
"xpto" : 1,
"@class" : "pt.estgp.estgweb.domain.XptoSchool",
"zgt" : {
"zgt1" : 1,
"zgt2" : 2,
"@class" : "pt.estgp.estgweb.domain.ZgtDepartment"
}
}*/
//does not affect angular JS lib
//you can use-it with angular
//var ordered = BacoJS.stringifyOrdered(exampleBacoJs);
//console.log(orderedExample);