diff --git a/src/web/display/DisplayQuestion/QuestionFooter.tsx b/src/web/display/DisplayQuestion/QuestionFooter.tsx index ecd37da..bf45809 100644 --- a/src/web/display/DisplayQuestion/QuestionFooter.tsx +++ b/src/web/display/DisplayQuestion/QuestionFooter.tsx @@ -4,7 +4,9 @@ type QualityIndicator = QuestionFragment["qualityIndicators"]; type IndicatorName = keyof QualityIndicator; // this duplication can probably be simplified with typescript magic, but this is good enough for now -type UsedIndicatorName = +export type UsedIndicatorName = + // | "numForecasts" + // | "stars" | "volume" | "numForecasters" | "spread" @@ -13,9 +15,9 @@ type UsedIndicatorName = | "tradeVolume" | "openInterest"; -const qualityIndicatorLabels: { [k in UsedIndicatorName]: string } = { - // numForecasts: null, - // stars: null, +export const qualityIndicatorLabels: { [k in UsedIndicatorName]: string } = { + // numForecasts: "Number of forecasts", + // stars: "Stars", // yesBid: "Yes bid", // yesAsk: "Yes ask", volume: "Volume", @@ -96,6 +98,20 @@ const FirstQualityIndicator: React.FC<{ } }; +export const formatIndicatorValue = ( + value: any, + indicator: UsedIndicatorName, + platform: string +): string => { + return `${getCurrencySymbolIfNeeded({ + indicator, + platform: platform, + })}${formatNumber(value)}${getPercentageSymbolIfNeeded({ + indicator, + platform: platform, + })}`; +}; + const QualityIndicatorsList: React.FC<{ question: QuestionFragment; }> = ({ question }) => { @@ -112,13 +128,7 @@ const QualityIndicatorsList: React.FC<{
{indicatorLabel}:  - {`${getCurrencySymbolIfNeeded({ - indicator, - platform: question.platform.id, - })}${formatNumber(value)}${getPercentageSymbolIfNeeded({ - indicator, - platform: question.platform.id, - })}`} + {formatIndicatorValue(value, indicator, question.platform.id)}
); @@ -182,6 +192,14 @@ function getStarsColor(numstars: number) { return color; } +export function getStarsElement(numStars) { + return ( +
+ {getstars(numStars)} +
+ ); +} + interface Props { question: QuestionFragment; expandFooterToFullWidth: boolean; @@ -197,13 +215,7 @@ export const QuestionFooter: React.FC = ({ expandFooterToFullWidth ? "justify-between" : "" } text-gray-500 mb-2 mt-1`} > -
- {getstars(question.qualityIndicators.stars)} -
+ {getStarsElement(question.qualityIndicators.stars)}
= async ( const QuestionCardContents: React.FC<{ question: QuestionWithHistoryFragment; }> = ({ question }) => ( -
-

+
+

+

{"Question description"} -

- - +

+ {question.description} + +

+ {"Indicators"} +

+
+ + + + + + + + + + + + + + + + + {!!question.qualityIndicators["numForecasts"] ? ( + + + + + ) : ( + "" + )} + {Object.keys(question.qualityIndicators) + .filter( + (indicator) => + question.qualityIndicators[indicator] != null && + !!qualityIndicatorLabels[indicator] + ) + .map((indicator: UsedIndicatorName) => { + return ( + + + + + ); + })} + +
+ Indicator + + Value +
+ {"Stars"} + + {getStarsElement(question.qualityIndicators["stars"])} +
+ {"Platform"} + {question.platform.label}
+ {"Number of forecasts"} + + {question.qualityIndicators["numForecasts"]} +
+ {qualityIndicatorLabels[indicator]} + + {formatIndicatorValue( + question.qualityIndicators[indicator], + indicator, + question.platform.id + )} +
+
); const QuestionPage: NextPage = ({ id }) => { return ( -
+
{({ data }) => }