diff --git a/module/dialog-item-vente.js b/module/dialog-item-vente.js index 5b6a62ce..fed81902 100644 --- a/module/dialog-item-vente.js +++ b/module/dialog-item-vente.js @@ -8,7 +8,7 @@ export class DialogItemVente extends Dialog { const venteData = { item: item, alias: item.actor?.name ?? game.user.name, - vendeurId: item.actor?.id , + vendeurId: item.actor?.id, prixOrigine: item.calculerPrixCommercant(), prixUnitaire: item.calculerPrixCommercant(), prixLot: item.calculerPrixCommercant(), @@ -40,51 +40,62 @@ export class DialogItemVente extends Dialog { activateListeners(html) { super.activateListeners(html); + this.html = html; - this.setQuantiteIllimite(this.venteData.quantiteIllimite); this.html.find(".tailleLot").change(event => this.setTailleLot(Number(event.currentTarget.value))); this.html.find(".quantiteNbLots").change(event => this.setNbLots(Number(event.currentTarget.value))); this.html.find(".quantiteIllimite").change(event => this.setQuantiteIllimite(event.currentTarget.checked)); this.html.find(".prixLot").change(event => this.setPrixLot(Number(event.currentTarget.value))); + + this.setQuantiteIllimite(this.venteData.quantiteIllimite); } async onProposer(it) { - await this.html.find(".tailleLot").change(); - await this.html.find(".quantiteNbLots").change(); - await this.html.find(".quantiteIllimite").change(); - await this.html.find(".prixLot").change(); + this.updateVente(this.getChoixVente()); this.callback(this.venteData); } + updateVente(update) { + mergeObject(this.venteData, update); + } + + getChoixVente() { + return { + quantiteNbLots: Number(this.html.find(".quantiteNbLots").val()), + tailleLot: Number(this.html.find(".tailleLot").val()), + quantiteIllimite: this.html.find(".quantiteIllimite").is(':checked'), + prixLot: Number(this.html.find(".prixLot").val()) + }; + } + /* -------------------------------------------- */ setPrixLot(prixLot) { this.venteData.prixLot = prixLot; } setTailleLot(tailleLot) { - // recalculer le prix du lot - if (tailleLot != this.venteData.tailleLot) { - this.venteData.prixLot = (tailleLot * this.venteData.prixOrigine).toFixed(2); - this.html.find(".prixLot").val(this.venteData.prixLot); - } - this.venteData.tailleLot = tailleLot; - // recalculer le nombre de lots max - this.venteData.quantiteMaxLots = Math.floor(this.venteData.quantiteMax / tailleLot); - this.venteData.quantiteNbLots = Math.min(this.venteData.quantiteMaxLots, this.venteData.quantiteNbLots); + const maxLots = Math.floor(this.venteData.quantiteMax / tailleLot); + this.updateVente({ + tailleLot, + quantiteNbLots: Math.min(maxLots, this.venteData.quantiteNbLots), + quantiteMaxLots: maxLots, + prixLot: (tailleLot * this.venteData.prixOrigine).toFixed(2) + }); + + this.html.find(".prixLot").val(this.venteData.prixLot); this.html.find(".quantiteNbLots").val(this.venteData.quantiteNbLots); this.html.find(".quantiteNbLots").attr("max", this.venteData.quantiteMaxLots) } setNbLots(nbLots) { - if (this.venteData.isOwned) { - nbLots = Math.max(0, Math.min(nbLots, this.venteData.quantiteMaxLots)); - } - this.venteData.quantiteNbLots = nbLots; + this.updateVente({ + quantiteNbLots: this.venteData.isOwned ? Math.max(0, Math.min(nbLots, this.venteData.quantiteMaxLots)) : nbLots + }) this.html.find(".quantiteNbLots").val(this.venteData.quantiteNbLots); } setQuantiteIllimite(checked) { - this.venteData.quantiteIllimite = checked; + this.updateVente({ quantiteIllimite: checked }) this.html.find(".label-quantiteIllimite").text(this.venteData.quantiteIllimite ? "Illimités" : "disponibles"); HtmlUtility.showControlWhen(this.html.find(".quantiteNbLots"), !this.venteData.quantiteIllimite) }