working on properties

This commit is contained in:
Vlyan
2020-12-20 17:33:39 +01:00
parent e1105b6293
commit 3bc707be54
3 changed files with 57 additions and 14 deletions

View File

@@ -21,6 +21,11 @@ export class ItemSheetL5r5e extends ItemSheet {
sheetData.data.ringsList = game.l5r5e.HelpersL5r5e.getRingsList(); sheetData.data.ringsList = game.l5r5e.HelpersL5r5e.getRingsList();
sheetData.data.techniquesList = game.l5r5e.HelpersL5r5e.getTechniquesList(); sheetData.data.techniquesList = game.l5r5e.HelpersL5r5e.getTechniquesList();
// Prepare Properties (id => object)
if (sheetData.data.properties) {
sheetData.data.propertiesList = sheetData.data.properties.map((e) => game.items.get(e));
}
return sheetData; return sheetData;
} }
@@ -40,6 +45,12 @@ export class ItemSheetL5r5e extends ItemSheet {
html.find(".select-on-focus").on("focus", (event) => { html.find(".select-on-focus").on("focus", (event) => {
event.target.select(); event.target.select();
}); });
// Delete a property
html.find(`.property-delete`).on("click", (event) => {
const li = $(event.currentTarget).parents(".property");
this._deleteProperty(li.data("propertyId"));
});
} }
/** /**
@@ -74,13 +85,48 @@ export class ItemSheetL5r5e extends ItemSheet {
// Check item type and subtype // Check item type and subtype
const item = game.l5r5e.HelpersL5r5e.getDragnDropTargetObject(event); const item = game.l5r5e.HelpersL5r5e.getDragnDropTargetObject(event);
if (!item || item.entity !== "Item" || item.data.type !== "property" || this.item.type === "property") { if (!item || item.entity !== "Item" || item.data.type !== "property" || this.item.type === "property") {
return Promise.resolve(); return;
} }
// TODO
console.log("Item - _onDrop - ", item, this);
// Ok add item // Ok add item
// return super._onDrop(event); this._addProperty(item.id);
}
/**
* Add a property to the current item
* @private
*/
_addProperty(id) {
let props = this.entity.data.data.properties || [];
if (!Array.isArray(props)) {
props = [];
}
if (props.includes(id)) {
return;
}
props.push(id);
this.entity.update({
data: {
properties: props,
},
});
}
/**
* Delete a property from the current item
* @private
*/
_deleteProperty(id) {
let props = this.entity.data.data.properties || [];
if (!Array.isArray(props) || !props.includes(id)) {
return;
}
this.entity.update({
data: {
properties: props.filter((e) => e !== id),
},
});
} }
} }

View File

@@ -1,9 +1,8 @@
<li class="item flexcol" data-item-id="{{item._id}}"> <li class="property flexcol" data-property-id="{{item._id}}">
<ul class="item-header item-control"> <ul class="property-header property-control">
<li class="item-img"><img src="{{item.img}}" title="{{item.name}}" width="32px" height="32px"/></li> <li class="property-img"><img src="{{item.img}}" title="{{item.name}}" width="32px" height="32px"/></li>
<li class="item-name">{{ item.name }}</li> <li class="property-name">{{ item.name }}</li>
<li class="item-edit" title="{{localize 'l5r5e.global.edit'}}"><i class="fas fa-edit"></i></li> <li class="property-delete" title="{{localize 'l5r5e.global.delete'}}"><i class="fas fa-trash"></i></li>
<li class="item-delete" title="{{localize 'l5r5e.global.delete'}}"><i class="fas fa-trash"></i></li>
</ul> </ul>
<div class="item-description">{{{ item.data.description }}}</div> <div class="item-description">{{{ item.data.description }}}</div>
</li> </li>

View File

@@ -79,10 +79,8 @@
</label> </label>
</fieldset> </fieldset>
<fieldset> <fieldset>
{{json data.properties}}
<legend class="text-block-header">{{ localize 'l5r5e.properties' }}</legend> <legend class="text-block-header">{{ localize 'l5r5e.properties' }}</legend>
<!-- TODO data.properties a faire en dnd avec les items de type "property" --> {{> 'systems/l5r5e/templates/items/property/properties.html' properties=data.propertiesList }}
{{> 'systems/l5r5e/templates/items/property/properties.html' properties=data.properties }}
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend class="text-block-header">{{ localize 'l5r5e.description' }}</legend> <legend class="text-block-header">{{ localize 'l5r5e.description' }}</legend>