sábado, 18 de julho de 2015

Jquery Filter

var filtros = { "filtrado": "false", "page": "", "sort": "", "sortdir": "" };
$(function () {
    $('#gridLista th a,#gridLista tfoot a').live('click', function (event) {
        event.preventDefault();
        var href = $(this).attr("href");
        var queryString = href.substring(href.indexOf('?'), href.length);
        queryString = queryString.replace("?", "");
        var arr = queryString.split('&');
        var obj = {};
        for (var i = 0; i < arr.length; i++) {
            var bits = arr[i].split('=');
            obj[bits[0]] = bits[1];
        }

        if (filtros.sort == obj.sort) {
            //verifica a ordenação antiga e nova solicitada, e troca se for a mesma
            filtros.sortdir = filtros.sortdir == "ASC" ? "DESC" : "ASC";
        } else
            filtros.sortdir = obj.sortdir != undefined ? obj.sortdir : filtros.sortdir;
        filtros.page = obj.page != undefined ? obj.page : filtros.page;
        filtros.sort = obj.sort != undefined ? obj.sort : filtros.sort;

        Listar();
    });

    $("#carregando").ajaxStart(function () {
        timerLoading = setTimeout(function () {
            $(":button, :submit").attr("disabled", true);
            $("#carregando").show();
            $("#overlay").show();
        }, 750);

    }).ajaxStop(function () {
        $(":button, :submit").attr("disabled", false);
        $(this).hide();
        $("#overlay").hide();
        clearTimeout(timerLoading);
    });

    //define os valores padrão para a dialog
    $.extend($.ui.dialog.prototype.options, {
        modal: true,
        resizable: false,
        draggable: false,
        width: 600,
        height: 160
    });

    $.ajaxSetup({
        error: function (responseText, textStatus, XMLHttpRequest) {
            if (responseText.status == 500) {
                //erro tratado
                var msgRet = eval("(" + responseText.responseText + ")");
                if (!msgRet.Sucesso) {
                    AjaxForm_OnFailure(msgRet);
                }
            }
        }
    });
});
//Na regionalização isto pode ser diferente, centralizar aqui por enquanto..
function StringToFloat(valor) {
    if (valor == null || $.trim(valor) == '')
        return 0;
    else
        return parseFloat(valor.replace(",", "."));
}
function FloatParaString(valor) {
    if (valor == null || $.trim(valor) == '')
        return 0;
    else
        return valor.toString().replace(".", ",");
}
//Função para retornar uma string no formato de Moeda(R$)
function FormatarMoeda(num) {
    var p = num.toFixed(2).split(".");
    var chars = p[0].split("").reverse();
    var newstr = '';
    var count = 0;
    for (x in chars) {
        count++;
        if (count % 3 == 1 && count != 1) {
            newstr = chars[x] + ',' + newstr;
        } else {
            newstr = chars[x] + newstr;
        }
    }
    return newstr + "," + p[1];
}

