25 lines
603 B
JavaScript
25 lines
603 B
JavaScript
|
|
/**
|
||
|
|
* Portfolio-Rang (AP1.8a) — niedrigerer Rank = höhere Aufmerksamkeit.
|
||
|
|
*/
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @template {{ id: string, portfolio_rank?: number | null }} T
|
||
|
|
* @param {T[]} items
|
||
|
|
*/
|
||
|
|
export function sortByPortfolioRank(items) {
|
||
|
|
return [...items].sort(
|
||
|
|
(a, b) =>
|
||
|
|
(a.portfolio_rank ?? Number.MAX_SAFE_INTEGER) -
|
||
|
|
(b.portfolio_rank ?? Number.MAX_SAFE_INTEGER) ||
|
||
|
|
String(a.id).localeCompare(String(b.id)),
|
||
|
|
)
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @param {number | null | undefined} rank
|
||
|
|
*/
|
||
|
|
export function formatPortfolioRank(rank) {
|
||
|
|
if (rank == null || Number.isNaN(rank)) return null
|
||
|
|
return `#${rank + 1}`
|
||
|
|
}
|