Gaëtan Renaudeau
7 years ago
3 changed files with 127 additions and 103 deletions
@ -1,103 +0,0 @@ |
|||
// @flow
|
|||
|
|||
import React, { PureComponent } from 'react' |
|||
import styled from 'styled-components' |
|||
|
|||
import type { Account, Currency } from '@ledgerhq/live-common/lib/types' |
|||
|
|||
import Chart from 'components/base/Chart' |
|||
import Bar from 'components/base/Bar' |
|||
import Box, { Card } from 'components/base/Box' |
|||
import CalculateBalance from 'components/CalculateBalance' |
|||
import FormattedVal from 'components/base/FormattedVal' |
|||
import Ellipsis from 'components/base/Ellipsis' |
|||
import CryptoCurrencyIcon from 'components/CryptoCurrencyIcon' |
|||
import DeltaChange from '../DeltaChange' |
|||
|
|||
const Wrapper = styled(Card).attrs({ |
|||
p: 4, |
|||
flex: 1, |
|||
})` |
|||
cursor: ${p => (p.onClick ? 'pointer' : 'default')}; |
|||
` |
|||
|
|||
class AccountCard extends PureComponent<{ |
|||
counterValue: Currency, |
|||
account: Account, |
|||
onClick?: Account => void, |
|||
daysCount: number, |
|||
}> { |
|||
render() { |
|||
const { counterValue, account, onClick, daysCount, ...props } = this.props |
|||
return ( |
|||
<Wrapper onClick={onClick ? () => onClick(account) : null} {...props}> |
|||
<Box flow={4}> |
|||
<Box horizontal ff="Open Sans|SemiBold" flow={3} alignItems="center"> |
|||
<Box |
|||
alignItems="center" |
|||
justifyContent="center" |
|||
style={{ color: account.currency.color }} |
|||
> |
|||
<CryptoCurrencyIcon currency={account.currency} size={20} /> |
|||
</Box> |
|||
<Box grow> |
|||
<Box style={{ textTransform: 'uppercase' }} fontSize={0} color="graphite"> |
|||
{account.currency.name} |
|||
</Box> |
|||
<Ellipsis fontSize={4} color="dark"> |
|||
{account.name} |
|||
</Ellipsis> |
|||
</Box> |
|||
</Box> |
|||
<Bar size={1} color="fog" /> |
|||
<Box justifyContent="center"> |
|||
<FormattedVal |
|||
alwaysShowSign={false} |
|||
color="dark" |
|||
unit={account.unit} |
|||
showCode |
|||
val={account.balance} |
|||
/> |
|||
</Box> |
|||
</Box> |
|||
<CalculateBalance counterValue={counterValue} accounts={[account]} daysCount={daysCount}> |
|||
{({ isAvailable, balanceHistory, balanceStart, balanceEnd }) => ( |
|||
<Box flow={4}> |
|||
<Box flow={2} horizontal> |
|||
<Box justifyContent="center"> |
|||
{isAvailable ? ( |
|||
<FormattedVal |
|||
animateTicker |
|||
unit={counterValue.units[0]} |
|||
val={balanceEnd} |
|||
alwaysShowSign={false} |
|||
showCode |
|||
fontSize={3} |
|||
color="graphite" |
|||
/> |
|||
) : null} |
|||
</Box> |
|||
<Box grow justifyContent="center"> |
|||
{isAvailable && !balanceStart.isZero() ? ( |
|||
<DeltaChange from={balanceStart} to={balanceEnd} alwaysShowSign fontSize={3} /> |
|||
) : null} |
|||
</Box> |
|||
</Box> |
|||
<Chart |
|||
data={balanceHistory} |
|||
color={account.currency.color} |
|||
height={52} |
|||
hideAxis |
|||
isInteractive={false} |
|||
id={`account-chart-${account.id}`} |
|||
unit={account.unit} |
|||
/> |
|||
</Box> |
|||
)} |
|||
</CalculateBalance> |
|||
</Wrapper> |
|||
) |
|||
} |
|||
} |
|||
|
|||
export default AccountCard |
@ -0,0 +1,33 @@ |
|||
// @flow
|
|||
|
|||
import React, { PureComponent } from 'react' |
|||
import type { CryptoCurrency } from '@ledgerhq/live-common/lib/types' |
|||
import Box from 'components/base/Box' |
|||
import Ellipsis from 'components/base/Ellipsis' |
|||
import CryptoCurrencyIcon from 'components/CryptoCurrencyIcon' |
|||
|
|||
class AccountCardHeader extends PureComponent<{ |
|||
currency: CryptoCurrency, |
|||
accountName: string, |
|||
}> { |
|||
render() { |
|||
const { currency, accountName } = this.props |
|||
return ( |
|||
<Box horizontal ff="Open Sans|SemiBold" flow={3} alignItems="center"> |
|||
<Box alignItems="center" justifyContent="center" style={{ color: currency.color }}> |
|||
<CryptoCurrencyIcon currency={currency} size={20} /> |
|||
</Box> |
|||
<Box grow> |
|||
<Box style={{ textTransform: 'uppercase' }} fontSize={0} color="graphite"> |
|||
{currency.name} |
|||
</Box> |
|||
<Ellipsis fontSize={4} color="dark"> |
|||
{accountName} |
|||
</Ellipsis> |
|||
</Box> |
|||
</Box> |
|||
) |
|||
} |
|||
} |
|||
|
|||
export default AccountCardHeader |
@ -0,0 +1,94 @@ |
|||
// @flow
|
|||
|
|||
import React, { PureComponent } from 'react' |
|||
import styled from 'styled-components' |
|||
|
|||
import type { Account, Currency } from '@ledgerhq/live-common/lib/types' |
|||
|
|||
import Chart from 'components/base/Chart' |
|||
import Bar from 'components/base/Bar' |
|||
import Box, { Card } from 'components/base/Box' |
|||
import CalculateBalance from 'components/CalculateBalance' |
|||
import FormattedVal from 'components/base/FormattedVal' |
|||
import DeltaChange from 'components/DeltaChange' |
|||
import AccountCardHeader from './Header' |
|||
|
|||
const Wrapper = styled(Card).attrs({ |
|||
p: 4, |
|||
flex: 1, |
|||
})` |
|||
cursor: ${p => (p.onClick ? 'pointer' : 'default')}; |
|||
` |
|||
|
|||
class AccountCard extends PureComponent<{ |
|||
counterValue: Currency, |
|||
account: Account, |
|||
onClick: Account => void, |
|||
daysCount: number, |
|||
}> { |
|||
renderBody = ({ isAvailable, balanceHistory, balanceStart, balanceEnd }: *) => { |
|||
const { counterValue, account } = this.props |
|||
return ( |
|||
<Box flow={4}> |
|||
<Box flow={2} horizontal> |
|||
<Box justifyContent="center"> |
|||
{isAvailable ? ( |
|||
<FormattedVal |
|||
animateTicker |
|||
unit={counterValue.units[0]} |
|||
val={balanceEnd} |
|||
alwaysShowSign={false} |
|||
showCode |
|||
fontSize={3} |
|||
color="graphite" |
|||
/> |
|||
) : null} |
|||
</Box> |
|||
<Box grow justifyContent="center"> |
|||
{isAvailable && !balanceStart.isZero() ? ( |
|||
<DeltaChange from={balanceStart} to={balanceEnd} alwaysShowSign fontSize={3} /> |
|||
) : null} |
|||
</Box> |
|||
</Box> |
|||
<Chart |
|||
data={balanceHistory} |
|||
color={account.currency.color} |
|||
height={52} |
|||
hideAxis |
|||
isInteractive={false} |
|||
id={`account-chart-${account.id}`} |
|||
unit={account.unit} |
|||
/> |
|||
</Box> |
|||
) |
|||
} |
|||
onClick = () => { |
|||
const { account, onClick } = this.props |
|||
onClick(account) |
|||
} |
|||
render() { |
|||
const { counterValue, account, onClick, daysCount, ...props } = this.props |
|||
return ( |
|||
<Wrapper onClick={this.onClick} {...props}> |
|||
<Box flow={4}> |
|||
<AccountCardHeader accountName={account.name} currency={account.currency} /> |
|||
<Bar size={1} color="fog" /> |
|||
<Box justifyContent="center"> |
|||
<FormattedVal |
|||
alwaysShowSign={false} |
|||
color="dark" |
|||
unit={account.unit} |
|||
showCode |
|||
val={account.balance} |
|||
/> |
|||
</Box> |
|||
</Box> |
|||
<CalculateBalance counterValue={counterValue} accounts={[account]} daysCount={daysCount}> |
|||
{this.renderBody} |
|||
</CalculateBalance> |
|||
</Wrapper> |
|||
) |
|||
} |
|||
} |
|||
|
|||
export default AccountCard |
Loading…
Reference in new issue