diff --git a/src/components/ControllerPage.vue b/src/components/ControllerPage.vue index 54622d1..12cb6b2 100644 --- a/src/components/ControllerPage.vue +++ b/src/components/ControllerPage.vue @@ -165,6 +165,7 @@ +
{{ cambiError }}
@@ -194,6 +195,7 @@ export default { { in: "", out: "" }, { in: "", out: "" }, ], + cambiError: "", configData: { nomeHome: "", nomeGuest: "", @@ -463,19 +465,49 @@ export default { this.showCambiTeam = false this.cambiTeam = team this.cambiData = [{ in: "", out: "" }, { in: "", out: "" }] + this.cambiError = "" this.showCambi = true }, closeCambi() { this.showCambi = false this.cambiData = [{ in: "", out: "" }, { in: "", out: "" }] + this.cambiError = "" }, confermaCambi() { if (!this.cambiValid) return + this.cambiError = "" + const cambi = this.cambiData .filter(c => (c.in || "").trim() && (c.out || "").trim()) .map(c => ({ in: c.in.trim(), out: c.out.trim() })) + + // Simula i cambi in sequenza per validare + const formCorrente = this.state.sp.form[this.cambiTeam].map(v => String(v).trim()) + const formSimulata = [...formCorrente] + + for (const cambio of cambi) { + if (!/^\d+$/.test(cambio.in) || !/^\d+$/.test(cambio.out)) { + this.cambiError = "I numeri dei giocatori devono essere cifre" + return + } + if (cambio.in === cambio.out) { + this.cambiError = `Il giocatore ${cambio.in} non può sostituire sé stesso` + return + } + if (formSimulata.includes(cambio.in)) { + this.cambiError = `Il giocatore ${cambio.in} è già in formazione` + return + } + if (!formSimulata.includes(cambio.out)) { + this.cambiError = `Il giocatore ${cambio.out} non è in formazione` + return + } + const idx = formSimulata.indexOf(cambio.out) + formSimulata.splice(idx, 1, cambio.in) + } + this.sendAction({ type: 'confermaCambi', team: this.cambiTeam, cambi }) this.closeCambi() }, @@ -866,4 +898,11 @@ export default { background: rgba(200, 120, 120, 0.2) !important; border-color: rgba(200, 120, 120, 0.4) !important; } +.cambi-error { + color: #ff6b6b; + font-size: 14px; + text-align: center; + padding: 8px 0; + font-weight: 600; +}