Handle numeric outcomes in movers
This commit is contained in:
parent
e7ba7e715f
commit
fa476c78dd
|
@ -35,7 +35,7 @@ import { trackCallback } from 'web/lib/service/analytics'
|
||||||
import { getMappedValue } from 'common/pseudo-numeric'
|
import { getMappedValue } from 'common/pseudo-numeric'
|
||||||
import { Tooltip } from '../tooltip'
|
import { Tooltip } from '../tooltip'
|
||||||
import { SiteLink } from '../site-link'
|
import { SiteLink } from '../site-link'
|
||||||
import { ProbChange } from './prob-change-table'
|
import { ProbOrNumericChange } from './prob-change-table'
|
||||||
import { Card } from '../card'
|
import { Card } from '../card'
|
||||||
import { ProfitBadgeMana } from '../profit-badge'
|
import { ProfitBadgeMana } from '../profit-badge'
|
||||||
import { floatingEqual } from 'common/util/math'
|
import { floatingEqual } from 'common/util/math'
|
||||||
|
@ -396,12 +396,17 @@ export function ContractCardProbChange(props: {
|
||||||
className?: string
|
className?: string
|
||||||
}) {
|
}) {
|
||||||
const { noLinkAvatar, showPosition, className } = props
|
const { noLinkAvatar, showPosition, className } = props
|
||||||
|
const yesOutcomeLabel =
|
||||||
|
props.contract.outcomeType === 'PSEUDO_NUMERIC' ? 'HIGHER' : 'YES'
|
||||||
|
const noOutcomeLabel =
|
||||||
|
props.contract.outcomeType === 'PSEUDO_NUMERIC' ? 'LOWER' : 'NO'
|
||||||
|
|
||||||
const contract = useContractWithPreload(props.contract) as CPMMBinaryContract
|
const contract = useContractWithPreload(props.contract) as CPMMBinaryContract
|
||||||
|
|
||||||
const user = useUser()
|
const user = useUser()
|
||||||
const metrics = useUserContractMetrics(user?.id, contract.id)
|
const metrics = useUserContractMetrics(user?.id, contract.id)
|
||||||
const dayMetrics = metrics && metrics.from && metrics.from.day
|
const dayMetrics = metrics && metrics.from && metrics.from.day
|
||||||
const outcome =
|
const binaryOutcome =
|
||||||
metrics && floatingEqual(metrics.totalShares.NO ?? 0, 0) ? 'YES' : 'NO'
|
metrics && floatingEqual(metrics.totalShares.NO ?? 0, 0) ? 'YES' : 'NO'
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -418,7 +423,7 @@ export function ContractCardProbChange(props: {
|
||||||
>
|
>
|
||||||
<span className="line-clamp-3">{contract.question}</span>
|
<span className="line-clamp-3">{contract.question}</span>
|
||||||
</SiteLink>
|
</SiteLink>
|
||||||
<ProbChange className="py-2 pr-4" contract={contract} />
|
<ProbOrNumericChange className="py-2 pr-4" contract={contract} />
|
||||||
</Row>
|
</Row>
|
||||||
{showPosition && metrics && metrics.hasShares && (
|
{showPosition && metrics && metrics.hasShares && (
|
||||||
<Row
|
<Row
|
||||||
|
@ -427,7 +432,8 @@ export function ContractCardProbChange(props: {
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<Row className="gap-1 text-gray-500">
|
<Row className="gap-1 text-gray-500">
|
||||||
{Math.floor(metrics.totalShares[outcome])} {outcome} shares
|
{Math.floor(metrics.totalShares[binaryOutcome])}{' '}
|
||||||
|
{binaryOutcome === 'YES' ? yesOutcomeLabel : noOutcomeLabel} shares
|
||||||
</Row>
|
</Row>
|
||||||
|
|
||||||
{dayMetrics && (
|
{dayMetrics && (
|
||||||
|
|
|
@ -7,6 +7,7 @@ import { formatPercent } from 'common/util/format'
|
||||||
import { Col } from '../layout/col'
|
import { Col } from '../layout/col'
|
||||||
import { LoadingIndicator } from '../loading-indicator'
|
import { LoadingIndicator } from '../loading-indicator'
|
||||||
import { ContractCardProbChange } from './contract-card'
|
import { ContractCardProbChange } from './contract-card'
|
||||||
|
import { formatNumericProbability } from 'common/pseudo-numeric'
|
||||||
|
|
||||||
export function ProfitChangeTable(props: {
|
export function ProfitChangeTable(props: {
|
||||||
contracts: CPMMBinaryContract[]
|
contracts: CPMMBinaryContract[]
|
||||||
|
@ -118,7 +119,7 @@ export function ProbChangeTable(props: {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function ProbChange(props: {
|
export function ProbOrNumericChange(props: {
|
||||||
contract: CPMMContract
|
contract: CPMMContract
|
||||||
className?: string
|
className?: string
|
||||||
}) {
|
}) {
|
||||||
|
@ -127,13 +128,17 @@ export function ProbChange(props: {
|
||||||
prob,
|
prob,
|
||||||
probChanges: { day: change },
|
probChanges: { day: change },
|
||||||
} = contract
|
} = contract
|
||||||
|
const number =
|
||||||
|
contract.outcomeType === 'PSEUDO_NUMERIC'
|
||||||
|
? formatNumericProbability(prob, contract)
|
||||||
|
: null
|
||||||
|
|
||||||
const color = change >= 0 ? 'text-teal-500' : 'text-red-400'
|
const color = change >= 0 ? 'text-teal-500' : 'text-red-400'
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Col className={clsx('flex flex-col items-end', className)}>
|
<Col className={clsx('flex flex-col items-end', className)}>
|
||||||
<div className="mb-0.5 mr-0.5 text-2xl">
|
<div className="mb-0.5 mr-0.5 text-2xl">
|
||||||
{formatPercent(Math.round(100 * prob) / 100)}
|
{number ? number : formatPercent(Math.round(100 * prob) / 100)}
|
||||||
</div>
|
</div>
|
||||||
<div className={clsx('text-base', color)}>
|
<div className={clsx('text-base', color)}>
|
||||||
{(change > 0 ? '+' : '') + (change * 100).toFixed(0) + '%'}
|
{(change > 0 ? '+' : '') + (change * 100).toFixed(0) + '%'}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user