From e9db6b7164b6fdf5b2884f3020db6a6507ded89fe992fd8a0f4d5ac8a10b1ee2 Mon Sep 17 00:00:00 2001 From: victor Date: Fri, 21 Aug 2026 01:21:08 -0300 Subject: [PATCH] =?UTF-8?q?Corre=C3=A7=C3=A3o=20da=20barra=20do=20ranking?= =?UTF-8?q?=20de=20motoristas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A barra era proporcional à QUANTIDADE de entregas, mas as duas abas do card são ordenadas por VALOR. Na aba Estimado dá no mesmo (valor = qtd × preço), mas na Consolidada bônus/retirada/termo mudam o preço unitário: com os dados do teste a barra do 3º (290 entregas, R$ 5.250) saía MAIOR que a do 2º (261 entregas, R$ 5.260), contradizendo a ordem do ranking. Invertia em três pontos da lista. Passa a escalar pelo valor, que é o número que ordena — as barras encurtam sempre de cima para baixo. Mantida a guarda de divisão por zero. Co-Authored-By: Claude Opus 5 --- app/views/dashboard/_ranking_motoristas.html.erb | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/app/views/dashboard/_ranking_motoristas.html.erb b/app/views/dashboard/_ranking_motoristas.html.erb index f673ab0..fdb5bb8 100644 --- a/app/views/dashboard/_ranking_motoristas.html.erb +++ b/app/views/dashboard/_ranking_motoristas.html.erb @@ -6,11 +6,14 @@ Locais: itens (array de hashes), vazio (texto do estado sem dados). %> <% if itens.any? %>
- <%# Base da barra: o MAIOR nº de entregas da aba, não o primeiro item — a aba - consolidada é ordenada por VALOR, então o primeiro pode não ser o maior em - quantidade e a barra passaria de 100%. Sem entregas (só bônus/desconto, - por exemplo) a barra fica vazia em vez de dividir por zero. %> - <% max = itens.map { |x| x[:entregas].to_i }.max.to_f %> + <%# A barra é proporcional ao VALOR, que é o número pelo qual as duas abas são + ordenadas — assim ela sempre encurta de cima para baixo. + ⚠️ Não voltar a usar :entregas aqui: na aba Estimado dá no mesmo (valor = + qtd × preço), mas na Consolidada quem tem mais entregas nem sempre tem o + maior valor (bônus/retirada/termo mudam o preço unitário) e a barra do 3º + ficava MAIOR que a do 2º, contradizendo a ordem do ranking. + Zero vira barra vazia em vez de divisão por zero. %> + <% max = itens.map { |x| x[:valor].to_f }.max.to_f %> <% itens.each_with_index do |m, i| %>
+ style="width: <%= max.zero? ? 0 : [(m[:valor] / max * 100).round, 100].min %>%">
<%= m[:entregas] %> entregas