Improve sort order and remove list header that's inaccurate now

This commit is contained in:
Oliver-Akins 2025-02-01 14:36:47 -07:00
parent 1302d91469
commit 7d9993b158
3 changed files with 26 additions and 7 deletions

View file

@ -128,7 +128,7 @@ export class HeroSkillsCardV1 extends GenericAppMixin(HandlebarsApplicationMixin
ctx.skills = {}; ctx.skills = {};
const abilities = Object.values(gameTerms.Abilities); const abilities = Object.values(gameTerms.Abilities);
const heroRank = ctx.actor.system.level.rank; const heroRank = ctx.actor.system.level.rank;
const embeddedSkills = ctx.actor.itemTypes.skill.sort(documentSorter); const embeddedSkills = ctx.actor.itemTypes.skill;
for (let ability of abilities) { for (let ability of abilities) {
const skills = []; const skills = [];
@ -137,6 +137,7 @@ export class HeroSkillsCardV1 extends GenericAppMixin(HandlebarsApplicationMixin
skills.push({ skills.push({
uuid: skill.uuid, uuid: skill.uuid,
name: skill.name, name: skill.name,
sort: skill.sort,
use: skill.system.advances[heroRank], use: skill.system.advances[heroRank],
}); });
}; };
@ -162,6 +163,9 @@ export class HeroSkillsCardV1 extends GenericAppMixin(HandlebarsApplicationMixin
.concat(Array(limit - length).fill(null)) .concat(Array(limit - length).fill(null))
.slice(0, limit); .slice(0, limit);
}; };
// Sort the skills
ctx.skills[ability] = ctx.skills[ability].sort(documentSorter);
} }
return ctx; return ctx;
}; };

View file

@ -7,11 +7,30 @@ export function filePath(path) {
}; };
// MARK: documentSorter // MARK: documentSorter
/**
* @typedef {Object} Sortable
* @property {integer} sort
* @property {string} name
*/
/**
* Compares two Sortable documents in order to determine ordering
* @param {Sortable} a
* @param {Sortable} b
* @returns An integer dictating which order the two documents should be sorted in
*/
export function documentSorter(a, b) { export function documentSorter(a, b) {
if (!a && !b) {
return 0;
} else if (!a) {
return 1;
} else if (!b) {
return -1;
};
const sortDelta = b.sort - a.sort; const sortDelta = b.sort - a.sort;
if (sortDelta !== 0) { if (sortDelta !== 0) {
return sortDelta; return sortDelta;
}; };
// TODO alphabetical sort return Math.sign(a.name.localeCompare(b.name));
return 0;
}; };

View file

@ -1,7 +1,6 @@
<div class="HeroSkillsCardV1"> <div class="HeroSkillsCardV1">
<div class="label col-header list-header gait-skills-header"> <div class="label col-header list-header gait-skills-header">
<span>{{ rc-i18n "RipCrypt.Apps.grit-skills" }}</span> <span>{{ rc-i18n "RipCrypt.Apps.grit-skills" }}</span>
<span class="small">{{ rc-i18n "RipCrypt.common.rank" }}</span>
</div> </div>
<ol class="num-before skill-list even grit-skills"> <ol class="num-before skill-list even grit-skills">
{{#each skills.grit as | skill |}} {{#each skills.grit as | skill |}}
@ -24,7 +23,6 @@
<div class="label col-header list-header gait-skills-header"> <div class="label col-header list-header gait-skills-header">
<span>{{ rc-i18n "RipCrypt.Apps.gait-skills" }}</span> <span>{{ rc-i18n "RipCrypt.Apps.gait-skills" }}</span>
<span class="small">{{ rc-i18n "RipCrypt.common.rank" }}</span>
</div> </div>
<ol class="num-before skill-list even gait-skills"> <ol class="num-before skill-list even gait-skills">
{{#each skills.gait as | skill |}} {{#each skills.gait as | skill |}}
@ -47,7 +45,6 @@
<div class="label col-header list-header grip-skills-header"> <div class="label col-header list-header grip-skills-header">
<span>{{ rc-i18n "RipCrypt.Apps.grip-skills" }}</span> <span>{{ rc-i18n "RipCrypt.Apps.grip-skills" }}</span>
<span class="small">{{ rc-i18n "RipCrypt.common.rank" }}</span>
</div> </div>
<ol class="num-before skill-list odd grip-skills"> <ol class="num-before skill-list odd grip-skills">
{{#each skills.grip as | skill |}} {{#each skills.grip as | skill |}}
@ -70,7 +67,6 @@
<div class="label col-header list-header glim-skills-header"> <div class="label col-header list-header glim-skills-header">
<span>{{ rc-i18n "RipCrypt.Apps.glim-skills" }}</span> <span>{{ rc-i18n "RipCrypt.Apps.glim-skills" }}</span>
<span class="small">{{ rc-i18n "RipCrypt.common.rank" }}</span>
</div> </div>
<ol class="num-before skill-list odd glim-skills"> <ol class="num-before skill-list odd glim-skills">
{{#each skills.glim as | skill |}} {{#each skills.glim as | skill |}}