// Copyright 2015, 2016 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity. If not, see . import moment from 'moment'; import React, { Component, PropTypes } from 'react'; import { txLink, addressLink } from '~/3rdparty/etherscan/links'; import IdentityIcon from '../../IdentityIcon'; import IdentityName from '../../IdentityName'; import MethodDecoding from '../../MethodDecoding'; import styles from '../txList.css'; export default class TxRow extends Component { static contextTypes = { api: PropTypes.object.isRequired }; static propTypes = { tx: PropTypes.object.isRequired, address: PropTypes.string.isRequired, isTest: PropTypes.bool.isRequired, block: PropTypes.object, historic: PropTypes.bool, className: PropTypes.string }; static defaultProps = { historic: true }; render () { const { tx, address, isTest, historic, className } = this.props; return ( { this.renderBlockNumber(tx.blockNumber) } { this.renderAddress(tx.from) } { this.renderEtherValue(tx.value) }
{ `${tx.hash.substr(2, 6)}...${tx.hash.slice(-6)}` }
{ this.renderAddress(tx.to) } ); } renderAddress (address) { const { isTest } = this.props; let esLink = null; if (address) { esLink = ( ); } return (
{ esLink || 'DEPLOY' }
); } renderEtherValue (_value) { const { api } = this.context; const value = api.util.fromWei(_value); if (value.eq(0)) { return
{ ' ' }
; } return (
{ value.toFormat(5) }ETH
); } renderBlockNumber (_blockNumber) { const { block } = this.props; const blockNumber = _blockNumber.toNumber(); return (
{ blockNumber && block ? moment(block.timestamp).fromNow() : null }
{ blockNumber ? _blockNumber.toFormat() : 'Pending' }
); } }