var filtro = (function ($) {
var urlListarAtributo, urlListarAtributoItem;
function ConstruirGrupo($container) {
var $divGrupo = $("
");
var $divFiltro = $("");
var $btnRegra = $("");
var $btnGrupo = $("")
$divGrupo.append($divFiltro);
$divGrupo.append($btnRegra);
$divGrupo.append($btnGrupo);
$btnRegra.click(function () {
ConstruirRegra($(this).parent());
});
$btnGrupo.click(function () {
ConstruirRegra($(this).parent(), true);
});
ConstruirRegra($divGrupo, false);
$container.append($divGrupo);
}
function ConstruirValor($ddlCondicao) {
var $ddlAtributo = $ddlCondicao.parent().find(".atributo");
var $optionSelected = $ddlCondicao.find(":selected");
var $valor = $ddlCondicao.parent().parent().find(".valor");
if (typeof $valor != "undefined") {
$valor.remove();
}
if ($optionSelected.hasClass("ddl")) {
$valor = $("");
$.ajax({
url: urlListarAtributoItem,
method: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: { 'at': JSON.stringify('Tipificação') }
})
.done(function (response) {
var op;
for (ix = 0; ix < response.d.length; ix += 2) {
op = "";
$valor.append(op);
}
})
.fail(function (xhr, status, error) {
alert("status: " + status + "\nerro: " + error);
});
}
else
$valor = $("");
$ddlCondicao.parent().parent().find(".tdValor").append($valor);
}
function ConstruirCondicao($ddlAtributo) {
var $ddlCondicao = $ddlAtributo.parent().parent().find(".ddlCondicao");
var $optionSelected = $ddlAtributo.find(":selected");
$ddlCondicao.find("option").remove().end();
$ddlCondicao.append("")
if ($optionSelected.hasClass("ddl"))
$ddlCondicao.append("");
ConstruirValor($ddlCondicao);
}
function ConstruirRegra($grupo, subgrupo) {
var $container = $grupo.children(".divFiltro");
var $tbRegra = $("");
var $btnExcluir = $("");
var $ddlConector = $(" ");
var $ddlAtributo;
var $ddlCondicao;
var $divSubgrupo;
$container.append($tbRegra);
$tbRegra.find(".tdExcluir").append($btnExcluir);
$tbRegra.find(".tdConector").append($ddlConector);
$btnExcluir.click(function () {
$(this).parent().parent().parent().parent().remove();
});
if (subgrupo == true) {
$divSubgrupo = $("");
$tbRegra.find(".tdAtributo").append($divSubgrupo);
ConstruirGrupo($divSubgrupo);
return;
}
$ddlAtributo = $('');
$ddlCondicao = $('');
$tbRegra.find(".tdAtributo").append($ddlAtributo);
$tbRegra.find(".tdCondicao").append($ddlCondicao);
$.ajax({
url: urlListarAtributo,
method: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json"
})
.done(function (response) {
var op;
for (ix = 0; ix < response.d.length; ix += 2) {
op = "";
$ddlAtributo.append(op);
}
ConstruirCondicao($ddlAtributo);
})
.fail(function () {
alert("error");
});
$ddlAtributo.change(function (e) {
ConstruirCondicao($(e.target));
});
$ddlCondicao.change(function (e) {
ConstruirValor($(e.target));
});
}
function ConstruirCondicaoObjeto($container) {
var condicao = "";
$container.children().each(function (index) {
$(this).children(".divFiltro").each(function (index) {
$(this).children(".tbRegra").each(function (index) {
var $tbRegra = $(this);
var $divSubgrupo;
var txtConector;
var txtAtributo;
var txtCondicao;
var txtValor;
txtConector = $tbRegra.find(".tdConector").children().first().val();
$divSubgrupo = $tbRegra.find(".subgrupo");
if ($divSubgrupo.length > 0) {
condicao +=
",{\n" +
"'conector': '" + txtConector + "',\n" +
ConstruirCondicaoObjeto($divSubgrupo) +
"}\n";
return condicao;
}
txtAtributo = $tbRegra.find(".tdAtributo").children().first().val();
txtCondicao = $tbRegra.find(".tdCondicao").children().first().val();
txtValor = $tbRegra.find(".tdValor").children().first().val();
if (condicao === "") {
condicao += "'regras': [";
}
else
condicao += ",";
condicao +=
"{\n" +
"'conector': '" + txtConector + "',\n" +
"'atributo': '" + txtAtributo + "',\n" +
"'condicao': '" + txtCondicao + "',\n" +
"'valor': '" + txtValor + "'\n" +
"}\n";
//alert("Conector: " + txtConector + "\n" +
// "Atributo: " + txtAtributo + "\n" +
// "Condicao: " + txtCondicao + "\n" +
// "Valor: " + txtValor);
});
});
});
if (condicao !== "")
condicao += "]";
return condicao;
}
// INTERFACE
var Iniciar = function (prmUrlListarAtributo, prmUrlListarAtributoItem) {
urlListarAtributo = prmUrlListarAtributo;
urlListarAtributoItem = prmUrlListarAtributoItem;
ConstruirGrupo($("#filtro"));
}
var BuscarCondicao = function () {
var condicao = "{" + ConstruirCondicaoObjeto($("#filtro")) + "}";
return condicao;
}
return { Iniciar: Iniciar, BuscarCondicao: BuscarCondicao };
}(jQuery));