removed code duplication of item body from talent

- added  isPhysical boolean to getData output of item-sheet.ts
- added isPhysical checks for displays of physical-only information
  in templates
This commit is contained in:
Gesina Schwalbe 2021-01-06 16:10:56 +01:00
parent 5bdfdd410b
commit e6b51c66a6
5 changed files with 32 additions and 51 deletions

View file

@ -39,6 +39,10 @@ interface DS4ItemPhysical {
storageLocation: string; storageLocation: string;
} }
export function isDS4ItemDataTypePhysical(input: DS4ItemDataType): boolean {
return "quantity" in input && "price" in input && "availability" in input && "storageLocation" in input;
}
interface DS4ItemEquipable { interface DS4ItemEquipable {
equipped: boolean; equipped: boolean;
} }

View file

@ -1,5 +1,5 @@
import { DS4Item } from "./item"; import { DS4Item } from "./item";
import { DS4ItemDataType } from "./item-data"; import { DS4ItemDataType, isDS4ItemDataTypePhysical } from "./item-data";
/** /**
* Extend the basic ItemSheet with some very simple modifications * Extend the basic ItemSheet with some very simple modifications
@ -26,7 +26,13 @@ export class DS4ItemSheet extends ItemSheet<DS4ItemDataType, DS4Item> {
/** @override */ /** @override */
getData(): ItemSheetData<DS4ItemDataType, DS4Item> { getData(): ItemSheetData<DS4ItemDataType, DS4Item> {
const data = { ...super.getData(), config: CONFIG.DS4, isOwned: this.item.isOwned, actor: this.item.actor }; const data = {
...super.getData(),
config: CONFIG.DS4,
isOwned: this.item.isOwned,
actor: this.item.actor,
isPhysical: isDS4ItemDataTypePhysical(this.item.data.data),
};
console.log(data); console.log(data);
return data; return data;
} }

View file

@ -4,7 +4,9 @@
<nav class="sheet-tabs tabs" data-group="primary"> <nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="description">{{localize "DS4.HeadingDescription"}}</a> <a class="item" data-tab="description">{{localize "DS4.HeadingDescription"}}</a>
<a class="item" data-tab="effects">{{localize "DS4.HeadingEffects"}}</a> <a class="item" data-tab="effects">{{localize "DS4.HeadingEffects"}}</a>
{{#if isPhysical}}
<a class="item" data-tab="details">{{localize "DS4.HeadingDetails"}}</a> <a class="item" data-tab="details">{{localize "DS4.HeadingDetails"}}</a>
{{/if}}
</nav> </nav>
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
@ -13,10 +15,12 @@
{{!-- Description Tab --}} {{!-- Description Tab --}}
{{> systems/ds4/templates/item/partials/description.hbs}} {{> systems/ds4/templates/item/partials/description.hbs}}
{{!-- Details Tab --}}
{{> systems/ds4/templates/item/partials/details.hbs}}
{{!-- Effects Tab --}} {{!-- Effects Tab --}}
{{> systems/ds4/templates/item/partials/effects.hbs}} {{> systems/ds4/templates/item/partials/effects.hbs}}
{{#if isPhysical}}
{{!-- Details Tab --}}
{{> systems/ds4/templates/item/partials/details.hbs}}
{{/if}}
</section> </section>

View file

@ -11,14 +11,16 @@
<a class="entity-link" draggable="true" data-entity="Actor" data-id="{{actor._id}}"><i <a class="entity-link" draggable="true" data-entity="Actor" data-id="{{actor._id}}"><i
class="fas fa-user"></i>{{actor.name}}</a> class="fas fa-user"></i>{{actor.name}}</a>
</div> </div>
<div class="side-property"> {{#if isPhysical}}
<label for="data.quantity">{{localize 'DS4.Quantity'}}</label> <div class="side-property">
<input type="number" min="0" step="1" data-dtype="Number" name="data.quantity" value="{{data.quantity}}" /> <label for="data.quantity">{{localize 'DS4.Quantity'}}</label>
</div> <input type="number" min="0" step="1" data-dtype="Number" name="data.quantity" value="{{data.quantity}}" />
<div class="side-property"> </div>
<label for="data.storageLocation">{{localize 'DS4.StorageLocation'}}</label> <div class="side-property">
<input type="text" data-dtype="String" name="data.storageLocation" value="{{data.storageLocation}}" /> <label for="data.storageLocation">{{localize 'DS4.StorageLocation'}}</label>
</div> <input type="text" data-dtype="String" name="data.storageLocation" value="{{data.storageLocation}}" />
</div>
{{/if}}
{{else}} {{else}}
<span>{{localize "DS4.NotOwned"}}</span> <span>{{localize "DS4.NotOwned"}}</span>
{{/if}} {{/if}}

View file

@ -30,43 +30,8 @@
</div> </div>
</div> </div>
</header> </header>
{{!-- Sheet Tab Navigation --}} {{!-- Common Item body --}}
<nav class="sheet-tabs tabs" data-group="primary"> {{> systems/ds4/templates/item/partials/body.hbs}}
<a class="item" data-tab="description">{{localize "DS4.HeadingDescription"}}</a>
<a class="item" data-tab="effects">{{localize "DS4.HeadingEffects"}}</a>
</nav>
{{!-- Sheet Body --}}
<section class="sheet-body">
{{!-- The item tab for details. --}}
<div class="tab flexrow" data-group="primary" data-tab="description">
{{!-- As you add new fields, add them in here! --}}
<div class="side-properties">
{{!-- TODO: remove duplication of isOwned section here and in description.hbs--}}
{{#if isOwned}}
{{#if (ne data.equipped undefined)}}<div class="side-property">
<label for="data.equipped">{{localize 'DS4.ItemEquipped'}}</label>
<input type="checkbox" name="data.equipped" data-dtype="Boolean" {{checked data.equipped}} title="{{localize 'DS4.ItemEquipped'}}">
</div>
{{/if}}
<div class="side-property">
<label for="data.actor">{{localize 'DS4.ItemOwner'}}</label>
<a class="entity-link" draggable="true" data-entity="Actor" data-id="{{actor._id}}"><i
class="fas fa-user"></i>{{actor.name}}</a>
</div>
{{else}}
<span>{{localize "DS4.NotOwned"}}</span>
{{/if}}
</div>
<div class="description" title="{{localize 'DS4.HeadingDescription'}}">
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
</div>
</div>
{{!-- Effects Tab --}}
{{> systems/ds4/templates/item/partials/effects.hbs }}
</section>
</form> </form>