Add daily profit and balance
This commit is contained in:
parent
cd36becf39
commit
bddc499981
|
@ -116,12 +116,12 @@ const calculateProfitForPeriod = (
|
||||||
return currentProfit
|
return currentProfit
|
||||||
}
|
}
|
||||||
|
|
||||||
const startingProfit = calculateTotalProfit(startingPortfolio)
|
const startingProfit = calculatePortfolioProfit(startingPortfolio)
|
||||||
|
|
||||||
return currentProfit - startingProfit
|
return currentProfit - startingProfit
|
||||||
}
|
}
|
||||||
|
|
||||||
const calculateTotalProfit = (portfolio: PortfolioMetrics) => {
|
export const calculatePortfolioProfit = (portfolio: PortfolioMetrics) => {
|
||||||
return portfolio.investmentValue + portfolio.balance - portfolio.totalDeposits
|
return portfolio.investmentValue + portfolio.balance - portfolio.totalDeposits
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ export const calculateNewProfit = (
|
||||||
portfolioHistory: PortfolioMetrics[],
|
portfolioHistory: PortfolioMetrics[],
|
||||||
newPortfolio: PortfolioMetrics
|
newPortfolio: PortfolioMetrics
|
||||||
) => {
|
) => {
|
||||||
const allTimeProfit = calculateTotalProfit(newPortfolio)
|
const allTimeProfit = calculatePortfolioProfit(newPortfolio)
|
||||||
const descendingPortfolio = sortBy(
|
const descendingPortfolio = sortBy(
|
||||||
portfolioHistory,
|
portfolioHistory,
|
||||||
(p) => p.timestamp
|
(p) => p.timestamp
|
||||||
|
|
|
@ -25,6 +25,9 @@ import { Title } from 'web/components/title'
|
||||||
import { Row } from 'web/components/layout/row'
|
import { Row } from 'web/components/layout/row'
|
||||||
import { ProbChangeTable } from 'web/components/contract/prob-change-table'
|
import { ProbChangeTable } from 'web/components/contract/prob-change-table'
|
||||||
import { groupPath } from 'web/lib/firebase/groups'
|
import { groupPath } from 'web/lib/firebase/groups'
|
||||||
|
import { usePortfolioHistory } from 'web/hooks/use-portfolio-history'
|
||||||
|
import { calculatePortfolioProfit } from 'common/calculate-metrics'
|
||||||
|
import { formatMoney } from 'common/util/format'
|
||||||
|
|
||||||
const Home = () => {
|
const Home = () => {
|
||||||
const user = useUser()
|
const user = useUser()
|
||||||
|
@ -44,11 +47,13 @@ const Home = () => {
|
||||||
<Page>
|
<Page>
|
||||||
<Col className="pm:mx-10 gap-4 px-4 pb-12">
|
<Col className="pm:mx-10 gap-4 px-4 pb-12">
|
||||||
<Row className={'w-full items-center justify-between'}>
|
<Row className={'w-full items-center justify-between'}>
|
||||||
<Title text="Home" />
|
<Title className="!mb-0" text="Home" />
|
||||||
|
|
||||||
<EditButton />
|
<EditButton />
|
||||||
</Row>
|
</Row>
|
||||||
|
|
||||||
|
<DailyProfitAndBalance className="self-end" userId={user?.id} />
|
||||||
|
|
||||||
<div className="text-xl text-gray-800">Daily movers</div>
|
<div className="text-xl text-gray-800">Daily movers</div>
|
||||||
<ProbChangeTable userId={user?.id} />
|
<ProbChangeTable userId={user?.id} />
|
||||||
|
|
||||||
|
@ -163,4 +168,37 @@ function EditButton(props: { className?: string }) {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function DailyProfitAndBalance(props: {
|
||||||
|
userId: string | null | undefined
|
||||||
|
className?: string
|
||||||
|
}) {
|
||||||
|
const { userId, className } = props
|
||||||
|
const metrics = usePortfolioHistory(userId ?? '', 'daily') ?? []
|
||||||
|
const [first, last] = [metrics[0], metrics[metrics.length - 1]]
|
||||||
|
|
||||||
|
if (first === undefined || last === undefined) return null
|
||||||
|
|
||||||
|
const profit =
|
||||||
|
calculatePortfolioProfit(last) - calculatePortfolioProfit(first)
|
||||||
|
|
||||||
|
const balanceChange = last.balance - first.balance
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className={clsx(className, 'text-lg')}>
|
||||||
|
<span className={clsx(profit >= 0 ? 'text-green-500' : 'text-red-500')}>
|
||||||
|
{profit >= 0 ? '+' : '-'}
|
||||||
|
{formatMoney(profit)}
|
||||||
|
</span>{' '}
|
||||||
|
profit and{' '}
|
||||||
|
<span
|
||||||
|
className={clsx(balanceChange >= 0 ? 'text-green-500' : 'text-red-500')}
|
||||||
|
>
|
||||||
|
{balanceChange >= 0 ? '+' : '-'}
|
||||||
|
{formatMoney(balanceChange)}
|
||||||
|
</span>{' '}
|
||||||
|
balance today
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
export default Home
|
export default Home
|
||||||
|
|
Loading…
Reference in New Issue
Block a user