Arrumar a tela do dashboard e correção dos graficos

This commit is contained in:
2026-07-13 17:35:04 -03:00
parent b55b602eb5
commit 8e73bbe0ed
2 changed files with 68 additions and 19 deletions

View File

@@ -122,6 +122,9 @@ class DashboardController < ApplicationController
# Evolução diária no período (para Chart.js) — por data real (checkout)
@grafico_diario = build_grafico_diario(pagas, config[:entrega])
# Resultado por dia (entregue/falhada/pendente) — barras empilhadas
@grafico_status = build_grafico_status(pagas, falhadas, pendentes)
# Consolidações cujo período (data_inicio..data_fim) cruza o período do dashboard
# — independe de quando foram criadas (created_at).
@consolidacoes_mes = Consolidacao.ativas
@@ -241,6 +244,35 @@ class DashboardController < ApplicationController
{ labels: labels, valores: valores, qtds: qtds }
end
# Entregas por dia separadas por resultado, para o gráfico empilhado.
# Concluídas pela data real (checkout); falhadas e pendentes não têm
# checkout, então usam a data planejada (planned_date).
def build_grafico_status(pagas, falhadas, pendentes)
dias = (@periodo_inicio..@periodo_fim).to_a
if dias.size <= MAX_DIAS_GRAFICO
ok = pagas.group("DATE(checkout)").count.transform_keys(&:to_s)
falhas = falhadas.group("DATE(planned_date)").count.transform_keys(&:to_s)
pend = pendentes.group("DATE(planned_date)").count.transform_keys(&:to_s)
labels = dias.map { |d| d.strftime('%d/%m') }
chaves = dias.map(&:to_s)
else
ok = pagas.group("TO_CHAR(checkout, 'YYYY-MM')").count
falhas = falhadas.group("TO_CHAR(planned_date, 'YYYY-MM')").count
pend = pendentes.group("TO_CHAR(planned_date, 'YYYY-MM')").count
meses = meses_no_periodo
labels = meses.map { |m| Date.strptime(m, '%Y-%m').strftime('%m/%Y') }
chaves = meses
end
{
labels: labels,
entregues: chaves.map { |k| ok[k] || 0 },
falhadas: chaves.map { |k| falhas[k] || 0 },
pendentes: chaves.map { |k| pend[k] || 0 }
}
end
# Meses ("YYYY-MM") do início ao fim do período selecionado, inclusive.
def meses_no_periodo
meses = []