Inclusão de uma tabela de acompanhamento

This commit is contained in:
2026-07-13 18:12:04 -03:00
parent bd61b32edd
commit 75d82227c9
4 changed files with 171 additions and 0 deletions

View File

@@ -7,6 +7,9 @@
class OperacoesDashboardController < ApplicationController
MODOS = %w[operacao global comparar].freeze
# Linhas por página da tabela espelho (planilha da operação)
ESPELHO_POR_PAGINA = 15
def index
authorize :dashboard, :operacoes?
@@ -32,10 +35,25 @@ class OperacoesDashboardController < ApplicationController
@operacao = Operacao.sanitizar([params[:operacao]]).first || @tabelas_validas.first
@metricas = montar([@operacao], filtros: @filtros, data: @data_filtro) if @operacao
end
montar_tabela_espelho if @metricas && %w[operacao global].include?(@modo)
end
private
# Tabela espelho da planilha da operação: busca textual (q) + paginação (pg)
# sobre as linhas já cross-filtradas. Ordena pelas mais recentes (checkout;
# sem checkout vai para o fim).
def montar_tabela_espelho
@busca = params[:q].to_s.strip
linhas = @metricas.buscar(@busca).sort_by { |r| r['checkout'].to_s }.reverse
@espelho_total = linhas.size
@espelho_paginas = [(@espelho_total / ESPELHO_POR_PAGINA.to_f).ceil, 1].max
@espelho_pagina = params[:pg].to_i.clamp(1, @espelho_paginas)
@espelho_linhas = linhas[(@espelho_pagina - 1) * ESPELHO_POR_PAGINA, ESPELHO_POR_PAGINA] || []
end
def montar(tabelas, inicio: nil, fim: nil, filtros: {}, data: nil)
Analytics::OperacaoMetricas.new(tabelas: tabelas, inicio: inicio, fim: fim, filtros: filtros, data: data)
end