att
This commit is contained in:
@@ -1,123 +1,95 @@
|
||||
var DashData = SuperWidget.extend({
|
||||
|
||||
init:function(){
|
||||
|
||||
console.log("DashData carregado");
|
||||
|
||||
var self=this;
|
||||
|
||||
window.addEventListener("dashboardFiltro",function(e){
|
||||
|
||||
console.log("DashData recebeu filtros:",e.detail);
|
||||
|
||||
self.carregar(e.detail);
|
||||
init: function () {
|
||||
var self = this;
|
||||
|
||||
window.addEventListener("dashboardFiltro", function (e) {
|
||||
self.carregar(e.detail || {});
|
||||
});
|
||||
|
||||
this.carregar({});
|
||||
},
|
||||
|
||||
carregar:function(filtros){
|
||||
|
||||
console.log("Consultando dataset...", filtros);
|
||||
|
||||
var self=this;
|
||||
|
||||
carregar: function (filtros) {
|
||||
$.ajax({
|
||||
|
||||
url:"/api/public/ecm/dataset/search",
|
||||
type:"POST",
|
||||
contentType:"application/json",
|
||||
|
||||
data:JSON.stringify({
|
||||
datasetId:"ds_dashboard_checklist"
|
||||
url: "/api/public/ecm/dataset/search",
|
||||
type: "POST",
|
||||
contentType: "application/json",
|
||||
data: JSON.stringify({
|
||||
datasetId: "ds_dashboard_checklist"
|
||||
}),
|
||||
|
||||
success:function(res){
|
||||
|
||||
console.log("Resposta dataset:",res);
|
||||
|
||||
var dados=res.content || [];
|
||||
|
||||
console.log("Quantidade registros:", dados.length);
|
||||
|
||||
// FILTRO POR LOJA
|
||||
if(filtros.loja){
|
||||
|
||||
dados = dados.filter(function(item){
|
||||
|
||||
return normalizaTexto(item.loja) === normalizaTexto(filtros.loja);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
// FILTRO POR DATA
|
||||
if(filtros.dataInicio || filtros.dataFim){
|
||||
|
||||
dados = dados.filter(function(item){
|
||||
|
||||
var dataInicioAuditoria = normalizaData(item.dataAuditoria);
|
||||
var dataLimite = normalizaData(item.dataLimite);
|
||||
var inicioFiltro = normalizaData(filtros.dataInicio);
|
||||
var fimFiltro = normalizaData(filtros.dataFim);
|
||||
|
||||
// Mantem quando data de auditoria OU data limite estiver na faixa filtrada
|
||||
return dataNaFaixa(dataInicioAuditoria, inicioFiltro, fimFiltro) ||
|
||||
dataNaFaixa(dataLimite, inicioFiltro, fimFiltro);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
// Mantem somente auditorias com status final (evita divergencia entre total e KPIs)
|
||||
var antesStatus = dados.length;
|
||||
dados = dados.filter(function(item){
|
||||
success: function (res) {
|
||||
var dados = (res.content || []).filter(function (item) {
|
||||
var st = normalizaTexto(item.saidaAnalise || item.status || "");
|
||||
return st === "CONFORME" || st === "NAO_CONFORME";
|
||||
});
|
||||
console.log("Registros com status final:", dados.length, "de", antesStatus);
|
||||
|
||||
// Ordena por data de auditoria mais recente
|
||||
dados.sort(function(a,b){
|
||||
dados = dados.filter(function (item) {
|
||||
if (!matchMulti(item.ciclo, filtros.ciclo)) {
|
||||
return false;
|
||||
}
|
||||
if (!matchMulti(item.regional, filtros.regional)) {
|
||||
return false;
|
||||
}
|
||||
var sup = item.responsavelLoja;
|
||||
if (!matchMulti(sup, filtros.supervisao)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (filtros.dataInicio || filtros.dataFim) {
|
||||
var dataAuditoria = normalizaData(item.dataAuditoria);
|
||||
var dataLimite = normalizaData(item.dataLimite);
|
||||
var inicio = normalizaData(filtros.dataInicio);
|
||||
var fim = normalizaData(filtros.dataFim);
|
||||
return dataNaFaixa(dataAuditoria, inicio, fim) || dataNaFaixa(dataLimite, inicio, fim);
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
dados.sort(function (a, b) {
|
||||
var da = normalizaData(a.dataAuditoria);
|
||||
var db = normalizaData(b.dataAuditoria);
|
||||
if(da < db) return 1;
|
||||
if(da > db) return -1;
|
||||
if (da < db) return 1;
|
||||
if (da > db) return -1;
|
||||
return 0;
|
||||
});
|
||||
|
||||
console.log("Registros filtrados:", dados);
|
||||
|
||||
window.dispatchEvent(
|
||||
new CustomEvent("dashboardData",{detail:dados})
|
||||
);
|
||||
|
||||
window.dispatchEvent(new CustomEvent("dashboardData", { detail: dados }));
|
||||
},
|
||||
error: function () {
|
||||
window.dispatchEvent(new CustomEvent("dashboardData", { detail: [] }));
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function normalizaTexto(valor){
|
||||
function normalizaTexto(valor) {
|
||||
return String(valor || "").trim().toUpperCase();
|
||||
}
|
||||
|
||||
function normalizaData(valor){
|
||||
var v = String(valor || "").trim();
|
||||
return v;
|
||||
function normalizaData(valor) {
|
||||
return String(valor || "").trim();
|
||||
}
|
||||
|
||||
function dataNaFaixa(data, inicio, fim){
|
||||
if(!data){
|
||||
return false;
|
||||
}
|
||||
if(inicio && data < inicio){
|
||||
return false;
|
||||
}
|
||||
if(fim && data > fim){
|
||||
return false;
|
||||
}
|
||||
function dataNaFaixa(data, inicio, fim) {
|
||||
if (!data) return false;
|
||||
if (inicio && data < inicio) return false;
|
||||
if (fim && data > fim) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
function matchMulti(valorAtual, selecionados) {
|
||||
if (!selecionados || !selecionados.length) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var atual = normalizaTexto(valorAtual);
|
||||
for (var i = 0; i < selecionados.length; i++) {
|
||||
if (atual === normalizaTexto(selecionados[i])) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user