%# app/views/dashboard/index.html.erb %>
<%# Fase 3: Dashboard com cards, gráfico Chart.js e cálculo ao vivo %>
<%# Não cachear no Turbo: o snapshot congelava o gráfico/calendário (DOM já
<%# alterado pelo JS, sem reexecutar scripts) e só voltava com F5. %>
<% content_for :head do %>
<%# Flatpickr — CSS no
(evita flash sem estilo) + tema escuro oficial %>
<% end %>
<%# Quick-ranges no formato YYYY-MM-DD para os atalhos do filtro %>
<% hoje = Date.current %>
<% atalhos = {
'Hoje' => [hoje, hoje],
'7 dias' => [hoje - 6, hoje],
'Este mês' => [hoje.beginning_of_month, hoje],
'30 dias' => [hoje - 29, hoje]
} %>
<%# Filtro de calendário — seleciona uma faixa de datas %>
<%# CARDS GRANDES — KPIs
auto-fit + minmax em vez de `xl:grid-cols-5`: o breakpoint xl olha a JANELA
(1280px), mas com a sidebar aberta sobram ~960px de conteúdo — 5 colunas de
~176px, e "R$ 82.692,00" em text-4xl era cortado pelo overflow-hidden do
card. Com auto-fit o número de colunas cai sozinho quando o menu está
aberto e sobe quando ele é recolhido, sem depender de breakpoint. %>
<%# Card 1: Valor estimado — sempre 2 faixas: é o maior número da tela %>
<%= icone :dinheiro, cor: nil, espaco: false %> Valor Estimado
<%# break-words: se ainda faltar espaço, quebra a linha em vez de cortar %>
<%= moeda(@valor_estimado) %>
<%# "Atendidas" = concluídas + falhadas (motorista foi ao local e fechou
a visita). É a mesma base que a consolidação paga, por isso o rótulo
NÃO pode voltar a dizer "concluídas": o valor acima inclui as falhas. %>
<%# Top motoristas — DUAS ABAS sobre o mesmo ranking:
• Estimado = entregas atendidas × preço da entrega (mesma base do card
laranja do topo).
• Consolidado = o que foi REALMENTE fechado nas consolidações do período,
já com bônus/desconto/retirada aplicados, e a quantidade
exata de entregas que entrou no fechamento.
Os dois números divergem DE PROPÓSITO: o estimado cobre tudo que foi
atendido no período; o consolidado, só o que já entrou em consolidação
finalizada. Por isso cada aba diz de onde vem o seu número. %>
<%= icone :ranking, espaco: false %> Motoristas
<%# Mesmas pílulas da paginação de pagamentos (as classes estão duplicadas
no JS que troca a aba — mexeu aqui, mexa lá). %>
<%# Flatpickr — date range picker (JS via CDN; CSS já carregado no ) %>
<%# Paginação client-side das tabelas de pagamentos (10 por página) %>
<%# Abas do ranking de motoristas (Estimado × Consolidado) %>
<%# Filtro de operação — submete o form ao marcar/desmarcar %>
<%# Chart.js via CDN %>
<%# Fluxo de pagamentos: barras (pago no dia) + linha (acumulado no período) %>
<%# Rosca de pagamentos (pago x a pagar, por valor) %>
<%# ── Gráficos financeiros por operação ─────────────────────── %>