fixes groupsheet dragging and dropping
parent
6f1bad0b67
commit
f74bb38f3a
|
|
@ -901,13 +901,13 @@ export class CharacterSheet extends foundry.appv1.sheets.ActorSheet {
|
|||
evt.stopPropagation();
|
||||
}
|
||||
})
|
||||
|
||||
/*
|
||||
html.on('dragstart', '.equipment', (evt) => {
|
||||
evt.originalEvent.dataTransfer.setData("application/json", JSON.stringify({
|
||||
documentId: evt.currentTarget.dataset.id
|
||||
}));
|
||||
})
|
||||
|
||||
})*/
|
||||
/*
|
||||
html.on('drop', '.equipped', async (evt) => {
|
||||
const {actor, target, setId} = evt.currentTarget.dataset;
|
||||
try {
|
||||
|
|
@ -927,7 +927,7 @@ export class CharacterSheet extends foundry.appv1.sheets.ActorSheet {
|
|||
evt.stopPropagation();
|
||||
} catch (e) {
|
||||
}
|
||||
})
|
||||
})*/
|
||||
|
||||
new foundry.applications.ux.ContextMenu(html[0], '.talent.rollable', [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -219,11 +219,11 @@ export class GroupSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
|
|||
}
|
||||
}
|
||||
|
||||
context.equipments = [];
|
||||
context.inventoryItems = [];
|
||||
const actorData = context.document;
|
||||
Object.values(actorData.items).forEach((item, index) => {
|
||||
actorData.items.forEach((item, index) => {
|
||||
if (item.type === "Equipment") {
|
||||
context.equipments.push({
|
||||
context.inventoryItems.push({
|
||||
index: index,
|
||||
id: item._id,
|
||||
quantity: item.system.quantity,
|
||||
|
|
@ -255,6 +255,7 @@ export class GroupSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
|
|||
|
||||
// Drag-drop
|
||||
new foundry.applications.ux.DragDrop.implementation({
|
||||
dragSelector: ".inventory-table .equipment",
|
||||
dropSelector: ".inventory-table",
|
||||
permissions: {
|
||||
dragstart: this._canDragStart.bind(this),
|
||||
|
|
@ -280,13 +281,53 @@ export class GroupSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* An event that occurs when a drag workflow begins for a draggable item on the sheet.
|
||||
* @param {DragEvent} event The initiating drag start event
|
||||
* @returns {Promise<void>}
|
||||
* @protected
|
||||
*/
|
||||
async _onDragStart(event) {
|
||||
const target = event.currentTarget;
|
||||
if ("link" in event.target.dataset) return;
|
||||
let dragData;
|
||||
|
||||
// Owned Items
|
||||
if (target.dataset.itemId) {
|
||||
const item = this.actor.items.get(target.dataset.itemId);
|
||||
dragData = item.toDragData();
|
||||
}
|
||||
|
||||
// Active Effect
|
||||
if (target.dataset.effectId) {
|
||||
const effect = this.actor.effects.get(target.dataset.effectId);
|
||||
dragData = effect.toDragData();
|
||||
}
|
||||
|
||||
// Set data transfer
|
||||
if (!dragData) return;
|
||||
event.dataTransfer.setData("text/plain", JSON.stringify(dragData));
|
||||
}
|
||||
|
||||
// TODO needs to be fixed once Character Sheet is migrated to ActorSheetV2
|
||||
_onDrop(event) {
|
||||
const data = event.dataTransfer.getData("application/json")
|
||||
if (!data) return false
|
||||
console.log(data)
|
||||
async _onDrop(event) {
|
||||
const data = TextEditor.implementation.getDragEventData(event);
|
||||
const actor = this.actor;
|
||||
const allowed = Hooks.call("dropActorSheetData", actor, this, data);
|
||||
if (allowed === false) return;
|
||||
|
||||
// Dropped Documents
|
||||
const documentClass = foundry.utils.getDocumentClass(data.type);
|
||||
if (documentClass) {
|
||||
const document = await documentClass.fromDropData(data);
|
||||
await this._onDropDocument(event, document);
|
||||
|
||||
// No duplication by moving items from one actor to another
|
||||
if (document.parent) {
|
||||
document.parent.items.get(document._id).delete()
|
||||
}
|
||||
await this._onDropDocument(event, document);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
<tbody>
|
||||
|
||||
{{#each inventoryItems}}
|
||||
<tr class="equipment" data-id="{{this.id}}" draggable="true">
|
||||
<tr class="equipment" data-item-id="{{this.id}}" draggable="true">
|
||||
<td class="icon"><img alt="" src="{{this.icon}}" width="16" height="16"></td>
|
||||
<td class="name">{{this.name}}</td>
|
||||
<td class="quantity">{{this.quantity}}</td>
|
||||
|
|
|
|||
Loading…
Reference in New Issue