From 09653d8cb581e571e2aebeaa25e279df8c142d13 Mon Sep 17 00:00:00 2001 From: Melon-PieldeSapo Date: Tue, 7 Jan 2025 14:56:19 +0100 Subject: [PATCH] Fix sheets to await parent data --- module/actor/actor-sheet.js | 2 +- module/actor/creature-sheet.js | 2 +- module/actor/ship-sheet-sbt.js | 2 +- module/actor/ship-sheet.js | 2 +- module/item/class-sheet.js | 58 +++++++++++++++++++++++----- module/item/item-sheet.js | 2 +- module/item/skill-sheet.js | 2 +- templates/item/item-class-sheet.html | 55 ++++++++++++++++++++------ 8 files changed, 98 insertions(+), 27 deletions(-) diff --git a/module/actor/actor-sheet.js b/module/actor/actor-sheet.js index 016cf27..357aad3 100644 --- a/module/actor/actor-sheet.js +++ b/module/actor/actor-sheet.js @@ -21,7 +21,7 @@ export class MothershipActorSheet extends ActorSheet { /** @override */ async getData() { - const data = super.getData(); + const data = await super.getData(); data.dtypes = ["String", "Number", "Boolean"]; diff --git a/module/actor/creature-sheet.js b/module/actor/creature-sheet.js index 6836160..881a2de 100644 --- a/module/actor/creature-sheet.js +++ b/module/actor/creature-sheet.js @@ -65,7 +65,7 @@ export class MothershipCreatureSheet extends ActorSheet { /** @override */ async getData() { - const data = super.getData(); + const data = await super.getData(); data.dtypes = ["String", "Number", "Boolean"]; // for (let attr of Object.values(data.data.attributes)) { // attr.isCheckbox = attr.dtype === "Boolean"; diff --git a/module/actor/ship-sheet-sbt.js b/module/actor/ship-sheet-sbt.js index 1b61abd..379e23b 100644 --- a/module/actor/ship-sheet-sbt.js +++ b/module/actor/ship-sheet-sbt.js @@ -66,7 +66,7 @@ export class MothershipShipSheetSBT extends ActorSheet { /** @override */ async getData() { - const data = super.getData(); + const data = await super.getData(); data.dtypes = ["String", "Number", "Boolean"]; diff --git a/module/actor/ship-sheet.js b/module/actor/ship-sheet.js index 824f96a..a169b03 100644 --- a/module/actor/ship-sheet.js +++ b/module/actor/ship-sheet.js @@ -19,7 +19,7 @@ export class MothershipShipSheet extends ActorSheet { /** @override */ async getData() { - const data = super.getData(); + const data = await super.getData(); data.dtypes = ["String", "Number", "Boolean"]; diff --git a/module/item/class-sheet.js b/module/item/class-sheet.js index bbf4cbf..e1676e8 100644 --- a/module/item/class-sheet.js +++ b/module/item/class-sheet.js @@ -25,13 +25,21 @@ export class MothershipClassSheet extends MothershipItemSheet { /** @override */ async getData() { - const data = super.getData(); + const data = await super.getData(); if (typeof data.system.base_adjustment.skills_granted == 'undefined'){ data.system.base_adjustment.skills_granted=[]; } data.system.base_adjustment.skills_granted_object = []; for (const skill of data.system.base_adjustment.skills_granted){ - data.system.base_adjustment.skills_granted_object.push(await fromUuid(skill)); + if(Array.isArray(skill)){ + let option_skills = []; + for (const option of skill){ + option_skills.push(await fromUuid(option)); + } + data.system.base_adjustment.skills_granted_object.push(option_skills); + }else{ + data.system.base_adjustment.skills_granted_object.push(await fromUuid(skill)); + } }; @@ -56,17 +64,31 @@ export class MothershipClassSheet extends MothershipItemSheet { if (droppedUuid.type != "Item"){ return; } - + console.log(event); + console.log(event.currentTarget); + console.log(event.target); + console.log(event.target.parentNode); const droppedObject = await fromUuid(droppedUuid.uuid); if (droppedObject.type == "skill"){ //todo: add a check if the skill already exist in the list and dont add it, (by id or by name?) - if(event.target.id == "skills.fixed"){ - let skills = this.object.system.base_adjustment.skills_granted; - skills.push(droppedObject.uuid); - this.object.update({"system.base_adjustment.skills_granted":skills}); - return this.render(false); + if(event.currentTarget.id == "skills.fixed"){ + let parent_fixed_or = event.target.closest('div[id="skills.fixed.or"]'); + + if(parent_fixed_or){ + let array_index = parent_fixed_or.getAttribute("index"); + let skills = this.object.system.base_adjustment.skills_granted; + skills[array_index].push(droppedObject.uuid); + this.object.update({"system.base_adjustment.skills_granted":skills}); + return this.render(false); + + }else{ + let skills = this.object.system.base_adjustment.skills_granted; + skills.push(droppedObject.uuid); + this.object.update({"system.base_adjustment.skills_granted":skills}); + return this.render(false); + } } - else if(event.target.id =="skills.common"){ + else if(event.currentTarget.id =="skills.common"){ let skills = this.object.system.common_skills; skills.push(droppedObject.uuid); this.object.update({"system.common_skills":skills}); @@ -85,7 +107,18 @@ export class MothershipClassSheet extends MothershipItemSheet { const li = $(ev.currentTarget).parents(".item"); let skills = this.object.system.base_adjustment.skills_granted.filter(function( obj ) { + + if(Array.isArray(obj)){ + let found = false; + for (const option of obj){ + if (option === li.data("itemId")){ + found = true; + } + } + return !found; + }else{ return obj !== li.data("itemId"); + } }); this.object.update({"system.base_adjustment.skills_granted":skills}); return this.render(false); @@ -113,6 +146,13 @@ export class MothershipClassSheet extends MothershipItemSheet { }); html.find('.stat-create').click(this._onStatCreate.bind(this)); + html.find('div[id="skill-create-or-option"]').click(ev => { + let skills = this.object.system.base_adjustment.skills_granted; + //add new empty or option + skills.push([]); + this.object.update({"system.base_adjustment.skills_granted":skills}); + return this.render(false); + }); } diff --git a/module/item/item-sheet.js b/module/item/item-sheet.js index a830864..702c510 100644 --- a/module/item/item-sheet.js +++ b/module/item/item-sheet.js @@ -31,7 +31,7 @@ export class MothershipItemSheet extends ItemSheet { /** @override */ async getData() { - const data = super.getData(); + const data = await super.getData(); const superData = data.system; if (data.type == "weapon") { diff --git a/module/item/skill-sheet.js b/module/item/skill-sheet.js index a41b99c..ab7223b 100644 --- a/module/item/skill-sheet.js +++ b/module/item/skill-sheet.js @@ -20,7 +20,7 @@ export class MothershipSkillSheet extends MothershipItemSheet { /** @override */ async getData() { - const data = super.getData(); + const data = await super.getData(); if (typeof data.system.prerequisite_ids == 'undefined'){ data.system.prerequisite_ids=[]; } diff --git a/templates/item/item-class-sheet.html b/templates/item/item-class-sheet.html index cf8a993..875f8ee 100644 --- a/templates/item/item-class-sheet.html +++ b/templates/item/item-class-sheet.html @@ -212,20 +212,51 @@
{{ localize 'Mosh.SkillName' }}
{{ localize 'Mosh.SkillRank' }}
{{ localize 'Mosh.SkillBonus' }}
-
+ + {{#each system.base_adjustment.skills_granted_object as |skill id|}} -
  • -
    -
    {{skill.name}}
    -
    {{skill.system.rank}}
    -
    {{skill.system.bonus}}
    -
    - -
    -
  • + {{#if skill.name}} +
  • +
    +
    {{skill.name}}
    +
    {{skill.system.rank}}
    +
    {{skill.system.bonus}}
    +
    + +
    +
  • + {{else}} +
  • +
    +
    OR
    +
      + {{#each skill as |subskill subid|}} +
    1. +
      +
      {{subskill.name}}
      +
      {{subskill.system.rank}}
      +
      {{subskill.system.bonus}}
      +
      + +
      +
    2. + {{/each}} +
    +
    + {{#if skill.[1]}}{{else}} +
    + +
    + {{/if}} +
  • + {{/if}} {{/each}}
    @@ -463,7 +494,7 @@ {{#each system.common_skills_object as |skill id|}} -
  • +
  • {{skill.name}}
    {{skill.system.rank}}