This commit is contained in:
Andrey Cunha
2026-03-10 23:32:02 -03:00
parent b32415212f
commit 9a0ef21ec8
63 changed files with 4412 additions and 637 deletions
@@ -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;
}