mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-06-05 20:34:15 +02:00
Changed so that the ItemBrowser can take in preset.items
This commit is contained in:
parent
533421abba
commit
46af7ad228
2 changed files with 63 additions and 66 deletions
|
|
@ -440,9 +440,7 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl
|
||||||
};
|
};
|
||||||
|
|
||||||
if (type === 'subclasses')
|
if (type === 'subclasses')
|
||||||
presets.filter = {
|
presets.items = await (await foundry.utils.fromUuid(this.setup.class.uuid)).system.fetchSubclasses();
|
||||||
'system.linkedClass': { key: 'system.linkedClass', value: this.setup.class?.uuid }
|
|
||||||
};
|
|
||||||
|
|
||||||
if (equipment.includes(type))
|
if (equipment.includes(type))
|
||||||
presets.filter = {
|
presets.filter = {
|
||||||
|
|
|
||||||
|
|
@ -240,85 +240,84 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) {
|
||||||
super._replaceHTML(result, content, options);
|
super._replaceHTML(result, content, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
loadItems() {
|
async loadItems() {
|
||||||
let loadTimeout = this.toggleLoader(true);
|
let loadTimeout = this.toggleLoader(true);
|
||||||
|
|
||||||
const browserSettings = game.settings.get(
|
const browserSettings = game.settings.get(
|
||||||
CONFIG.DH.id,
|
CONFIG.DH.id,
|
||||||
CONFIG.DH.SETTINGS.gameSettings.CompendiumBrowserSettings
|
CONFIG.DH.SETTINGS.gameSettings.CompendiumBrowserSettings
|
||||||
);
|
);
|
||||||
const promises = [];
|
|
||||||
|
|
||||||
game.packs.forEach(pack => {
|
let allItems = [];
|
||||||
promises.push(
|
for (const pack of game.packs) {
|
||||||
new Promise(async resolve => {
|
allItems.push(...(await pack.getDocuments({ type__in: this.selectedMenu?.data?.type })));
|
||||||
const items = await pack.getDocuments({ type__in: this.selectedMenu?.data?.type });
|
}
|
||||||
resolve(items);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
Promise.all(promises).then(async result => {
|
const items = this.presets.items ?? allItems;
|
||||||
this.items = ItemBrowser.sortBy(
|
|
||||||
result.flatMap(r => r).filter(r => !browserSettings.isEntryExcluded.bind(browserSettings)(r)),
|
|
||||||
'name'
|
|
||||||
);
|
|
||||||
|
|
||||||
/* If any noticeable slowdown occurs, consider replacing with enriching description on clicking to expand descriptions */
|
this.items = ItemBrowser.sortBy(
|
||||||
for (const item of this.items) {
|
items.filter(r => !browserSettings.isEntryExcluded.bind(browserSettings)(r)),
|
||||||
if (['weapon', 'armor'].includes(item.type)) {
|
'name'
|
||||||
item.system.enrichedTags = await foundry.applications.handlebars.renderTemplate(
|
);
|
||||||
'systems/daggerheart/templates/ui/itemBrowser/item-tags.hbs',
|
allItems = ItemBrowser.sortBy(
|
||||||
{ item: item.system }
|
allItems.filter(r => !browserSettings.isEntryExcluded.bind(browserSettings)(r)),
|
||||||
);
|
'name'
|
||||||
}
|
);
|
||||||
item.system.enrichedDescription =
|
|
||||||
(await item.system.getEnrichedDescription?.()) ??
|
/* If any noticeable slowdown occurs, consider replacing with enriching description on clicking to expand descriptions */
|
||||||
(await foundry.applications.ux.TextEditor.implementation.enrichHTML(item.description));
|
for (const item of this.items) {
|
||||||
|
if (['weapon', 'armor'].includes(item.type)) {
|
||||||
|
item.system.enrichedTags = await foundry.applications.handlebars.renderTemplate(
|
||||||
|
'systems/daggerheart/templates/ui/itemBrowser/item-tags.hbs',
|
||||||
|
{ item: item.system }
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
item.system.enrichedDescription =
|
||||||
|
(await item.system.getEnrichedDescription?.()) ??
|
||||||
|
(await foundry.applications.ux.TextEditor.implementation.enrichHTML(item.description));
|
||||||
|
}
|
||||||
|
|
||||||
this.fieldFilter = await this._createFieldFilter();
|
this.fieldFilter = await this._createFieldFilter(allItems);
|
||||||
|
|
||||||
if (this.presets?.filter) {
|
if (this.presets?.filter) {
|
||||||
Object.entries(this.presets.filter).forEach(([k, v]) => {
|
Object.entries(this.presets.filter).forEach(([k, v]) => {
|
||||||
const filter = this.fieldFilter.find(c => c.name === k);
|
const filter = this.fieldFilter.find(c => c.name === k);
|
||||||
if (filter) filter.value = v.value;
|
if (filter) filter.value = v.value;
|
||||||
});
|
});
|
||||||
// await this._onInputFilterBrowser();
|
// await this._onInputFilterBrowser();
|
||||||
|
}
|
||||||
|
|
||||||
|
const filterList = await foundry.applications.handlebars.renderTemplate(
|
||||||
|
'systems/daggerheart/templates/ui/itemBrowser/filterContainer.hbs',
|
||||||
|
{
|
||||||
|
fieldFilter: this.fieldFilter,
|
||||||
|
presets: this.presets,
|
||||||
|
formatChoices: this.formatChoices
|
||||||
}
|
}
|
||||||
|
);
|
||||||
|
|
||||||
const filterList = await foundry.applications.handlebars.renderTemplate(
|
this.element.querySelector('.filter-content .wrapper').innerHTML = filterList;
|
||||||
'systems/daggerheart/templates/ui/itemBrowser/filterContainer.hbs',
|
const filterContainer = this.element.querySelector('.filter-header > [data-action="expandContent"]');
|
||||||
{
|
if (this.fieldFilter.length === 0) filterContainer.setAttribute('disabled', '');
|
||||||
fieldFilter: this.fieldFilter,
|
else filterContainer.removeAttribute('disabled');
|
||||||
presets: this.presets,
|
|
||||||
formatChoices: this.formatChoices
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
this.element.querySelector('.filter-content .wrapper').innerHTML = filterList;
|
const itemList = await foundry.applications.handlebars.renderTemplate(
|
||||||
const filterContainer = this.element.querySelector('.filter-header > [data-action="expandContent"]');
|
'systems/daggerheart/templates/ui/itemBrowser/itemContainer.hbs',
|
||||||
if (this.fieldFilter.length === 0) filterContainer.setAttribute('disabled', '');
|
{
|
||||||
else filterContainer.removeAttribute('disabled');
|
items: this.items,
|
||||||
|
menu: this.selectedMenu,
|
||||||
|
formatLabel: this.formatLabel
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
const itemList = await foundry.applications.handlebars.renderTemplate(
|
this.element.querySelector('.item-list').innerHTML = itemList;
|
||||||
'systems/daggerheart/templates/ui/itemBrowser/itemContainer.hbs',
|
|
||||||
{
|
|
||||||
items: this.items,
|
|
||||||
menu: this.selectedMenu,
|
|
||||||
formatLabel: this.formatLabel
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
this.element.querySelector('.item-list').innerHTML = itemList;
|
this._createFilterInputs();
|
||||||
|
await this._onInputFilterBrowser();
|
||||||
|
this._createDragProcess();
|
||||||
|
|
||||||
this._createFilterInputs();
|
clearTimeout(loadTimeout);
|
||||||
await this._onInputFilterBrowser();
|
this.toggleLoader(false);
|
||||||
this._createDragProcess();
|
|
||||||
|
|
||||||
clearTimeout(loadTimeout);
|
|
||||||
this.toggleLoader(false);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleLoader(state) {
|
toggleLoader(state) {
|
||||||
|
|
@ -355,12 +354,12 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
async _createFieldFilter() {
|
async _createFieldFilter(items) {
|
||||||
const filters = ItemBrowser.getFolderConfig(this.selectedMenu.data, 'filters');
|
const filters = ItemBrowser.getFolderConfig(this.selectedMenu.data, 'filters');
|
||||||
for (const f of filters) {
|
for (const f of filters) {
|
||||||
if (typeof f.field === 'string') f.field = foundry.utils.getProperty(game, f.field);
|
if (typeof f.field === 'string') f.field = foundry.utils.getProperty(game, f.field);
|
||||||
else if (typeof f.choices === 'function') {
|
else if (typeof f.choices === 'function') {
|
||||||
f.choices = await f.choices(this.items);
|
f.choices = await f.choices(items);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clear field label so template uses our custom label parameter
|
// Clear field label so template uses our custom label parameter
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue