Files
5etools-mirror-2.github.io/js/filter-charcreationoptions.js
TheGiddyLimit 2eeeb0771b v1.209.0
2024-07-10 20:47:40 +01:00

53 lines
1.4 KiB
JavaScript

"use strict";
class PageFilterCharCreationOptions extends PageFilterBase {
static _filterFeatureTypeSort (a, b) {
return SortUtil.ascSort(Parser.charCreationOptionTypeToFull(a.item), Parser.charCreationOptionTypeToFull(b.item));
}
constructor () {
super();
this._typeFilter = new Filter({
header: "Feature Type",
items: [],
displayFn: Parser.charCreationOptionTypeToFull,
itemSortFn: PageFilterCharCreationOptions._filterFeatureTypeSort,
});
this._miscFilter = new Filter({header: "Miscellaneous", items: ["SRD", "Legacy", "Has Images", "Has Info"], isMiscFilter: true});
}
static mutateForFilters (it) {
it._fOptionType = Parser.charCreationOptionTypeToFull(it.optionType);
it._fMisc = it.srd ? ["SRD"] : [];
if (SourceUtil.isLegacySourceWotc(it.source)) it._fMisc.push("Legacy");
if (this._hasFluff(it)) it._fMisc.push("Has Info");
if (this._hasFluffImages(it)) it._fMisc.push("Has Images");
}
addToFilters (it, isExcluded) {
if (isExcluded) return;
this._sourceFilter.addItem(it.source);
this._typeFilter.addItem(it._fOptionType);
}
async _pPopulateBoxOptions (opts) {
opts.filters = [
this._sourceFilter,
this._typeFilter,
this._miscFilter,
];
}
toDisplay (values, it) {
return this._filterBox.toDisplay(
values,
it.source,
it._fOptionType,
it._fMisc,
);
}
}
globalThis.PageFilterCharCreationOptions = PageFilterCharCreationOptions;