Inclusão de uma tabela de acompanhamento
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user