"use strict"; class FeatsSublistManager extends SublistManager { static get _ROW_TEMPLATE () { return [ new SublistCellTemplate({ name: "Name", css: "bold ve-col-4 pl-0", colStyle: "", }), new SublistCellTemplate({ name: "Ability", css: "ve-col-4", colStyle: "", }), new SublistCellTemplate({ name: "Prerequisite", css: "ve-col-4 pr-0", colStyle: "", }), ]; } pGetSublistItem (it, hash) { const cellsText = [it.name, it._slAbility, it._slPrereq]; const $ele = $(`
${this.constructor._getRowCellsHtml({values: cellsText})}
`) .contextmenu(evt => this._handleSublistItemContextMenu(evt, listItem)) .click(evt => this._listSub.doSelect(listItem, evt)); const listItem = new ListItem( hash, $ele, it.name, { hash, ability: it._slAbility, prerequisite: it._slPrereq, }, { entity: it, mdRow: [...cellsText], }, ); return listItem; } } class FeatsPage extends ListPage { constructor () { const pageFilter = new PageFilterFeats(); super({ dataSource: DataUtil.feat.loadJSON.bind(DataUtil.feat), dataSourceFluff: DataUtil.featFluff.loadJSON.bind(DataUtil.featFluff), pFnGetFluff: Renderer.feat.pGetFluff.bind(Renderer.feat), pageFilter, dataProps: ["feat"], bookViewOptions: { namePlural: "feats", pageTitle: "Feats Book View", }, isPreviewable: true, isMarkdownPopout: true, }); } getListItem (feat, ftI, isExcluded) { this._pageFilter.mutateAndAddToFilters(feat, isExcluded); const eleLi = document.createElement("div"); eleLi.className = `lst__row ve-flex-col ${isExcluded ? "lst__row--blocklisted" : ""}`; const source = Parser.sourceJsonToAbv(feat.source); const hash = UrlUtil.autoEncodeHash(feat); eleLi.innerHTML = ` [+] ${feat.name} ${feat._slAbility} ${feat._slPrereq} ${source}
`; const listItem = new ListItem( ftI, eleLi, feat.name, { hash, source, ability: feat._slAbility, prerequisite: feat._slPrereq, }, { isExcluded, }, ); eleLi.addEventListener("click", (evt) => this._list.doSelect(listItem, evt)); eleLi.addEventListener("contextmenu", (evt) => this._openContextMenu(evt, this._list, listItem)); return listItem; } _renderStats_doBuildStatsTab ({ent}) { this._$pgContent.empty().append(RenderFeats.$getRenderedFeat(ent)); } } const featsPage = new FeatsPage(); featsPage.sublistManager = new FeatsSublistManager(); window.addEventListener("load", () => featsPage.pOnLoad());