0.4.2b 15-Feb-2021
- Add Loading... message for NPCs - Don't reload if tab already has data, unless you reset filters compendium-browser.js - replaceList(): Add options.force to force reload even if there's data (e.g. if you reset filters)v0.3.1-spetzel2020
parent
3ff0a0fac5
commit
cdadb915ea
|
@ -28,6 +28,7 @@
|
||||||
0.4.1k: Don't call loadItems() during initalize; getData() just displays static elements
|
0.4.1k: Don't call loadItems() during initalize; getData() just displays static elements
|
||||||
0.4.1l: Display progress indicator for loading - for now just a static one
|
0.4.1l: Display progress indicator for loading - for now just a static one
|
||||||
15-Feb-2021 0.4.2: Fix NPCs to use loadAndFilterNpcs
|
15-Feb-2021 0.4.2: Fix NPCs to use loadAndFilterNpcs
|
||||||
|
0.4.2b: Add Loading... message for NPCs
|
||||||
Want loading message with dynamic results and to not replace existing data; need to localize as well
|
Want loading message with dynamic results and to not replace existing data; need to localize as well
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -146,6 +147,7 @@ class CompendiumBrowser extends Application {
|
||||||
//0.4.1k: Don't do any item/npc loading until tab is visible
|
//0.4.1k: Don't do any item/npc loading until tab is visible
|
||||||
let data = {
|
let data = {
|
||||||
items : {"Loading" : loadingItem},
|
items : {"Loading" : loadingItem},
|
||||||
|
npcs: {"Loading" : loadingItem},
|
||||||
spellFilters : this.spellFilters,
|
spellFilters : this.spellFilters,
|
||||||
showSpellBrowser : (game.user.isGM || this.settings.allowSpellBrowser),
|
showSpellBrowser : (game.user.isGM || this.settings.allowSpellBrowser),
|
||||||
featFilters : this.featFilters,
|
featFilters : this.featFilters,
|
||||||
|
@ -278,22 +280,22 @@ class CompendiumBrowser extends Application {
|
||||||
// reset filters and re-render
|
// reset filters and re-render
|
||||||
html.find('#reset-spell-filter').click(ev => {
|
html.find('#reset-spell-filter').click(ev => {
|
||||||
this.spellFilters.activeFilters = {};
|
this.spellFilters.activeFilters = {};
|
||||||
this.replaceList(html, "spell");
|
this.replaceList(html, "spell", {force : true});
|
||||||
});
|
});
|
||||||
|
|
||||||
html.find('#reset-feat-filter').click(ev => {
|
html.find('#reset-feat-filter').click(ev => {
|
||||||
this.featFilters.activeFilters = {};
|
this.featFilters.activeFilters = {};
|
||||||
this.replaceList(html, "feat");
|
this.replaceList(html, "feat", {force : true});
|
||||||
});
|
});
|
||||||
|
|
||||||
html.find('#reset-item-filter').click(ev => {
|
html.find('#reset-item-filter').click(ev => {
|
||||||
this.itemFilters.activeFilters = {};
|
this.itemFilters.activeFilters = {};
|
||||||
this.replaceList(html, "item");
|
this.replaceList(html, "item", {force : true});
|
||||||
});
|
});
|
||||||
|
|
||||||
html.find('#reset-npc-filter').click(ev => {
|
html.find('#reset-npc-filter').click(ev => {
|
||||||
this.npcFilters.activeFilters = {};
|
this.npcFilters.activeFilters = {};
|
||||||
this.replaceList(html, "npc");
|
this.replaceList(html, "npc", {force : true});
|
||||||
});
|
});
|
||||||
|
|
||||||
// settings
|
// settings
|
||||||
|
@ -744,14 +746,14 @@ class CompendiumBrowser extends Application {
|
||||||
this.initSettings();
|
this.initSettings();
|
||||||
}
|
}
|
||||||
if (game.user.isGM || this.settings.allowSpellBrowser || this.settings.allowNpcBrowser) {
|
if (game.user.isGM || this.settings.allowSpellBrowser || this.settings.allowNpcBrowser) {
|
||||||
const importButton = $(`<button class="compendium-browser-btn"><i class="fas fa-fire"></i> ${game.i18n.localize("CMPBrowser.compendiumBrowser")}</button>`);
|
const cbButton = $(`<button class="compendium-browser-btn"><i class="fas fa-fire"></i> ${game.i18n.localize("CMPBrowser.compendiumBrowser")}</button>`);
|
||||||
html.find('.compendium-browser-btn').remove();
|
html.find('.compendium-browser-btn').remove();
|
||||||
|
|
||||||
// adding to directory-list since the footer doesn't exist if the user is not gm
|
// adding to directory-list since the footer doesn't exist if the user is not gm
|
||||||
html.find('.directory-footer').append(importButton);
|
html.find('.directory-footer').append(cbButton);
|
||||||
|
|
||||||
// Handle button clicks
|
// Handle button clicks
|
||||||
importButton.click(ev => {
|
cbButton.click(ev => {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
//0.4.1: Reset filters when you first click button
|
//0.4.1: Reset filters when you first click button
|
||||||
this.resetFilters();
|
this.resetFilters();
|
||||||
|
@ -769,31 +771,34 @@ class CompendiumBrowser extends Application {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async replaceList(html, browserTab) {
|
async replaceList(html, browserTab, options = {force : false}) {
|
||||||
let items = null;
|
let elements = null;
|
||||||
if (browserTab === 'spell') {
|
if (browserTab === 'spell') {
|
||||||
items = html.find("ul#CBSpells");
|
elements = html.find("ul#CBSpells");
|
||||||
} else if (browserTab === 'npc') {
|
} else if (browserTab === 'npc') {
|
||||||
items = html.find("ul#CBNPCs");
|
elements = html.find("ul#CBNPCs");
|
||||||
} else if (browserTab === 'feat') {
|
} else if (browserTab === 'feat') {
|
||||||
items = html.find("ul#CBFeats");
|
elements = html.find("ul#CBFeats");
|
||||||
} else if (browserTab === 'item') {
|
} else if (browserTab === 'item') {
|
||||||
items = html.find("ul#CBItems");
|
elements = html.find("ul#CBItems");
|
||||||
}
|
}
|
||||||
if (items?.length) {
|
if (elements?.length) {
|
||||||
|
//0.4.2b: Only reload if you don't already have data here (we ignore the Loading... message)
|
||||||
|
if ((elements[0].children.length <= 1) || options?.force) {
|
||||||
//Uses loadAndFilterItems to read compendia for items which pass the current filters and render on this tab
|
//Uses loadAndFilterItems to read compendia for items which pass the current filters and render on this tab
|
||||||
const newItemsHTML = await this.renderItemData(browserTab);
|
const newItemsHTML = await this.renderItemData(browserTab);
|
||||||
items[0].innerHTML = newItemsHTML;
|
elements[0].innerHTML = newItemsHTML;
|
||||||
//Re-sort before setting up lazy loading
|
//Re-sort before setting up lazy loading
|
||||||
this.triggerSort(html, browserTab);
|
this.triggerSort(html, browserTab);
|
||||||
|
|
||||||
//Lazy load images
|
//Lazy load images
|
||||||
if (this.observer) {
|
if (this.observer) {
|
||||||
$(items).find("img").each((i,img) => this.observer.observe(img));
|
$(elements).find("img").each((i,img) => this.observer.observe(img));
|
||||||
}
|
}
|
||||||
|
|
||||||
//Reactivate listeners for clicking and dragging
|
//Reactivate listeners for clicking and dragging
|
||||||
this.activateItemListListeners($(items));
|
this.activateItemListListeners($(elements));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue