import { ResponsiveLine } from '@nivo/line' import { PortfolioMetrics } from 'common/user' import { formatMoney } from 'common/util/format' import { last } from 'lodash' import { memo } from 'react' import { useWindowSize } from 'web/hooks/use-window-size' import { formatTime } from 'web/lib/util/time' export const PortfolioValueGraph = memo(function PortfolioValueGraph(props: { portfolioHistory: PortfolioMetrics[] mode: 'value' | 'profit' height?: number includeTime?: boolean }) { const { portfolioHistory, height, includeTime, mode } = props const { width } = useWindowSize() const points = portfolioHistory.map((p) => { const { timestamp, balance, investmentValue, totalDeposits } = p const value = balance + investmentValue const profit = value - totalDeposits return { x: new Date(timestamp), y: mode === 'value' ? value : profit, } }) const data = [{ id: 'Value', data: points, color: '#11b981' }] const numXTickValues = !width || width < 800 ? 2 : 5 const numYTickValues = 4 const endDate = last(points)?.x return (