22 lines
687 B
TypeScript
22 lines
687 B
TypeScript
import type { Portfolio } from "../api/usePortfolio";
|
|
|
|
type Money = Portfolio["totalsByCurrency"][number];
|
|
|
|
function formatShare(
|
|
numerator: Money | null,
|
|
denominator: Money | null,
|
|
): string | null {
|
|
if (!numerator || !denominator) return null;
|
|
const total = Number(denominator.value);
|
|
if (!Number.isFinite(total) || total <= 0) return null;
|
|
// biome-ignore lint/style/noMagicNumbers: obvious conversion of a ratio to percent.
|
|
const percent = (Number(numerator.value) / total) * 100;
|
|
if (!Number.isFinite(percent)) return null;
|
|
const rounded = new Intl.NumberFormat("ru-RU", {
|
|
maximumFractionDigits: 1,
|
|
}).format(percent);
|
|
return `${rounded} %`;
|
|
}
|
|
|
|
export { formatShare };
|