function ListarPaginado() {
    $.ajax({
        dataType: 'html',
        contentType: "application/x-www-form-urlencoded",
        url: RotaLista,
        data: filtros,
        success: function (result) { $("#gridLista").html(result); },
        complete: function (responseText, textStatus, XMLHttpRequest) {
            if (textStatus == "error") {
                var obj = eval('(' + responseText.responseText + ')');
                if (obj != null) {
                    AvisoErro(obj);
                }
                else {
                    AvisoErro({ "Codigo": "0", "Descricao": XMLHttpRequest.responseText, "Sucesso": "false", "PaginaParaNavegar": "" });
                }
            }
        }
    });
}
function Listar() {
    $("#gridLista").load(RotaLista, filtros, function (responseText, textStatus, XMLHttpRequest) {
        if (textStatus == "error") {
            var obj = eval('(' + responseText + ')');           
            if (obj != null) {
                AvisoErro(obj);
            }
            else {
                AvisoErro({ "Codigo": "0", "Descricao": XMLHttpRequest.responseText, "Sucesso": "false", "PaginaParaNavegar": "" });
            }
        }
    });
}
function Filtrar() {
    filtros.page = 1; //reseta para primeira pagina...
    AtualizarFiltro();
    Listar();
function ExecutarAcao(action) {
    window.location = action;
}

function Excluir(rotaExcluir) {
    $("#gridLista").html('');
    $.ajax({
        url: rotaExcluir,
        dataType: 'json',
        success: function (data) {
            SucessoExclusao(data);
        },
        error: function (responseText, textStatus, XMLHttpRequest) {
            var obj = eval('(' + responseText.responseText + ')');
            if (obj != null) {
                ErrorExclusao(obj);
            }
            else {
                ErrorExclusao({ "Codigo": "0", "Descricao": XMLHttpRequest, "Sucesso": "false", "PaginaParaNavegar": "" });
            }
        }
    });

}
function Dialog(MensagemRetorno) {
    $("#dialog:ui-dialog").dialog("destroy");
    $("#dialog-confirm").html(MensagemRetorno.Descricao);
    $("#dialog-confirm").dialog({
        buttons: {
            "OK": function () {
                $(this).dialog("close");
            }
        }
    });
}
function ErrorExclusao(MensagemRetorno) {
    $("#dialog:ui-dialog").dialog("destroy");
    $("#dialog-confirm").html(MensagemRetorno.Descricao);
    $("#dialog-confirm").dialog({
        buttons: {
            "OK": function () {
                $(this).dialog("close");
                Listar();
            }
        }
    });
}
function SucessoExclusao(MensagemRetorno) {
    filtros.page = "";
    if (MensagemRetorno == null || MensagemRetorno == '') {
        AvisoErro({ "Codigo": "0", "Descricao": Resource.InternalError, "Sucesso": "false", "PaginaParaNavegar": "" });
    }
    else {
        if (!MensagemRetorno.Sucesso) {
            ErrorExclusao(MensagemRetorno);
        }
        else {
            $("#dialog:ui-dialog").dialog("destroy");
            $("#dialog-confirm").html(MensagemRetorno.Descricao);
            $("#dialog-confirm").dialog({
                buttons: {
                    "OK": function () {
                        $(this).dialog("close");
                        Listar();
                    }
                }
            });
        }
    }

}
function ConfirmarExclusao(rotaExclusao, rotaLista) {
    var bret = false;
    $("#dialog:ui-dialog").dialog("destroy");
    $("#dialog-confirm").html(Resource.Conf_Excluir);
    $("#dialog-confirm").dialog({
        buttons: {
            "Sim": function () {
                $(this).dialog("close");
                rotaListaCorrente = rotaLista;
                Excluir(rotaExclusao);
            },
            "Não": function () {
                $(this).dialog("close");
                bret = false;
            }
        }
    });
    return bret;
}
//Mostra uma janela de confirmação e executauma função
//mensagem=> Pergunta da janela, sim => função a ser executada quando o sim é seleciona
function Confirmar(mensagem, executarSim, executarNao) {
    $("#dialog:ui-dialog").dialog("destroy");
    $("#dialog-confirm").html(mensagem);
    $("#dialog-confirm").dialog({
        buttons: {
            "Sim": function () { $(this).dialog("close"); executarSim(); },
            "Não": function () { $(this).dialog("close"); if (executarNao != undefined) { executarNao(); } }
        }
    });
}
//Mostra uma janela de alerta
function Alertar(mensagem) {
    $("#dialog:ui-dialog").dialog("destroy");
    $("#dialog-confirm")
        .html(mensagem)
        .dialog({ buttons: { "OK": function () { $(this).dialog("close"); } } });
}

function AvisoErro(MensagemRetorno) {
    Aviso(MensagemRetorno);
}
function Aviso(MensagemRetorno) {
    if (MensagemRetorno.Descricao == null || MensagemRetorno.Descricao == '') {
        window.location.href = MensagemRetorno.PaginaParaNavegar;
    }
    else {
        $("#dialog:ui-dialog").dialog("destroy");
        $("#dialog-confirm").html(MensagemRetorno.Descricao);
        $("#dialog-confirm").bind("dialogclose", function (event, ui) {
            if (MensagemRetorno.PaginaParaNavegar != null && MensagemRetorno.PaginaParaNavegar != "") {
                window.location.href = MensagemRetorno.PaginaParaNavegar;
            }
        });
        $("#dialog-confirm").dialog({
            buttons: {
                "OK": function () {
                    $(this).dialog("close");
                    if (MensagemRetorno.PaginaParaNavegar != null && MensagemRetorno.PaginaParaNavegar != "") {
                        window.location.href = MensagemRetorno.PaginaParaNavegar;
                    }
                }               
            }
        });
    }
}

function AjaxForm_OnSuccess(MensagemRetorno) {
    if (!MensagemRetorno.Sucesso) {
        AjaxForm_OnFailure(MensagemRetorno);
        return;
    }
    Aviso(MensagemRetorno);
}

function AjaxForm_OnFailure(MensagemRetorno) {
    Aviso(MensagemRetorno);
}

//Define as mensagens de validação pelo Resouce
function DefinirResource(options) {
      for (option in options) {
          $.validator.messages[option] = options[option];
      }
  }
 
  //Arredondamento...
function roundNumber(num, dec) {
      var result = Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
      return result;
  }

function TrocaPagina(pagina) {
      filtros.page = pagina;
      ListarPaginado();
  }


//Converte parametros (id=1&valor=2) para um objeto json
$.unparam = function (value) {
    var params = {}, pieces = value.split('&'), pair, i, l;
    for (i = 0, l = pieces.length; i < l; i++) {
        pair = pieces[i].split('=', 2);
        params[decodeURIComponent(pair[0])] = (pair.length == 2 ?
        decodeURIComponent(pair[1].replace(/\+/g, ' ')) : true);
    }
    return params;
};


//Serializa um formulário para Json
$.fn.serializeObject = function () {
    var o = {};
    var a = this.serializeArray();
    $.each(a, function () {
        if (o[this.name]) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};
//Extensão que permite piscar um conteudo
$.fn.blink = function () {
    $(this).animate({ opacity: 0.5 }, 250, function () { $(this).animate({ opacity: 1 }, 250); });
}
//Configura as dialogs para aparecerem no Top
$.ui.dialog.prototype._oldinit = $.ui.dialog.prototype._init;
$.ui.dialog.prototype._init = function () {
    $(this.element).parent().css('position', 'fixed');
    $(this.element).dialog("option", {
        open: function (event, ui) {
            var position = [( $(window).scrollLeft()),
                            ( $(window).scrollTop())];
            $(event.target).parent().css('position', 'fixed');
            $(event.target).parent().dialog('option', 'position', position);
            return true;
        }
    });
    this._oldinit();
};
//retorna se o campo tem valor preenchido
function TrataNulo(valor) {
    return $.trim(valor);

}
Postar um comentário