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;
+}