Prevent partial-updates from being overwritten when adding/deleting a dice (closes #87)

This commit is contained in:
Oliver-Akins 2024-02-13 20:07:34 -07:00
parent 2a7d485ab4
commit 29a1e0eacf
2 changed files with 26 additions and 0 deletions

View file

@ -30,6 +30,16 @@ export class DiceList extends GenericDialog {
return ctx;
};
async activateListeners(html) {
super.activateListeners(html);
if (!this.isEditable) return;
console.debug(`.dungeon | DiceList adding event listeners`);
html.find(`[data-die-update]`)
.on(`change`, this.updateDieInMemoryOnly.bind(this))
};
async _updateObject(_event, formData) {
const newDice = this.dice.map(d => {
return {
@ -41,6 +51,19 @@ export class DiceList extends GenericDialog {
await this.actor.update({ "system.dice": newDice });
};
updateDieInMemoryOnly($e) {
const target = $e.currentTarget;
const data = target.dataset;
const value = target.value;
const [ dieId, field ] = data.dieUpdate.split(`.`);
for (const die of this.dice) {
if (die.id === dieId) {
die[field] = value;
return
};
};
};
addDie() {
this.dice.push({
count: 1,

View file

@ -8,6 +8,7 @@
class="count"
name="{{die.id}}.count"
value="{{die.count}}"
data-die-update="{{die.id}}.count"
aria-label="The number of dice to roll at the same time"
>
<span class="large" aria-hidden="true">d</span>
@ -17,6 +18,7 @@
class="sides"
name="{{die.id}}.sides"
value="{{die.sides}}"
data-die-update="{{die.id}}.sides"
aria-label="The number of sides that are on the dice"
>
<span class="large" aria-hidden="true">x</span>
@ -26,6 +28,7 @@
class="repeat"
name="{{die.id}}.repeat"
value="{{die.repeat}}"
data-die-update="{{die.id}}.repeat"
aria-label="The number of times to repeat this dice "
>
<button