prevent error when trying to manage active effects on an owned item
This commit is contained in:
parent
cad0d74522
commit
714efeb4ab
2 changed files with 33 additions and 19 deletions
|
@ -52,6 +52,9 @@ export class DS4ItemSheet extends ItemSheet<DS4ItemDataType, DS4Item> {
|
||||||
return position;
|
return position;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private readonly ownedItemActiveEffectWarning =
|
||||||
|
"Managing Active Effects within an Owned Item is not currently supported and will be added in a subsequent update.";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
|
@ -60,29 +63,38 @@ export class DS4ItemSheet extends ItemSheet<DS4ItemDataType, DS4Item> {
|
||||||
|
|
||||||
if (!this.options.editable) return;
|
if (!this.options.editable) return;
|
||||||
|
|
||||||
html.find(".effect-create").on("click", this._onEffectCreate.bind(this));
|
html.find(".effect-control").on("click", this._onManageActiveEffect.bind(this));
|
||||||
|
|
||||||
html.find(".effect-edit").on("click", (ev) => {
|
|
||||||
const li = $(ev.currentTarget).parents(".effect");
|
|
||||||
console.log(li.data("effectId"));
|
|
||||||
const effect = this.item.effects.get(li.data("effectId"));
|
|
||||||
effect.sheet.render(true);
|
|
||||||
});
|
|
||||||
|
|
||||||
html.find(".effect-delete").on("click", async (ev) => {
|
|
||||||
const li = $(ev.currentTarget).parents(".effect");
|
|
||||||
await this.item.deleteEmbeddedEntity("ActiveEffect", li.data("effectId"));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle creating a new ActiveEffect for the item using initial data defined in the HTML dataset
|
* Handle management of ActiveEffects.
|
||||||
* @param {Event} event The originating click event
|
* @param {Event} event The originating click event
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
private async _onEffectCreate(event: JQuery.ClickEvent): Promise<unknown> {
|
private async _onManageActiveEffect(event: JQuery.ClickEvent): Promise<unknown> {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
|
if (this.item.isOwned) {
|
||||||
|
return ui.notifications.warn(this.ownedItemActiveEffectWarning);
|
||||||
|
}
|
||||||
|
const a = event.currentTarget;
|
||||||
|
const li = $(a).parents(".effect");
|
||||||
|
|
||||||
|
switch (a.dataset["action"]) {
|
||||||
|
case "create":
|
||||||
|
return this._createActiveEffect();
|
||||||
|
case "edit":
|
||||||
|
const effect = this.item.effects.get(li.data("effectId"));
|
||||||
|
return effect.sheet.render(true);
|
||||||
|
case "delete": {
|
||||||
|
return this.item.deleteEmbeddedEntity("ActiveEffect", li.data("effectId"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new ActiveEffect for the item using default data.
|
||||||
|
*/
|
||||||
|
private async _createActiveEffect(): Promise<unknown> {
|
||||||
const label = `New Effect`;
|
const label = `New Effect`;
|
||||||
|
|
||||||
const createData = {
|
const createData = {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<div class="effect-image"></div>
|
<div class="effect-image"></div>
|
||||||
<div class="effect-name">Name</div>
|
<div class="effect-name">Name</div>
|
||||||
<div class="effect-controls">
|
<div class="effect-controls">
|
||||||
<a class="effect-control effect-create" title="Create Effect"><i
|
<a class="effect-control effect-create" data-action="create" title="Create Effect"><i
|
||||||
class="fas fa-plus"></i> Add effect</a>
|
class="fas fa-plus"></i> Add effect</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
@ -13,8 +13,10 @@
|
||||||
<li class="effect flexrow" data-effect-id="{{effect._id}}">
|
<li class="effect flexrow" data-effect-id="{{effect._id}}">
|
||||||
<h4 class="effect-name">{{effect.label}}</h4>
|
<h4 class="effect-name">{{effect.label}}</h4>
|
||||||
<div class="effect-controls">
|
<div class="effect-controls">
|
||||||
<a class="effect-control effect-edit" title="Edit Effect"><i class="fas fa-edit"></i></a>
|
<a class="effect-control effect-edit" data-action="edit" title="Edit Effect"><i
|
||||||
<a class="effect-control effect-delete" title="Delete Effect"><i class="fas fa-trash"></i></a>
|
class="fas fa-edit"></i></a>
|
||||||
|
<a class="effect-control effect-delete" data-action="delete" title="Delete Effect"><i
|
||||||
|
class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|
Loading…
Reference in a new issue