feat(controller): valida cambi giocatori già in formazione lato client
This commit is contained in:
@@ -165,6 +165,7 @@
|
||||
<input type="text" v-model="c.out" placeholder="OUT" class="input-num cambi-out-field" />
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="cambiError" class="cambi-error">{{ cambiError }}</div>
|
||||
<div class="dialog-buttons">
|
||||
<button class="btn btn-cancel" @click="closeCambi()">Annulla</button>
|
||||
<button class="btn btn-confirm" :disabled="!cambiValid" @click="confermaCambi()">CONFERMA</button>
|
||||
@@ -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;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user