Add filter values sorting

2.0
Matheus Clemente 2023-11-08 16:35:39 -03:00
parent 7f233cff5e
commit eeffb9cba6
1 changed files with 50 additions and 31 deletions

View File

@ -1323,7 +1323,7 @@ class CompendiumBrowser extends Application {
"DND5E.SpellSchool", "DND5E.SpellSchool",
"system.school", "system.school",
"select", "select",
CONFIG.DND5E.spellSchools this._sortPackValues(CONFIG.DND5E.spellSchools)
); );
this.addSpellFilter("CMPBrowser.general", "CMPBrowser.castingTime", "system.activation.type", "select", { this.addSpellFilter("CMPBrowser.general", "CMPBrowser.castingTime", "system.activation.type", "select", {
action: "DND5E.Action", action: "DND5E.Action",
@ -1345,7 +1345,7 @@ class CompendiumBrowser extends Application {
"CMPBrowser.damageType", "CMPBrowser.damageType",
"damageTypes", "damageTypes",
"select", "select",
CONFIG.DND5E.damageTypes this._sortPackValues(CONFIG.DND5E.damageTypes)
); );
//JV-082: Fix for missing "Class" search feature //JV-082: Fix for missing "Class" search feature
this.addSpellFilter( this.addSpellFilter(
@ -1353,7 +1353,7 @@ class CompendiumBrowser extends Application {
"ITEM.TypeClass", "ITEM.TypeClass",
"classes", "classes",
"select", "select",
{ this._sortPackValues({
artificer: "CMPBrowser.artificer", artificer: "CMPBrowser.artificer",
bard: "CMPBrowser.bard", bard: "CMPBrowser.bard",
cleric: "CMPBrowser.cleric", cleric: "CMPBrowser.cleric",
@ -1363,7 +1363,7 @@ class CompendiumBrowser extends Application {
sorcerer: "CMPBrowser.sorcerer", sorcerer: "CMPBrowser.sorcerer",
warlock: "CMPBrowser.warlock", warlock: "CMPBrowser.warlock",
wizard: "CMPBrowser.wizard", wizard: "CMPBrowser.wizard",
}, }),
true true
); );
this.addSpellFilter("DND5E.SpellComponents", "DND5E.Ritual", "system.components.ritual", "bool"); this.addSpellFilter("DND5E.SpellComponents", "DND5E.Ritual", "system.components.ritual", "bool");
@ -1384,12 +1384,13 @@ class CompendiumBrowser extends Application {
tool: "ITEM.TypeTool", tool: "ITEM.TypeTool",
weapon: "ITEM.TypeWeapon", weapon: "ITEM.TypeWeapon",
}); });
this.addItemFilter( this.addItemFilter(
"CMPBrowser.general", "CMPBrowser.general",
"CMPBrowser.ItemsPacks", "CMPBrowser.ItemsPacks",
"matchedPacks", "matchedPacks",
"select", "select",
{ this._sortPackValues({
burglar: "CMPBrowser.ItemsPacksBurglar", burglar: "CMPBrowser.ItemsPacksBurglar",
diplomat: "CMPBrowser.ItemsPacksDiplomat", diplomat: "CMPBrowser.ItemsPacksDiplomat",
dungeoneer: "CMPBrowser.ItemsPacksDungeoneer", dungeoneer: "CMPBrowser.ItemsPacksDungeoneer",
@ -1398,7 +1399,7 @@ class CompendiumBrowser extends Application {
monsterhunter: "CMPBrowser.ItemsPacksMonsterHunter", monsterhunter: "CMPBrowser.ItemsPacksMonsterHunter",
priest: "CMPBrowser.ItemsPacksPriest", priest: "CMPBrowser.ItemsPacksPriest",
scholar: "CMPBrowser.ItemsPacksScholar", scholar: "CMPBrowser.ItemsPacksScholar",
}, }),
true true
); );
this.addItemFilter( this.addItemFilter(
@ -1414,7 +1415,7 @@ class CompendiumBrowser extends Application {
"CMPBrowser.damageType", "CMPBrowser.damageType",
"damageTypes", "damageTypes",
"select", "select",
CONFIG.DND5E.damageTypes this._sortPackValues(CONFIG.DND5E.damageTypes)
); );
this.addItemFilter("CMPBrowser.GameMechanics", "CMPBrowser.UsesResources", "usesRessources", "bool"); this.addItemFilter("CMPBrowser.GameMechanics", "CMPBrowser.UsesResources", "usesRessources", "bool");
@ -1430,14 +1431,14 @@ class CompendiumBrowser extends Application {
"ITEM.TypeEquipment", "ITEM.TypeEquipment",
"system.armor.type", "system.armor.type",
"text", "text",
CONFIG.DND5E.equipmentTypes this._sortPackValues(CONFIG.DND5E.equipmentTypes)
); );
this.addItemFilter( this.addItemFilter(
"CMPBrowser.ItemSubtype", "CMPBrowser.ItemSubtype",
"ITEM.TypeConsumable", "ITEM.TypeConsumable",
"system.consumableType", "system.consumableType",
"text", "text",
CONFIG.DND5E.consumableTypes this._sortPackValues(CONFIG.DND5E.consumableTypes)
); );
this.addItemFilter("CMPBrowser.MagicItems", "DND5E.Rarity", "system.rarity", "select", CONFIG.DND5E.itemRarity); this.addItemFilter("CMPBrowser.MagicItems", "DND5E.Rarity", "system.rarity", "select", CONFIG.DND5E.itemRarity);
@ -1452,7 +1453,7 @@ class CompendiumBrowser extends Application {
"ITEM.TypeClass", "ITEM.TypeClass",
"classRequirement", "classRequirement",
"select", "select",
{ this._sortPackValues({
artificer: "CMPBrowser.artificer", artificer: "CMPBrowser.artificer",
barbarian: "CMPBrowser.barbarian", barbarian: "CMPBrowser.barbarian",
bard: "CMPBrowser.bard", bard: "CMPBrowser.bard",
@ -1466,29 +1467,35 @@ class CompendiumBrowser extends Application {
sorcerer: "CMPBrowser.sorcerer", sorcerer: "CMPBrowser.sorcerer",
warlock: "CMPBrowser.warlock", warlock: "CMPBrowser.warlock",
wizard: "CMPBrowser.wizard", wizard: "CMPBrowser.wizard",
}, }),
true true
); );
let featureTypes = { this.addFeatFilter(
class: "ITEM.TypeClass", "CMPBrowser.general",
feat: "ITEM.TypeFeat", "CMPBrowser.overall",
}; "type",
"select",
featureTypes.subclass = "ITEM.TypeSubclass"; this._sortPackValues({
featureTypes.background = "DND5E.Background"; class: "ITEM.TypeClass",
feat: "ITEM.TypeFeat",
this.addFeatFilter("CMPBrowser.general", "CMPBrowser.overall", "type", "select", featureTypes, false); subclass: "ITEM.TypeSubclass",
background: "DND5E.Background",
}),
false
);
this.addFeatFilter( this.addFeatFilter(
"CMPBrowser.general", "CMPBrowser.general",
"DND5E.ItemFeatureType", "DND5E.ItemFeatureType",
"system.type.value", "system.type.value",
"select", "select",
Object.keys(dnd5e.config.featureTypes).reduce(function (acc, current) { this._sortPackValues(
acc[current] = dnd5e.config.featureTypes[current].label; Object.keys(dnd5e.config.featureTypes).reduce(function (acc, current) {
return acc; acc[current] = dnd5e.config.featureTypes[current].label;
}, {}), return acc;
}, {})
),
false false
); );
@ -1497,7 +1504,7 @@ class CompendiumBrowser extends Application {
"CMPBrowser.subfeature", "CMPBrowser.subfeature",
"system.type.subtype", "system.type.subtype",
"select", "select",
dnd5e.config.featureTypes.class.subtypes this._sortPackValues(dnd5e.config.featureTypes.class.subtypes)
); );
this.addFeatFilter( this.addFeatFilter(
@ -1512,11 +1519,22 @@ class CompendiumBrowser extends Application {
"CMPBrowser.damageType", "CMPBrowser.damageType",
"damageTypes", "damageTypes",
"select", "select",
CONFIG.DND5E.damageTypes this._sortPackValues(CONFIG.DND5E.damageTypes)
); );
this.addFeatFilter("CMPBrowser.GameMechanics", "CMPBrowser.UsesResources", "usesRessources", "bool"); this.addFeatFilter("CMPBrowser.GameMechanics", "CMPBrowser.UsesResources", "usesRessources", "bool");
} }
_sortPackValues(packValue) {
const sortable = Object.keys(packValue)
.map((pack) => [pack, game.i18n.localize(packValue[pack])])
.sort((a, b) => a[1].localeCompare(b[1]));
return sortable.reduce((acc, item) => {
acc[item[0]] = item[1];
return acc;
}, {});
}
static CREATURE_TYPES = { static CREATURE_TYPES = {
aberration: "DND5E.CreatureAberration", aberration: "DND5E.CreatureAberration",
beast: "DND5E.CreatureBeast", beast: "DND5E.CreatureBeast",
@ -1551,7 +1569,7 @@ class CompendiumBrowser extends Application {
"DND5E.CreatureType", "DND5E.CreatureType",
npcDetailsPath, npcDetailsPath,
"select", "select",
CompendiumBrowser.CREATURE_TYPES this._sortPackValues(CompendiumBrowser.CREATURE_TYPES)
); );
this.addNpcFilter("DND5E.Abilities", "DND5E.AbilityStr", "system.abilities.str.value", "numberCompare"); this.addNpcFilter("DND5E.Abilities", "DND5E.AbilityStr", "system.abilities.str.value", "numberCompare");
this.addNpcFilter("DND5E.Abilities", "DND5E.AbilityDex", "system.abilities.dex.value", "numberCompare"); this.addNpcFilter("DND5E.Abilities", "DND5E.AbilityDex", "system.abilities.dex.value", "numberCompare");
@ -1560,12 +1578,13 @@ class CompendiumBrowser extends Application {
this.addNpcFilter("DND5E.Abilities", "DND5E.AbilityWis", "system.abilities.wis.value", "numberCompare"); this.addNpcFilter("DND5E.Abilities", "DND5E.AbilityWis", "system.abilities.wis.value", "numberCompare");
this.addNpcFilter("DND5E.Abilities", "DND5E.AbilityCha", "system.abilities.cha.value", "numberCompare"); this.addNpcFilter("DND5E.Abilities", "DND5E.AbilityCha", "system.abilities.cha.value", "numberCompare");
const damageTypes = this._sortPackValues(CONFIG.DND5E.damageTypes);
this.addNpcFilter( this.addNpcFilter(
"CMPBrowser.dmgInteraction", "CMPBrowser.dmgInteraction",
"DND5E.DamImm", "DND5E.DamImm",
"system.traits.di.value", "system.traits.di.value",
"multiSelect", "multiSelect",
CONFIG.DND5E.damageTypes, damageTypes,
true true
); );
this.addNpcFilter( this.addNpcFilter(
@ -1573,7 +1592,7 @@ class CompendiumBrowser extends Application {
"DND5E.DamRes", "DND5E.DamRes",
"system.traits.dr.value", "system.traits.dr.value",
"multiSelect", "multiSelect",
CONFIG.DND5E.damageTypes, damageTypes,
true true
); );
this.addNpcFilter( this.addNpcFilter(
@ -1581,7 +1600,7 @@ class CompendiumBrowser extends Application {
"DND5E.DamVuln", "DND5E.DamVuln",
"system.traits.dv.value", "system.traits.dv.value",
"multiSelect", "multiSelect",
CONFIG.DND5E.damageTypes, damageTypes,
true true
); );
this.addNpcFilter( this.addNpcFilter(
@ -1589,7 +1608,7 @@ class CompendiumBrowser extends Application {
"DND5E.ConImm", "DND5E.ConImm",
"system.traits.ci.value", "system.traits.ci.value",
"multiSelect", "multiSelect",
CONFIG.DND5E.conditionTypes, this._sortPackValues(CONFIG.DND5E.conditionTypes),
true true
); );
} }