From d6c9a030370848e9f2bd00ae366ea03171957a8f Mon Sep 17 00:00:00 2001 From: Jaco Date: Mon, 2 Jan 2023 12:36:36 +0200 Subject: [PATCH] Move external links to referendum expansion (#8671) * Move external links to referendum expansion * Additional ref info --- .../page-referenda/src/Referenda/Group.tsx | 6 +- .../src/Referenda/RefOngoing.tsx | 1 + .../src/Referenda/Referendum.tsx | 87 +++++++++++++++---- .../page-referenda/src/Referenda/Votes.tsx | 2 + packages/react-components/src/Table/index.tsx | 8 ++ 5 files changed, 83 insertions(+), 21 deletions(-) diff --git a/packages/page-referenda/src/Referenda/Group.tsx b/packages/page-referenda/src/Referenda/Group.tsx index 145aeb6541..6dc3b870dc 100644 --- a/packages/page-referenda/src/Referenda/Group.tsx +++ b/packages/page-referenda/src/Referenda/Group.tsx @@ -45,7 +45,7 @@ function Group ({ activeIssuance, className, isMember, members, palletReferenda, ), isExpanded && trackInfo && ( - Hello expanded + ) ], @@ -56,8 +56,8 @@ function Group ({ activeIssuance, className, isMember, members, palletReferenda, () => [ [ [trackName ? <>{trackName}
{trackInfo?.text}
: t('referenda'), 'start', 5], - [undefined, 'number', 3], - [headerButton] + [undefined, 'number', 2], + [headerButton, 'media--1000'] ], trackName ? `track:${trackName}` diff --git a/packages/page-referenda/src/Referenda/RefOngoing.tsx b/packages/page-referenda/src/Referenda/RefOngoing.tsx index ed43c24014..5986b83589 100644 --- a/packages/page-referenda/src/Referenda/RefOngoing.tsx +++ b/packages/page-referenda/src/Referenda/RefOngoing.tsx @@ -126,6 +126,7 @@ function Ongoing ({ isMember, members, palletReferenda, palletVote, ranks, track /> diff --git a/packages/page-referenda/src/Referenda/Referendum.tsx b/packages/page-referenda/src/Referenda/Referendum.tsx index 6c418ced6b..2b7eb92491 100644 --- a/packages/page-referenda/src/Referenda/Referendum.tsx +++ b/packages/page-referenda/src/Referenda/Referendum.tsx @@ -302,6 +302,27 @@ function getChartProps (bestNumber: BN, blockInterval: BN, chartProps: ChartResu }); } +function extractInfo (info: PalletReferendaReferendumInfoConvictionVotingTally | PalletReferendaReferendumInfoRankedCollectiveTally): { enactAt: { at: boolean, blocks: BN } | null, nextAlarm: null | BN, submittedIn: null | BN } { + let enactAt: { at: boolean, blocks: BN } | null = null; + let nextAlarm: BN | null = null; + let submittedIn: BN | null = null; + + if (info.isOngoing) { + const { alarm, enactment, submitted } = info.asOngoing; + + enactAt = { + at: enactment.isAt, + blocks: enactment.isAt + ? enactment.asAt + : enactment.asAfter + }; + nextAlarm = alarm.unwrapOr([null])[0]; + submittedIn = submitted; + } + + return { enactAt, nextAlarm, submittedIn }; +} + function Referendum (props: Props): React.ReactElement { const { t } = useTranslation(); const bestNumber = useBestNumber(); @@ -326,6 +347,11 @@ function Referendum (props: Props): React.ReactElement { [bestNumber, blockInterval, chartResult, id, isExpanded, t, track] ); + const { enactAt, nextAlarm, submittedIn } = useMemo( + () => extractInfo(info), + [info] + ); + const chartLegend = useMemo( () => [ [ @@ -344,29 +370,25 @@ function Referendum (props: Props): React.ReactElement { return ( <> - +

{formatNumber(id)}

- - + - - {chartResult && ( - - )} - - - {chartProps && isExpanded && ( - + + + + {chartProps && (

{t('approval / {{percent}}%', { replace: { percent: chartProps[0].progress.percent.toFixed(1) } })}

@@ -383,8 +405,37 @@ function Referendum (props: Props): React.ReactElement { />
- - )} + )} + + + + + + {submittedIn && ( + <> +
{t('Submitted at')}
+ + + )} + {enactAt && ( + <> +
{enactAt.at ? t('Enact at') : t('Enact after')}
+ + + )} + {nextAlarm && ( + <> +
{t('Next alarm')}
+ + + )} +
+
+ ); diff --git a/packages/page-referenda/src/Referenda/Votes.tsx b/packages/page-referenda/src/Referenda/Votes.tsx index 4055329c48..624baca2f7 100644 --- a/packages/page-referenda/src/Referenda/Votes.tsx +++ b/packages/page-referenda/src/Referenda/Votes.tsx @@ -76,6 +76,7 @@ function Votes ({ className = '', id, isConvictionVote, palletVote, tally }: Pro return (