From 7614001bddf691c0870673140009d6dffb8dc370 Mon Sep 17 00:00:00 2001 From: WBHarry Date: Tue, 13 Jan 2026 00:35:54 +0100 Subject: [PATCH] Reverted sorting --- .../applications/sheets/actors/character.mjs | 50 ++----------------- .../sheets/api/application-mixin.mjs | 13 +---- module/data/actor/character.mjs | 7 +-- templates/sheets/actors/character/sidebar.hbs | 48 +++++++++--------- 4 files changed, 31 insertions(+), 87 deletions(-) diff --git a/module/applications/sheets/actors/character.mjs b/module/applications/sheets/actors/character.mjs index 5a404de0..db97de64 100644 --- a/module/applications/sheets/actors/character.mjs +++ b/module/applications/sheets/actors/character.mjs @@ -267,7 +267,7 @@ export default class CharacterSheet extends DHBaseActorSheet { context.isDeath = this.document.system.deathMoveViable; context.sidebarFavoritesEmpty = this.document.system.sidebarFavorites.length === 0; context.showfavorites = !context.sidebarFavoritesEmpty || this.document.system.usedUnarmed; - context.sidebarFavorites = this.document.system.sidebarFavorites.sort((a, b) => a.sort - b.sort); + context.sidebarFavorites = this.document.system.sidebarFavorites.sort((a, b) => a.name.localeCompare(b.name)); } /** @@ -962,12 +962,7 @@ export default class CharacterSheet extends DHBaseActorSheet { if (inventoryItem) { event.dataTransfer.setDragImage(inventoryItem.querySelector('img'), 60, 0); } - - await super._onDragStart(event); - const baseDragData = foundry.applications.ux.TextEditor.getDragEventData(event); - - const sidebarReorder = Boolean(event.target.closest('.items-sidebar-list')); - event.dataTransfer.setData('text/plain', JSON.stringify({ ...baseDragData, sidebarReorder })); + super._onDragStart(event); } async _onDropItem(event, item) { @@ -1024,45 +1019,8 @@ export default class CharacterSheet extends DHBaseActorSheet { const allowedItemTypes = ['domainCard', 'feature', 'weapon', 'armor', 'loot', 'consumable']; if (!allowedItemTypes.includes(item.type)) return; - const siblings = this.document.system.sidebarFavorites.filter(x => x.item.id !== item.id); - let source = null; + if (this.document.system.sidebarFavorites.some(x => x.id === item.id)) return; - const data = foundry.applications.ux.TextEditor.getDragEventData(event); - if (data.sidebarReorder) { - source = this.document.system.sidebarFavorites.find(x => x.item.id === item.id); - } else { - if (this.document.system.sidebarFavorites.some(x => x.item.id === item.id)) return; - source = { sort: null, item }; - } - - const update = siblings.length - ? this.getDropSortedFavorites(event, source, siblings) - : [ - ...this.document.system.sidebarFavorites.map(x => ({ ...x, item: x.item.uuid })), - { item, sort: 100000 } - ]; - if (!update) return; - - this.document.update({ 'system.sidebarFavorites': update }); - } - - getDropSortedFavorites(event, source, siblings) { - const dropTarget = event.target.closest('[data-item-id]'); - if (!dropTarget) return; - - const target = this.document.system.sidebarFavorites.find(x => x.item.id === dropTarget.dataset.itemId); - const sortUpdates = foundry.utils.performIntegerSort(source, { target, siblings }); - const updates = sortUpdates.map(u => ({ - sort: u.update.sort, - item: u.target?.uuid ?? u.target.item.uuid - })); - - const test = this.document.system.sidebarFavorites.reduce((acc, curr) => { - if (acc.some(x => x.item === curr.item.uuid)) return acc; - acc.push({ ...curr, item: curr.item.uuid }); - - return acc; - }, updates); - return test; + this.document.update({ 'system.sidebarFavorites': [...this.document.system.sidebarFavorites, item] }); } } diff --git a/module/applications/sheets/api/application-mixin.mjs b/module/applications/sheets/api/application-mixin.mjs index d342bae1..2d83b54b 100644 --- a/module/applications/sheets/api/application-mixin.mjs +++ b/module/applications/sheets/api/application-mixin.mjs @@ -548,9 +548,7 @@ export default function DHApplicationMixin(Base) { callback: async (target, _event) => { const doc = await getDocFromElement(target); this.document.update({ - 'system.sidebarFavorites': this.document.system.sidebarFavorites - .filter(x => x.item.id !== doc.id) - .map(x => ({ ...x, item: x.item.uuid })) + 'system.sidebarFavorites': this.document.system.sidebarFavorites.filter(x => x.id !== doc.id) }); } }); @@ -568,15 +566,8 @@ export default function DHApplicationMixin(Base) { }, callback: async (target, _event) => { const doc = await getDocFromElement(target); - const nextSort = this.document.system.sidebarFavorites.length - ? this.document.system.sidebarFavorites.reduce((acc, curr) => Math.max(curr.sort, acc), 0) + - 100000 - : 0; this.document.update({ - 'system.sidebarFavorites': [ - ...this.document.system.sidebarFavorites.map(x => ({ ...x, item: x.item.uuid })), - { sort: nextSort, item: doc.uuid } - ] + 'system.sidebarFavorites': [...this.document.system.sidebarFavorites, doc] }); } }); diff --git a/module/data/actor/character.mjs b/module/data/actor/character.mjs index 19e053e2..4bb47ebc 100644 --- a/module/data/actor/character.mjs +++ b/module/data/actor/character.mjs @@ -286,12 +286,7 @@ export default class DhCharacter extends BaseDataActor { ignore: new fields.BooleanField() }) }), - sidebarFavorites: new fields.ArrayField( - new fields.SchemaField({ - sort: new fields.NumberField({ required: true, nullable: false, integer: true }), - item: new ForeignDocumentUUIDField({ type: 'Item' }) - }) - ) + sidebarFavorites: new ForeignDocumentUUIDArrayField({ type: 'Item' }) }; } diff --git a/templates/sheets/actors/character/sidebar.hbs b/templates/sheets/actors/character/sidebar.hbs index d0528469..758af1b9 100644 --- a/templates/sheets/actors/character/sidebar.hbs +++ b/templates/sheets/actors/character/sidebar.hbs @@ -109,10 +109,10 @@ type="attack" }} {{/if}} - {{#each sidebarFavorites as |data|}} + {{#each sidebarFavorites as |item|}} {{> 'daggerheart.inventory-item-compact' - item=data.item - type=data.item.type + item=item + type=item.type }} {{/each}} @@ -122,28 +122,28 @@ {{/if}} - -
-
- -

{{localize "DAGGERHEART.GENERAL.experience.single"}}

- -
-
- {{#each document.system.experiences as |experience id|}} -
- - +{{experience.value}} - - {{experience.name}} -
- - - -
+
+ +
+
+ +

{{localize "DAGGERHEART.GENERAL.experience.single"}}

+ +
+
+ {{#each document.system.experiences as |experience id|}} +
+ + +{{experience.value}} + + {{experience.name}} + - {{/each}} -
+
+ {{/each}}
\ No newline at end of file