"use strict"; class PsionicsSublistManager extends SublistManager { static get _ROW_TEMPLATE () { return [ new SublistCellTemplate({ name: "Name", css: "bold ve-col-6 pl-0", colStyle: "", }), new SublistCellTemplate({ name: "Type", css: "ve-col-3 ve-text-center", colStyle: "text-center", }), new SublistCellTemplate({ name: "Order", css: "ve-col-3 ve-text-center pr-0", colStyle: "text-center", }), ]; } pGetSublistItem (it, hash) { const typeMeta = Parser.psiTypeToMeta(it.type); const cellsText = [it.name, typeMeta.short, it._fOrder]; const $ele = $(`
`) .contextmenu(evt => this._handleSublistItemContextMenu(evt, listItem)) .click(evt => this._listSub.doSelect(listItem, evt)); const listItem = new ListItem( hash, $ele, it.name, { hash, type: typeMeta.full, order: it._fOrder, }, { entity: it, mdRow: [...cellsText], }, ); return listItem; } } class PsionicsPage extends ListPage { constructor () { const pageFilter = new PageFilterPsionics(); super({ dataSource: "data/psionics.json", pageFilter, dataProps: ["psionic"], bookViewOptions: { namePlural: "psionics", pageTitle: "Psionics Book View", fnPartition: ent => ent.type === "T" ? 0 : 1, }, tableViewOptions: { title: "Psionics", colTransforms: { name: UtilsTableview.COL_TRANSFORM_NAME, source: UtilsTableview.COL_TRANSFORM_SOURCE, page: UtilsTableview.COL_TRANSFORM_PAGE, _text: {name: "Text", transform: (it) => Renderer.psionic.getBodyText(it), flex: 3}, }, }, listSyntax: new ListSyntaxPsionics({fnGetDataList: () => this._dataList}), }); } static _getHiddenModeList (psionic) { return (psionic.modes || []) .map(mode => { return [ `"${mode.name}"`, ...(mode.submodes || []) .map(subMode => `"${subMode.name}"`), ]; }) .flat() .join(","); } getListItem (p, psI, isExcluded) { this._pageFilter.mutateAndAddToFilters(p, isExcluded); const eleLi = document.createElement("div"); eleLi.className = `lst__row ve-flex-col ${isExcluded ? "lst__row--blocklisted" : ""}`; const source = Parser.sourceJsonToAbv(p.source); const hash = UrlUtil.autoEncodeHash(p); const typeMeta = Parser.psiTypeToMeta(p.type); eleLi.innerHTML = ` ${p.name} ${typeMeta.short} ${p._fOrder} ${source} `; const listItem = new ListItem( psI, eleLi, p.name, { hash, source, type: typeMeta.full, order: p._fOrder, searchModeList: this.constructor._getHiddenModeList(p), }, { 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(RenderPsionics.$getRenderedPsionic(ent)); } } const psionicsPage = new PsionicsPage(); psionicsPage.sublistManager = new PsionicsSublistManager(); window.addEventListener("load", () => psionicsPage.pOnLoad());