From 0dc6c6405da6f49fa0ed68f477e0f4d500798ea8 Mon Sep 17 00:00:00 2001 From: Ian Philips Date: Wed, 4 May 2022 10:03:01 -0400 Subject: [PATCH] Distinguish wining and losing FR answers --- web/components/answers/answers-panel.tsx | 33 ++++++++++++++---------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/web/components/answers/answers-panel.tsx b/web/components/answers/answers-panel.tsx index 3af2c286..bde5cbcc 100644 --- a/web/components/answers/answers-panel.tsx +++ b/web/components/answers/answers-panel.tsx @@ -24,7 +24,7 @@ export function AnswersPanel(props: { const { creatorId, resolution, resolutions, totalBets } = contract const answers = useAnswers(contract.id) ?? contract.answers - const [winningAnswers, otherAnswers] = _.partition( + const [winningAnswers, losingAnswers] = _.partition( answers.filter( (answer) => answer.id !== '0' && totalBets[answer.id] > 0.000000001 ), @@ -36,7 +36,7 @@ export function AnswersPanel(props: { resolutions ? -1 * resolutions[answer.id] : 0 ), ..._.sortBy( - resolution ? [] : otherAnswers, + resolution ? [] : losingAnswers, (answer) => -1 * getDpmOutcomeProbability(contract.totalShares, answer.id) ), ] @@ -52,7 +52,11 @@ export function AnswersPanel(props: { 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) => { if (resolveOption === 'CHOOSE') { @@ -89,9 +93,7 @@ export function AnswersPanel(props: { return ( - {(resolveOption === 'CHOOSE' || - resolveOption === 'CHOOSE_MULTIPLE' || - resolution === 'MKT') && + {(resolveOption || resolution) && sortedAnswers.map((answer) => ( ))} - {sortedAnswers.length === 0 && ( -
No answers yet...
- )} - - {!resolveOption && sortedAnswers.length > 0 && ( + {!resolveOption && ( )} + {sortedAnswers.length === 0 && ( +
No answers yet...
+ )} + {tradingAllowed(contract) && (!resolveOption || resolveOption === 'CANCEL') && ( @@ -140,13 +142,18 @@ export function AnswersPanel(props: { function getAnswers( contract: FullContract, - user: User | undefined | null + user: User | undefined | null, + ignoreAnswerOutcomes: string[] ) { const { answers } = contract let outcomes = _.uniq( 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) => getOutcomeProbability(contract, outcome) ).reverse()