Files
5etools-mirror-2.github.io/js/filter-actions.js
TheGiddyLimit e3bf75f42a v1.198.3
2024-01-06 14:47:30 +00:00

54 lines
1.2 KiB
JavaScript

"use strict";
class PageFilterActions extends PageFilter {
static getTimeText (time) {
return typeof time === "string" ? time : Parser.getTimeToFull(time);
}
constructor () {
super();
this._timeFilter = new Filter({
header: "Type",
displayFn: StrUtil.uppercaseFirst,
itemSortFn: SortUtil.ascSortLower,
});
this._miscFilter = new Filter({header: "Miscellaneous", items: ["Optional/Variant Action", "SRD", "Basic Rules", "Legacy"], isMiscFilter: true});
}
static mutateForFilters (it) {
it._fTime = it.time ? it.time.map(it => it.unit || it) : null;
it._fMisc = [];
if (it.srd) it._fMisc.push("SRD");
if (it.basicRules) it._fMisc.push("Basic Rules");
if (SourceUtil.isLegacySourceWotc(it.source)) it._fMisc.push("Legacy");
if (it.fromVariant) it._fMisc.push("Optional/Variant Action");
}
addToFilters (it, isExcluded) {
if (isExcluded) return;
this._sourceFilter.addItem(it.source);
this._timeFilter.addItem(it._fTime);
}
async _pPopulateBoxOptions (opts) {
opts.filters = [
this._sourceFilter,
this._timeFilter,
this._miscFilter,
];
}
toDisplay (values, it) {
return this._filterBox.toDisplay(
values,
it.source,
it._fTime,
it._fMisc,
);
}
}
globalThis.PageFilterActions = PageFilterActions;