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; 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) { async _updateObject(_event, formData) {
const newDice = this.dice.map(d => { const newDice = this.dice.map(d => {
return { return {
@ -41,6 +51,19 @@ export class DiceList extends GenericDialog {
await this.actor.update({ "system.dice": newDice }); 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() { addDie() {
this.dice.push({ this.dice.push({
count: 1, count: 1,

View file

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