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 { Tooltip } from '../tooltip'
|
||||
import { SiteLink } from '../site-link'
|
||||
import { ProbChange } from './prob-change-table'
|
||||
import { ProbOrNumericChange } from './prob-change-table'
|
||||
import { Card } from '../card'
|
||||
import { ProfitBadgeMana } from '../profit-badge'
|
||||
import { floatingEqual } from 'common/util/math'
|
||||
|
@ -396,12 +396,17 @@ export function ContractCardProbChange(props: {
|
|||
className?: string
|
||||
}) {
|
||||
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 user = useUser()
|
||||
const metrics = useUserContractMetrics(user?.id, contract.id)
|
||||
const dayMetrics = metrics && metrics.from && metrics.from.day
|
||||
const outcome =
|
||||
const binaryOutcome =
|
||||
metrics && floatingEqual(metrics.totalShares.NO ?? 0, 0) ? 'YES' : 'NO'
|
||||
|
||||
return (
|
||||
|
@ -418,7 +423,7 @@ export function ContractCardProbChange(props: {
|
|||
>
|
||||
<span className="line-clamp-3">{contract.question}</span>
|
||||
</SiteLink>
|
||||
<ProbChange className="py-2 pr-4" contract={contract} />
|
||||
<ProbOrNumericChange className="py-2 pr-4" contract={contract} />
|
||||
</Row>
|
||||
{showPosition && metrics && metrics.hasShares && (
|
||||
<Row
|
||||
|
@ -427,7 +432,8 @@ export function ContractCardProbChange(props: {
|
|||
)}
|
||||
>
|
||||
<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>
|
||||
|
||||
{dayMetrics && (
|
||||
|
|
|
@ -7,6 +7,7 @@ import { formatPercent } from 'common/util/format'
|
|||
import { Col } from '../layout/col'
|
||||
import { LoadingIndicator } from '../loading-indicator'
|
||||
import { ContractCardProbChange } from './contract-card'
|
||||
import { formatNumericProbability } from 'common/pseudo-numeric'
|
||||
|
||||
export function ProfitChangeTable(props: {
|
||||
contracts: CPMMBinaryContract[]
|
||||
|
@ -118,7 +119,7 @@ export function ProbChangeTable(props: {
|
|||
)
|
||||
}
|
||||
|
||||
export function ProbChange(props: {
|
||||
export function ProbOrNumericChange(props: {
|
||||
contract: CPMMContract
|
||||
className?: string
|
||||
}) {
|
||||
|
@ -127,13 +128,17 @@ export function ProbChange(props: {
|
|||
prob,
|
||||
probChanges: { day: change },
|
||||
} = contract
|
||||
const number =
|
||||
contract.outcomeType === 'PSEUDO_NUMERIC'
|
||||
? formatNumericProbability(prob, contract)
|
||||
: null
|
||||
|
||||
const color = change >= 0 ? 'text-teal-500' : 'text-red-400'
|
||||
|
||||
return (
|
||||
<Col className={clsx('flex flex-col items-end', className)}>
|
||||
<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 className={clsx('text-base', color)}>
|
||||
{(change > 0 ? '+' : '') + (change * 100).toFixed(0) + '%'}
|
||||
|
|
Loading…
Reference in New Issue
Block a user