Melhorias gerais descritas no READ.me
This commit is contained in:
23
app/javascript/controllers/adicionar_motorista_controller.js
Normal file
23
app/javascript/controllers/adicionar_motorista_controller.js
Normal file
@@ -0,0 +1,23 @@
|
||||
// app/javascript/controllers/adicionar_motorista_controller.js
|
||||
// Stimulus — modal "Adicionar motorista" no Passo 1. Só abre/fecha o modal; o
|
||||
// formulário em si submete normalmente (Turbo), redirecionando de volta ao wizard.
|
||||
|
||||
import { Controller } from "@hotwired/stimulus"
|
||||
|
||||
export default class extends Controller {
|
||||
static targets = ["modal", "input"]
|
||||
|
||||
abrir() {
|
||||
this.modalTarget.classList.remove("hidden")
|
||||
if (this.hasInputTarget) this.inputTarget.focus()
|
||||
}
|
||||
|
||||
fechar() {
|
||||
this.modalTarget.classList.add("hidden")
|
||||
}
|
||||
|
||||
// Fecha ao clicar no fundo (fora do card)
|
||||
fundo(event) {
|
||||
if (event.target === this.modalTarget) this.fechar()
|
||||
}
|
||||
}
|
||||
@@ -7,9 +7,10 @@ import { Controller } from "@hotwired/stimulus"
|
||||
export default class extends Controller {
|
||||
static targets = [
|
||||
"linha", "checkbox", "selecionarTodos", "modoRemover", "rotuloAcao",
|
||||
"toggles", "barra", "percentual", "chipVeiculo",
|
||||
"contadorClassificadas", "contadorTotal",
|
||||
"qtdNormal", "qtdRetirada", "qtdBonus", "qtdDesconto", "qtdExtraordinaria", "valorTotal"
|
||||
"toggles", "barra", "barraManuais", "percentual", "chipVeiculo",
|
||||
"contadorClassificadas", "contadorTotal", "contadorManuais", "manuaisInfo",
|
||||
"qtdNormal", "qtdRetirada", "qtdBonus", "qtdDesconto", "qtdExtraordinaria",
|
||||
"qtdTermo", "qtdManuais", "valorTotal"
|
||||
]
|
||||
|
||||
static values = {
|
||||
@@ -181,20 +182,36 @@ export default class extends Controller {
|
||||
this.qtdDescontoTarget.textContent = porTipo["desconto"] || 0
|
||||
if (this.hasQtdExtraordinariaTarget)
|
||||
this.qtdExtraordinariaTarget.textContent = porTipo["extraordinaria"] || 0
|
||||
if (this.hasQtdTermoTarget)
|
||||
this.qtdTermoTarget.textContent = porTipo["termo"] || 0
|
||||
|
||||
const valor = dados.valor_total || 0
|
||||
this.valorTotalTarget.textContent =
|
||||
"R$ " + valor.toLocaleString("pt-BR", { minimumFractionDigits: 2, maximumFractionDigits: 2 })
|
||||
|
||||
// Lançamentos manuais do motorista (apontamentos + termo): feedback visual.
|
||||
// Ficam fora do denominador de elegíveis (o gate de finalização não muda).
|
||||
const manuais = dados.manuais || 0
|
||||
if (this.hasQtdManuaisTarget) this.qtdManuaisTarget.textContent = manuais
|
||||
if (this.hasContadorManuaisTarget) this.contadorManuaisTarget.textContent = manuais
|
||||
if (this.hasManuaisInfoTarget) this.manuaisInfoTarget.classList.toggle("hidden", manuais <= 0)
|
||||
|
||||
// Barra/contador refletem o ESCOPO atual (veículo selecionado, se houver).
|
||||
const classificadas = (dados.classificadas_escopo ?? dados.classificadas) || 0
|
||||
this.contadorClassificadasTarget.textContent = classificadas
|
||||
|
||||
const total = this.totalValue || parseInt(this.contadorTotalTarget.textContent)
|
||||
const pct = total > 0 ? Math.round((classificadas / total) * 100) : 0
|
||||
this.barraTarget.style.width = `${Math.min(pct, 100)}%`
|
||||
this.percentualTarget.textContent = `${Math.min(pct, 100)}%`
|
||||
|
||||
// Barra com 2 segmentos, proporcionais ao total geral (elegíveis + manuais):
|
||||
// laranja/verde = elegíveis classificadas · azul = lançamentos manuais.
|
||||
const denom = total + manuais
|
||||
this.barraTarget.style.width = denom > 0 ? `${(classificadas / denom) * 100}%` : "0%"
|
||||
if (this.hasBarraManuaisTarget)
|
||||
this.barraManuaisTarget.style.width = denom > 0 ? `${(manuais / denom) * 100}%` : "0%"
|
||||
|
||||
// Cor do segmento elegível: verde quando todas as elegíveis estão classificadas.
|
||||
this.barraTarget.classList.toggle("bg-green-500", pct >= 100)
|
||||
this.barraTarget.classList.toggle("bg-orange-500", pct < 100)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user