Correção de alguns valores no dash principal

This commit is contained in:
2026-08-24 12:07:56 -03:00
parent 7b3ec3e407
commit 04b78bc7de
12 changed files with 690 additions and 50 deletions

View File

@@ -57,6 +57,7 @@
<%= icone :comparar %> Comparação entre operações (cada uma no seu próprio período)
<% elsif @metricas&.data_inicio %>
<%= @metricas.operacoes_label %> · <%= @metricas.data_inicio.strftime('%d/%m/%Y') %> <%= @metricas.data_fim.strftime('%d/%m/%Y') %>
<%= @periodo_explicito ? '(período filtrado)' : '(operação inteira)' %>
<% elsif @operacao %>
<%= Operacao.label(@operacao) %>
<% end %>
@@ -64,9 +65,11 @@
</p>
</div>
<%# Filtro de período — só na visão Global (a faixa de data não se aplica a
operação única, que usa o período natural dos próprios dados). %>
<% if @modo == 'global' %>
<%# Filtro de período — Global e Operação. No modo Operação ele só entra em
vigor quando o operador ESCOLHE uma faixa (params inicio/fim): sem isso o
recorte é a operação inteira, senão abrir uma operação de meses atrás
cairia no mês corrente e mostraria zero. %>
<% if %w[global operacao].include?(@modo) %>
<div class="flex flex-wrap items-center gap-2">
<div class="relative">
<span class="pointer-events-none absolute right-3 top-1/2 -translate-y-1/2"><%= icone :calendario, espaco: false %></span>
@@ -77,12 +80,22 @@
</div>
<div class="flex flex-wrap items-center gap-1">
<% atalhos.each do |label, (ini, fim)| %>
<% ativo = @periodo_inicio == ini && @periodo_fim == fim %>
<%# No Global a faixa SEMPRE vale (é o que define a visão); no modo
Operação só quando escolhida — senão o atalho apareceria aceso
sem estar sendo aplicado. %>
<% ativo = (@periodo_explicito || @modo == 'global') && @periodo_inicio == ini && @periodo_fim == fim %>
<%= link_to label,
operacoes_dashboard_path(modo: 'global', inicio: ini.strftime('%Y-%m-%d'), fim: fim.strftime('%Y-%m-%d')),
operacoes_dashboard_path(ctx_ops.merge(modo: @modo, inicio: ini.strftime('%Y-%m-%d'), fim: fim.strftime('%Y-%m-%d'))),
data: { turbo: false },
class: "px-3 py-2.5 rounded-xl text-sm whitespace-nowrap border #{ativo ? 'bg-orange-500 text-black border-orange-500 font-bold' : 'bg-[#1a1a1a] text-gray-300 border-white/10 hover:border-orange-500'}" %>
<% end %>
<%# Volta ao recorte natural da operação (sem faixa de datas na URL). %>
<% if @modo == 'operacao' %>
<%= link_to 'Operação inteira',
operacoes_dashboard_path(ctx_ops.merge(modo: 'operacao')),
data: { turbo: false },
class: "px-3 py-2.5 rounded-xl text-sm whitespace-nowrap border #{@periodo_explicito ? 'bg-[#1a1a1a] text-gray-300 border-white/10 hover:border-orange-500' : 'bg-orange-500 text-black border-orange-500 font-bold'}" %>
<% end %>
</div>
</div>
<% end %>
@@ -90,12 +103,16 @@
<%# ── Abas de modo + atalho para a planilha ─────────────── %>
<% modos = { 'operacao' => [:operacao, 'Operação'], 'global' => [:global, 'Global'], 'comparar' => [:comparar, 'Comparar'] } %>
<%# A faixa de datas só viaja entre as abas se o operador tiver ESCOLHIDO uma.
Carregar o default (mês corrente) ao entrar em "Operação" faria uma operação
de meses atrás abrir zerada. %>
<% ctx_periodo = @periodo_explicito ? { inicio: ini_iso, fim: fim_iso } : {} %>
<div class="flex flex-wrap items-center justify-between gap-2 border-b border-white/5 pb-3">
<div class="flex flex-wrap items-center gap-2">
<% modos.each do |m, (ic, label)| %>
<% ativo = @modo == m %>
<%= link_to rotulo(ic, label, cor: (ativo ? nil : 'text-brand-laranja')),
operacoes_dashboard_path(ctx_ops.merge(modo: m, inicio: ini_iso, fim: fim_iso)),
operacoes_dashboard_path(ctx_ops.merge(ctx_periodo).merge(modo: m)),
data: { turbo: false },
class: "px-4 py-2 rounded-xl text-sm font-semibold whitespace-nowrap #{ativo ? 'bg-orange-500 text-black' : 'bg-[#1a1a1a] text-gray-300 border border-white/10 hover:border-orange-500'}" %>
<% end %>
@@ -157,6 +174,9 @@
<%= render 'painel', metricas: @metricas, filtravel: true %>
<%= render 'mapa', metricas: @metricas %>
<% end %>
<% if @fora_operacao %>
<%= render 'fora_operacao', fora: @fora_operacao, inicio: @periodo_inicio, fim: @periodo_fim %>
<% end %>
<% elsif @modo == 'global' %>
<div class="bg-[#1a1a1a] rounded-2xl border border-white/5 p-4 text-sm text-gray-300">
@@ -167,6 +187,9 @@
<%= render 'painel', metricas: @metricas, filtravel: true %>
<%= render 'mapa', metricas: @metricas %>
<% end %>
<% if @fora_operacao %>
<%= render 'fora_operacao', fora: @fora_operacao, inicio: @periodo_inicio, fim: @periodo_fim %>
<% end %>
<% else # comparar %>
<form method="get" action="<%= operacoes_dashboard_path %>" data-turbo="false" class="grid grid-cols-1 sm:grid-cols-2 gap-4">