Files
frontend/src/entities/portfolio/model/display.ts
T
codex-bot 2b94a16ae5
Frontend verify / commits (push) Skipped
Frontend verify / security (push) Successful in 11s
Frontend verify / verify (push) Failing after 9m0s
refactor!: support RUB only (WealthLedger/main#55) (#168)
2026-11-11 09:36:29 +03:00

28 lines
629 B
TypeScript

import type { Portfolio } from "../api/usePortfolio";
const PERCENT_SCALE = 100;
type Money = Portfolio["totals"];
function formatShare(
numerator: Money | null,
denominator: Money | null,
): null | string {
if (!numerator || !denominator)
return null;
const total = Number(denominator.value);
if (!Number.isFinite(total) || total <= 0)
return null;
const percent = (Number(numerator.value) / total) * PERCENT_SCALE;
if (!Number.isFinite(percent))
return null;
const rounded = new Intl.NumberFormat("ru-RU", {
maximumFractionDigits: 1,
}).format(percent);
return `${rounded} %`;
}
export { formatShare };