"use strict"; class OptionalFeaturesSublistManager extends SublistManager { constructor () { super({ sublistListOptions: { fnSort: PageFilterOptionalFeatures.sortOptionalFeatures, }, }); } static get _ROW_TEMPLATE () { return [ new SublistCellTemplate({ name: "Name", css: "bold ve-col-4 pl-0", colStyle: "", }), new SublistCellTemplate({ name: "Type", css: "ve-col-2 ve-text-center", colStyle: "text-center", }), new SublistCellTemplate({ name: "Prerequisite", css: "ve-col-4-5", colStyle: "", }), new SublistCellTemplate({ name: "Level", css: "ve-col-1-5 ve-text-center pr-0", colStyle: "text-center", }), ]; } pGetSublistItem (it, hash) { const prerequisite = Renderer.utils.prerequisite.getHtml(it.prerequisite, {isListMode: true, blocklistKeys: new Set(["level"])}); const level = Renderer.optionalfeature.getListPrerequisiteLevelText(it.prerequisite); const cellsText = [ it.name, new SublistCell({title: it._dFeatureType.join(", "), text: it._lFeatureType}), prerequisite, level, ]; 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: it._lFeatureType, prerequisite, level, }, { entity: it, mdRow: [...cellsText], }, ); return listItem; } } class OptionalFeaturesPage extends ListPage { constructor () { const pageFilter = new PageFilterOptionalFeatures(); super({ dataSource: DataUtil.optionalfeature.loadJSON.bind(DataUtil.optionalfeature), pFnGetFluff: Renderer.optionalfeature.pGetFluff.bind(Renderer.optionalfeature), pageFilter, listOptions: { fnSort: PageFilterOptionalFeatures.sortOptionalFeatures, }, dataProps: ["optionalfeature"], bookViewOptions: { namePlural: "optional features", pageTitle: "Optional Features Book View", }, isPreviewable: true, isMarkdownPopout: true, }); } getListItem (it, ivI, isExcluded) { this._pageFilter.mutateAndAddToFilters(it, isExcluded); const eleLi = document.createElement("div"); eleLi.className = `lst__row ve-flex-col ${isExcluded ? "lst__row--blocklisted" : ""}`; const source = Parser.sourceJsonToAbv(it.source); const hash = UrlUtil.autoEncodeHash(it); const prerequisite = Renderer.utils.prerequisite.getHtml(it.prerequisite, {isListMode: true, blocklistKeys: new Set(["level"])}); const level = Renderer.optionalfeature.getListPrerequisiteLevelText(it.prerequisite); eleLi.innerHTML = ` ${it.name} ${it._lFeatureType} ${prerequisite} ${level} ${source}