fix on items properties
This commit is contained in:
@@ -21,15 +21,35 @@ 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)
|
// Prepare Properties (id/name => object)
|
||||||
sheetData.data.propertiesList = [];
|
this._prepareProperties(sheetData);
|
||||||
if (Array.isArray(sheetData.data.properties)) {
|
|
||||||
sheetData.data.propertiesList = sheetData.data.properties.map((e) => game.items.get(e.id));
|
|
||||||
}
|
|
||||||
|
|
||||||
return sheetData;
|
return sheetData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prepare properties list
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
_prepareProperties(sheetData) {
|
||||||
|
sheetData.data.propertiesList = [];
|
||||||
|
if (Array.isArray(sheetData.data.properties)) {
|
||||||
|
const props = [];
|
||||||
|
sheetData.data.properties.forEach((e) => {
|
||||||
|
const obj = game.items.get(e.id);
|
||||||
|
// remove item if not found (probably a deleted item)
|
||||||
|
if (!obj) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sheetData.data.propertiesList.push(obj);
|
||||||
|
|
||||||
|
// update name if referenced object was rename
|
||||||
|
props.push({ id: e.id, name: obj.name });
|
||||||
|
});
|
||||||
|
sheetData.data.properties = props;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Subscribe to events from the sheet.
|
* Subscribe to events from the sheet.
|
||||||
* @param html HTML content of the sheet.
|
* @param html HTML content of the sheet.
|
||||||
@@ -98,19 +118,19 @@ export class ItemSheetL5r5e extends ItemSheet {
|
|||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
_addProperty(item) {
|
_addProperty(item) {
|
||||||
let props = this.entity.data.data.properties || [];
|
if (!Array.isArray(this.entity.data.data.properties)) {
|
||||||
if (!Array.isArray(props)) {
|
this.entity.data.data.properties = [];
|
||||||
props = [];
|
|
||||||
}
|
}
|
||||||
if (props.findIndex((p) => p.id === item.id) !== -1) {
|
|
||||||
|
if (this.entity.data.data.properties.findIndex((p) => p.id === item.id) !== -1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
props.push({ id: item.id, name: item.name });
|
this.entity.data.data.properties.push({ id: item.id, name: item.name });
|
||||||
|
|
||||||
this.entity.update({
|
this.entity.update({
|
||||||
data: {
|
data: {
|
||||||
properties: props,
|
properties: this.entity.data.data.properties,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -120,13 +140,18 @@ export class ItemSheetL5r5e extends ItemSheet {
|
|||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
_deleteProperty(id) {
|
_deleteProperty(id) {
|
||||||
let props = this.entity.data.data.properties || [];
|
if (
|
||||||
if (!Array.isArray(props) || props.findIndex((p) => p.id === id) === -1) {
|
!Array.isArray(this.entity.data.data.properties) ||
|
||||||
|
this.entity.data.data.properties.findIndex((p) => p.id === id) === -1
|
||||||
|
) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.entity.data.data.properties = this.entity.data.data.properties.filter((p) => p.id !== id);
|
||||||
|
|
||||||
this.entity.update({
|
this.entity.update({
|
||||||
data: {
|
data: {
|
||||||
properties: props.filter((p) => p.id !== id),
|
properties: this.entity.data.data.properties,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user