62 lines
1.8 KiB
JavaScript
62 lines
1.8 KiB
JavaScript
import { RdDBaseActorSheet } from "./actor/base-actor-sheet.js";
|
|
import { RdDItemSheet } from "./item-sheet.js";
|
|
import { RdDSheetUtility } from "./rdd-sheet-utility.js";
|
|
import { RdDUtility } from "./rdd-utility.js";
|
|
|
|
export class RdDConteneurItemSheet extends RdDItemSheet {
|
|
|
|
static get ITEM_TYPE() { return "conteneur" };
|
|
|
|
async getData() {
|
|
const formData = await super.getData();
|
|
if (this.actor) {
|
|
this.prepareConteneurData(formData);
|
|
}
|
|
return formData;
|
|
}
|
|
|
|
activateListeners(html) {
|
|
super.activateListeners(html);
|
|
|
|
if (!this.options.editable) return;
|
|
|
|
this.html.find('.conteneur-name a').click(async event => {
|
|
RdDUtility.toggleAfficheContenu(RdDSheetUtility.getItemId(event));
|
|
this.render(true);
|
|
});
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
prepareConteneurData(formData) {
|
|
RdDBaseActorSheet.filterItemsPerTypeForSheet(formData, this.actor.itemTypes);
|
|
|
|
this.objetVersConteneur = RdDUtility.buildArbreDeConteneurs(formData.conteneurs, formData.objets);
|
|
formData.subItems = formData.conteneurs.find(it => it._id == this.item.id)?.subItems;
|
|
}
|
|
|
|
async _onDragStart(event) {
|
|
console.log("_onDragStart", event);
|
|
if (event.target.classList.contains("entity-link")) return;
|
|
|
|
const itemId = event.srcElement?.attributes["data-item-id"].value;
|
|
const item = this.actor.items.get(itemId);
|
|
// Create drag data
|
|
const dragData = {
|
|
actorId: this.actor.id,
|
|
type: "Item",
|
|
data: item.system
|
|
};
|
|
|
|
event.dataTransfer.setData("text/plain", JSON.stringify(dragData));
|
|
}
|
|
|
|
async _onDropItem(event, dragData) {
|
|
if (this.actor) {
|
|
const dropParams = await RdDSheetUtility.prepareItemDropParameters(this.item.id, this.actor, dragData, this.objetVersConteneur);
|
|
await this.actor.processDropItem(dropParams);
|
|
await this.render(true);
|
|
}
|
|
}
|
|
|
|
}
|