0.4.1g 11-Feb-2021

Generalize the spell list reload and confirm spells still working

compendium-browser.js
- triggerSortSpells() -> triggerSort()
- replaceSpells() -> replaceList()
- renderSpellData() -> renderItemData()
- Remove list/subjects settings and replace with this.replaceList() throughout
v0.3.1-spetzel2020
opus1217 2021-02-11 18:05:08 -08:00
parent f1a050d2ad
commit 249f558a2a
1 changed files with 57 additions and 96 deletions

View File

@ -20,6 +20,7 @@
0.4.1c Needed to pass specific spellFilters, itemFilters etc. 0.4.1c Needed to pass specific spellFilters, itemFilters etc.
0.4.1d: Fixed img observer on replaced spellData 0.4.1d: Fixed img observer on replaced spellData
11-Feb-2021 0.4.1e: Don't save the filter data (which is most of the memory) and remove the preload limit; instead just save the minimal amount of data 11-Feb-2021 0.4.1e: Don't save the filter data (which is most of the memory) and remove the preload limit; instead just save the minimal amount of data
0.4.1g: Generalize the spell list reload and confirm spells still working
*/ */
const CMPBrowser = { const CMPBrowser = {
@ -46,6 +47,7 @@ class CompendiumBrowser extends Application {
await loadTemplates([ await loadTemplates([
"modules/compendium-browser/template/spell-browser.html", "modules/compendium-browser/template/spell-browser.html",
"modules/compendium-browser/template/spell-browser-list.html", "modules/compendium-browser/template/spell-browser-list.html",
//FIXME: Add -list partials for rendering the data separately
"modules/compendium-browser/template/npc-browser.html", "modules/compendium-browser/template/npc-browser.html",
"modules/compendium-browser/template/feat-browser.html", "modules/compendium-browser/template/feat-browser.html",
"modules/compendium-browser/template/item-browser.html", "modules/compendium-browser/template/item-browser.html",
@ -547,7 +549,7 @@ class CompendiumBrowser extends Application {
ol[0].append(element); ol[0].append(element);
} }
}); });
this.triggerSortSpells(html); this.triggerSort(html, "spell");
// sort feat list in place // sort feat list in place
html.find('.feat-browser select[name=sortorder]').on('change', ev => { html.find('.feat-browser select[name=sortorder]').on('change', ev => {
@ -560,7 +562,7 @@ class CompendiumBrowser extends Application {
ol[0].append(element); ol[0].append(element);
} }
}); });
html.find('.feat-browser select[name=sortorder]').trigger('change'); this.triggerSort(html, "feat");
// sort item list in place // sort item list in place
html.find('.item-browser select[name=sortorder]').on('change', ev => { html.find('.item-browser select[name=sortorder]').on('change', ev => {
@ -573,7 +575,7 @@ class CompendiumBrowser extends Application {
ol[0].append(element); ol[0].append(element);
} }
}); });
html.find('.item-browser select[name=sortorder]').trigger('change'); this.triggerSort(html, "item");
// sort npc list in place // sort npc list in place
html.find('.npc-browser select[name=sortorder]').on('change', ev => { html.find('.npc-browser select[name=sortorder]').on('change', ev => {
@ -586,7 +588,7 @@ class CompendiumBrowser extends Application {
ol[0].append(element); ol[0].append(element);
} }
}); });
html.find('.npc-browser select[name=sortorder]').trigger('change') this.triggerSort(html, "npc");
// reset filters and re-render // reset filters and re-render
html.find('#reset-spell-filter').click(ev => { html.find('#reset-spell-filter').click(ev => {
@ -616,6 +618,7 @@ class CompendiumBrowser extends Application {
if (setting === 'spell-compendium-setting') { if (setting === 'spell-compendium-setting') {
let key = ev.target.dataset.key; let key = ev.target.dataset.key;
this.settings.loadedSpellCompendium[key].load = value; this.settings.loadedSpellCompendium[key].load = value;
//FIXME
this.loadItems().then(items => { this.loadItems().then(items => {
this.items = items; this.items = items;
this.render(); this.render();
@ -668,23 +671,7 @@ class CompendiumBrowser extends Application {
} }
} }
let list = null; this.replaceList(html, itemType, observer);
let subjects = null;
if (itemType === 'spell') {
list = html.find('.spell-browser li');
subjects = this.items.spells;
this.replaceSpells(html, observer);
} else if (itemType === 'npc') {
list = html.find('.npc-browser li');
subjects = this.npcs;
} else if (itemType === 'feat') {
list = html.find('.feat-browser li');
subjects = this.items.feats;
} else if (itemType === 'item') {
list = html.find('.item-browser li');
subjects = this.items.items;
}
//this.filterElements(list, subjects, this[filterTarget].activeFilters);
}); });
// select filters // select filters
@ -711,25 +698,7 @@ class CompendiumBrowser extends Application {
value:value value:value
} }
} }
this.replaceList(html, itemType, observer);
let list = null;
let subjects = null;
if (itemType === 'spell') {
list = html.find('.spell-browser li');
subjects = this.items.spells;
this.replaceSpells(html, observer);
} else if (itemType === 'npc') {
list = html.find('.npc-browser li');
subjects = this.npcs;
} else if (itemType === 'feat') {
list = html.find('.feat-browser li');
subjects = this.items.feats;
} else if (itemType === 'item') {
list = html.find('.item-browser li');
subjects = this.items.items;
}
//this.render();
//this.filterElements(list, subjects, this[filterTarget].activeFilters);
}); });
// multiselect filters // multiselect filters
@ -763,24 +732,7 @@ class CompendiumBrowser extends Application {
} }
} }
let list = null; this.replaceList(html, itemType, observer);
let subjects = null;
if (itemType === 'spell') {
list = html.find('.spell-browser li');
subjects = this.items.spells;
this.replaceSpells(html, observer);
} else if (itemType === 'npc') {
list = html.find('.npc-browser li');
subjects = this.npcs;
} else if (itemType === 'feat') {
list = html.find('.feat-browser li');
subjects = this.items.feats;
} else if (itemType === 'item') {
list = html.find('.item-browser li');
subjects = this.items.items;
}
//this.render();
//this.filterElements(list, subjects, this[filterTarget].activeFilters);
}); });
@ -808,24 +760,7 @@ class CompendiumBrowser extends Application {
} }
} }
let list = null; this.replaceList(html, itemType, observer);
let subjects = null;
if (itemType === 'spell') {
list = html.find('.spell-browser li');
subjects = this.items.spells;
this.replaceSpells(html, observer);
} else if (itemType === 'npc') {
list = html.find('.npc-browser li');
subjects = this.npcs;
} else if (itemType === 'feat') {
list = html.find('.feat-browser li');
subjects = this.items.feats;
} else if (itemType === 'item') {
list = html.find('.item-browser li');
subjects = this.items.items;
}
this.render();
//this.filterElements(list, subjects, this[filterTarget].activeFilters);
}); });
@ -833,32 +768,58 @@ class CompendiumBrowser extends Application {
html.find("img").each((i, img) => observer.observe(img)); html.find("img").each((i, img) => observer.observe(img));
} }
replaceSpells(html, observer) { async replaceList(html, itemType, observer) {
const items = html.find("ul#CBSpells"); let items = null;
if (items.length) { if (itemType === 'spell') {
this.renderSpellData().then(newSpellsHTML => { items = html.find("ul#CBSpells");
items[0].innerHTML = newSpellsHTML; } else if (itemType === 'npc') {
items = html.find("ul#CBNPCs");
} else if (itemType === 'feat') {
items = html.find("ul#CBSpells");
} else if (itemType === 'item') {
items = html.find("ul#CBItems");
}
if (items?.length) {
const newItemsHTML = await this.renderItemData(itemType);
items[0].innerHTML = newItemsHTML;
//Re-sort before setting up lazy loading //Re-sort before setting up lazy loading
this.triggerSortSpells(html); this.triggerSort(html, itemType);
//Lazy load images //Lazy load images
$(items).find("img").each((i,img) => observer.observe(img)); $(items).find("img").each((i,img) => observer.observe(img));
//Reactivate listeners for clicking and dragging //Reactivate listeners for clicking and dragging
this.activateItemListListeners($(items)); this.activateItemListListeners($(items));
});
}
} }
async renderSpellData() { }
const items = await this.loadAndFilterItems("spell");
const spellData = items; async renderItemData(itemType) {
const html = await renderTemplate("modules/compendium-browser/template/spell-browser-list.html", {spells : spellData}); const items = await this.loadAndFilterItems(itemType);
let html;
if (itemType === "spell") {
html = await renderTemplate("modules/compendium-browser/template/spell-browser-list.html", {spells : items});
} else if (itemType === "feat") {
html = await renderTemplate("modules/compendium-browser/template/feat-browser-list.html", {feats : items});
} else if (itemType === "npc") {
html = await renderTemplate("modules/compendium-browser/template/npc-browser-list.html", {npcs : items});
} else {
html = await renderTemplate("modules/compendium-browser/template/item-browser-list.html", {items : items});
}
return html; return html;
} }
//SORTING //SORTING
triggerSortSpells(html) { triggerSort(html, itemType) {
if (itemType === 'spell') {
html.find('.spell-browser select[name=sortorder]').trigger('change'); html.find('.spell-browser select[name=sortorder]').trigger('change');
} else if (itemType === 'npc') {
html.find('.feat-browser select[name=sortorder]').trigger('change');
} else if (itemType === 'feat') {
html.find('.npc-browser select[name=sortorder]').trigger('change')
} else if (itemType === 'item') {
html.find('.item-browser select[name=sortorder]').trigger('change');
}
} }