Distinguish wining and losing FR answers
This commit is contained in:
parent
9b0e650388
commit
c7f973bef9
|
@ -24,7 +24,7 @@ export function AnswersPanel(props: {
|
||||||
const { creatorId, resolution, resolutions, totalBets } = contract
|
const { creatorId, resolution, resolutions, totalBets } = contract
|
||||||
|
|
||||||
const answers = useAnswers(contract.id) ?? contract.answers
|
const answers = useAnswers(contract.id) ?? contract.answers
|
||||||
const [winningAnswers, otherAnswers] = _.partition(
|
const [winningAnswers, losingAnswers] = _.partition(
|
||||||
answers.filter(
|
answers.filter(
|
||||||
(answer) => answer.id !== '0' && totalBets[answer.id] > 0.000000001
|
(answer) => answer.id !== '0' && totalBets[answer.id] > 0.000000001
|
||||||
),
|
),
|
||||||
|
@ -36,7 +36,7 @@ export function AnswersPanel(props: {
|
||||||
resolutions ? -1 * resolutions[answer.id] : 0
|
resolutions ? -1 * resolutions[answer.id] : 0
|
||||||
),
|
),
|
||||||
..._.sortBy(
|
..._.sortBy(
|
||||||
resolution ? [] : otherAnswers,
|
resolution ? [] : losingAnswers,
|
||||||
(answer) => -1 * getDpmOutcomeProbability(contract.totalShares, answer.id)
|
(answer) => -1 * getDpmOutcomeProbability(contract.totalShares, answer.id)
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
@ -52,7 +52,11 @@ export function AnswersPanel(props: {
|
||||||
|
|
||||||
const chosenTotal = _.sum(Object.values(chosenAnswers))
|
const chosenTotal = _.sum(Object.values(chosenAnswers))
|
||||||
|
|
||||||
const answerItems = getAnswers(contract, user)
|
const answerItems = getAnswers(
|
||||||
|
contract,
|
||||||
|
user,
|
||||||
|
winningAnswers.length > 0 ? winningAnswers.map((a) => a.id) : []
|
||||||
|
)
|
||||||
|
|
||||||
const onChoose = (answerId: string, prob: number) => {
|
const onChoose = (answerId: string, prob: number) => {
|
||||||
if (resolveOption === 'CHOOSE') {
|
if (resolveOption === 'CHOOSE') {
|
||||||
|
@ -89,9 +93,7 @@ export function AnswersPanel(props: {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Col className="gap-3">
|
<Col className="gap-3">
|
||||||
{(resolveOption === 'CHOOSE' ||
|
{(resolveOption || resolution) &&
|
||||||
resolveOption === 'CHOOSE_MULTIPLE' ||
|
|
||||||
resolution === 'MKT') &&
|
|
||||||
sortedAnswers.map((answer) => (
|
sortedAnswers.map((answer) => (
|
||||||
<AnswerItem
|
<AnswerItem
|
||||||
key={answer.id}
|
key={answer.id}
|
||||||
|
@ -105,11 +107,7 @@ export function AnswersPanel(props: {
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
|
|
||||||
{sortedAnswers.length === 0 && (
|
{!resolveOption && (
|
||||||
<div className="pb-4 text-gray-500">No answers yet...</div>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{!resolveOption && sortedAnswers.length > 0 && (
|
|
||||||
<FeedItems
|
<FeedItems
|
||||||
contract={contract}
|
contract={contract}
|
||||||
items={answerItems}
|
items={answerItems}
|
||||||
|
@ -118,6 +116,10 @@ export function AnswersPanel(props: {
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{sortedAnswers.length === 0 && (
|
||||||
|
<div className="pb-4 text-gray-500">No answers yet...</div>
|
||||||
|
)}
|
||||||
|
|
||||||
{tradingAllowed(contract) &&
|
{tradingAllowed(contract) &&
|
||||||
(!resolveOption || resolveOption === 'CANCEL') && (
|
(!resolveOption || resolveOption === 'CANCEL') && (
|
||||||
<CreateAnswerPanel contract={contract} />
|
<CreateAnswerPanel contract={contract} />
|
||||||
|
@ -140,13 +142,18 @@ export function AnswersPanel(props: {
|
||||||
|
|
||||||
function getAnswers(
|
function getAnswers(
|
||||||
contract: FullContract<DPM, FreeResponse>,
|
contract: FullContract<DPM, FreeResponse>,
|
||||||
user: User | undefined | null
|
user: User | undefined | null,
|
||||||
|
ignoreAnswerOutcomes: string[]
|
||||||
) {
|
) {
|
||||||
const { answers } = contract
|
const { answers } = contract
|
||||||
|
|
||||||
let outcomes = _.uniq(
|
let outcomes = _.uniq(
|
||||||
answers.map((answer) => answer.number.toString())
|
answers.map((answer) => answer.number.toString())
|
||||||
).filter((outcome) => getOutcomeProbability(contract, outcome) > 0.0001)
|
).filter(
|
||||||
|
(outcome) =>
|
||||||
|
getOutcomeProbability(contract, outcome) > 0.0001 &&
|
||||||
|
!ignoreAnswerOutcomes.includes(outcome)
|
||||||
|
)
|
||||||
outcomes = _.sortBy(outcomes, (outcome) =>
|
outcomes = _.sortBy(outcomes, (outcome) =>
|
||||||
getOutcomeProbability(contract, outcome)
|
getOutcomeProbability(contract, outcome)
|
||||||
).reverse()
|
).reverse()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user