import type { FC } from "react"; import { Alert, Anchor, Stack, Text } from "@mantine/core"; import { useTranslation } from "react-i18next"; import { Link } from "react-router"; import { formatDecimal, formatMoney, formatSnapshotTime } from "@/shared/lib"; import type { InstrumentPositionVm } from "../model/types"; import classes from "./InstrumentDetails.module.css"; import { InstrumentSection } from "./InstrumentSection.view"; type InstrumentPositionProps = { quantityLabel?: string; returnNote?: string; vm: InstrumentPositionVm; }; const InstrumentPosition: FC = (props) => { const { vm } = props; const { t } = useTranslation(); if (vm.position && vm.position.accounts.length === 0) return; return ( {!!(vm.position) && (( {!!(vm.position.isStale) && (( {t("portfolio.staleWarning")} ))}
{props.quantityLabel ?? t("stock.quantity")} {formatDecimal(vm.position.quantity)}
{t("stock.value")} {formatMoney(vm.position.currentValue)}
{t("stock.average")} {formatMoney(vm.position.averagePurchasePrice)}
{t("stock.openReturn")} {formatMoney(vm.position.absoluteReturn)} {vm.position.returnPercent !== null && (( {formatDecimal(vm.position.returnPercent)} {" "} % ))}
{props.returnNote ?? t("stock.openReturnNote")}
{vm.position.accounts.map(account => (
{account.account ? ( {account.account.name} ) : ( {t("stock.portfolio")} )}
{props.quantityLabel ?? t("stock.quantity")} {formatDecimal(account.quantity)}
{t("stock.average")} {formatMoney(account.averagePurchasePrice)}
{t("stock.value")} {formatMoney(account.currentValue)}
{t("stock.openReturn")} {formatMoney(account.absoluteReturn)} {account.returnPercent !== null && (( {formatDecimal(account.returnPercent)} {" "} % ))}
))}
{t("stock.snapshotAt", { date: formatSnapshotTime(vm.position.observedAt), })}
))}
); }; export { InstrumentPosition };