From baf29e7bc6846c1ad4e3e56b83584a437b2d8276 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Wed, 13 May 2020 09:45:12 +0200 Subject: [PATCH] Display turnout (#2732) --- .../src/Overview/DispatchEntry.tsx | 2 +- .../src/Overview/DispatchQueue.tsx | 3 ++- .../page-democracy/src/Overview/Proposal.tsx | 2 +- .../page-democracy/src/Overview/Proposals.tsx | 3 ++- .../src/Overview/Referendum.tsx | 24 +++++++++++++++---- .../src/Overview/Referendums.tsx | 4 +++- packages/react-components/src/Table/index.tsx | 12 ++++++++++ 7 files changed, 41 insertions(+), 9 deletions(-) diff --git a/packages/page-democracy/src/Overview/DispatchEntry.tsx b/packages/page-democracy/src/Overview/DispatchEntry.tsx index 7484a83c32..4f7dfdeacd 100644 --- a/packages/page-democracy/src/Overview/DispatchEntry.tsx +++ b/packages/page-democracy/src/Overview/DispatchEntry.tsx @@ -46,7 +46,7 @@ function DispatchEntry ({ value: { at, image, imageHash, index } }: Props): Reac /> )} - + | null const header = useMemo(() => [ [t('dispatch queue'), 'start', 2], [t('enact')], - [undefined, undefined, 2] + [undefined, undefined], + [undefined, 'hide-small'] ], [t]); return ( diff --git a/packages/page-democracy/src/Overview/Proposal.tsx b/packages/page-democracy/src/Overview/Proposal.tsx index bd9e8c5bdb..8b6ef08386 100644 --- a/packages/page-democracy/src/Overview/Proposal.tsx +++ b/packages/page-democracy/src/Overview/Proposal.tsx @@ -64,7 +64,7 @@ function Proposal ({ className, value: { balance, image, imageHash, index, propo )} - + { [t('proposals'), 'start', 2], [t('proposer'), 'address'], [t('locked')], - [undefined, undefined, 3] + [undefined, undefined, 2], + [undefined, 'hide-small'] ], [t]); return ( diff --git a/packages/page-democracy/src/Overview/Referendum.tsx b/packages/page-democracy/src/Overview/Referendum.tsx index 93c1933eeb..7d399d247d 100644 --- a/packages/page-democracy/src/Overview/Referendum.tsx +++ b/packages/page-democracy/src/Overview/Referendum.tsx @@ -3,13 +3,13 @@ // of the Apache-2.0 license. See the LICENSE file for details. import { DeriveReferendumExt } from '@polkadot/api-derive/types'; -import { BlockNumber } from '@polkadot/types/interfaces'; +import { Balance, BlockNumber } from '@polkadot/types/interfaces'; -import React, { useMemo } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; import styled from 'styled-components'; import { Badge, Button, Icon, LinkExternal } from '@polkadot/react-components'; import { useApi, useCall } from '@polkadot/react-hooks'; -import { BlockToTime } from '@polkadot/react-query'; +import { BlockToTime, FormatBalance } from '@polkadot/react-query'; import { formatNumber, isBoolean } from '@polkadot/util'; import { useTranslation } from '../translate'; @@ -28,12 +28,20 @@ function Referendum ({ className, value: { allAye, allNay, image, imageHash, ind const { t } = useTranslation(); const { api } = useApi(); const bestNumber = useCall(api.derive.chain.bestNumber, []); + const totalIssuance = useCall(api.query.balances.totalIssuance, []); + const [turnoutPercentage, setTurnoutPercentage] = useState(''); const { changeAye, changeNay } = useChangeCalc(status.threshold, votedAye, votedNay, votedTotal); const threshold = useMemo( () => status.threshold.type.toString().replace('majority', ' majority '), [status] ); + useEffect((): void => { + totalIssuance && votedTotal && setTurnoutPercentage( + `${((votedTotal.muln(10000).div(totalIssuance).toNumber()) / 100).toFixed(2)}%` + ); + }, [totalIssuance, votedTotal]); + if (!bestNumber || status.end.sub(bestNumber).lten(0)) { return null; } @@ -48,6 +56,14 @@ function Referendum ({ className, value: { allAye, allNay, image, imageHash, ind imageHash={imageHash} proposal={image?.proposal} /> + + {turnoutPercentage && ( + <> + +
{turnoutPercentage}
+ + )} + {t('{{blocks}} blocks', { replace: { blocks: formatNumber(remainBlock) } })} @@ -97,7 +113,7 @@ function Referendum ({ className, value: { allAye, allNay, image, imageHash, ind )} - + [ [t('referenda'), 'start', 2], + [t('turnout'), 'hide-medium'], [t('remaining')], [t('activate')], [t('aye')], [t('nay')], - [undefined, undefined, 3] + [undefined, undefined, 2], + [undefined, 'hide-small'] ], [t]); return ( diff --git a/packages/react-components/src/Table/index.tsx b/packages/react-components/src/Table/index.tsx index 586ae1aedd..ac93533e08 100644 --- a/packages/react-components/src/Table/index.tsx +++ b/packages/react-components/src/Table/index.tsx @@ -96,6 +96,18 @@ export default React.memo(styled(Table)` white-space: normal; } } + + &.hide-medium { + @media only screen and (max-width: 1400px) { + display: none; + } + } + + &.hide-small { + @media only screen and (max-width: 1000px) { + display: none; + } + } } } }