Summary.tsx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /* eslint-disable @typescript-eslint/camelcase */
  2. // Copyright 2017-2019 @polkadot/app-democracy authors & contributors
  3. // This software may be modified and distributed under the terms
  4. // of the Apache-2.0 license. See the LICENSE file for details.
  5. import { I18nProps } from '@polkadot/react-components/types';
  6. import BN from 'bn.js';
  7. import React from 'react';
  8. import { SummaryBox, CardSummary } from '@polkadot/react-components';
  9. import { withCalls } from '@polkadot/react-api';
  10. import { formatBalance, formatNumber } from '@polkadot/util';
  11. import translate from '../translate';
  12. interface Props extends I18nProps {
  13. treasury_proposalCount?: BN;
  14. treasury_approvals?: BN[];
  15. treasury_pot?: BN;
  16. }
  17. function Summary ({ treasury_proposalCount, treasury_approvals, treasury_pot, t }: Props): React.ReactElement<Props> {
  18. const value = treasury_pot && treasury_pot.gtn(0)
  19. ? treasury_pot.toString()
  20. : null;
  21. return (
  22. <SummaryBox>
  23. <section>
  24. <CardSummary label={t('proposals')}>
  25. {formatNumber(treasury_proposalCount)}
  26. </CardSummary>
  27. <CardSummary label={t('approved')}>
  28. {treasury_approvals ? treasury_approvals.length : '0'}
  29. </CardSummary>
  30. </section>
  31. <section>
  32. {value && (
  33. <CardSummary label={t('pot')}>
  34. {formatBalance(value, false)}{formatBalance.calcSi(value).value}
  35. </CardSummary>
  36. )}
  37. </section>
  38. </SummaryBox>
  39. );
  40. }
  41. export default translate(
  42. withCalls<Props>(
  43. 'query.treasury.proposalCount',
  44. 'query.treasury.approvals',
  45. 'query.treasury.pot'
  46. )(Summary)
  47. );