// Copyright 2015-2017 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 bytes from 'bytes'; import moment from 'moment'; import React, { Component, PropTypes } from 'react'; import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import { Container, ContainerTitle, Input } from '@parity/ui'; import MiningSettings from '../MiningSettings'; import StatusStore from './store'; import styles from './node.css'; class Node extends Component { static contextTypes = { api: PropTypes.object.isRequired }; static propTypes = { blockNumber: PropTypes.object, blockTimestamp: PropTypes.object, netChain: PropTypes.string, netPeers: PropTypes.object }; statusStore = new StatusStore(this.context.api); componentWillMount () { this.statusStore.startPolling(); } componentWillUnmount () { this.statusStore.stopPolling(); } render () { const { blockNumber, blockTimestamp, netPeers } = this.props; const { hashrate } = this.statusStore; if (!netPeers || !blockNumber) { return null; } const hashrateValue = bytes(hashrate.toNumber()) || 0; const peers = `${netPeers.active}/${netPeers.connected}/${netPeers.max}`; return (
} />
#{ blockNumber.toFormat() }
{ moment(blockTimestamp).calendar() }
} />
{ peers }
} />
{ this.renderMiningSettings() }
{ this.renderSettings() }
); } renderMiningSettings () { const { coinbase, defaultExtraData, extraData, gasFloorTarget, minGasPrice } = this.statusStore; return ( ); } renderNodeName () { const { nodeName } = this.statusStore; return ( { nodeName || ( ) } ); } renderSettings () { const { netChain } = this.props; const { enode, rpcSettings, netPort = '' } = this.statusStore; if (!rpcSettings) { return null; } const rpcPort = rpcSettings.port || ''; return (
} /> } value={ netChain } />
} value={ rpcSettings.enabled ? ( ) : ( ) } />
} value={ netPort.toString() } />
} value={ rpcSettings.interface } />
} value={ rpcPort.toString() } />
} value={ enode } />
); } } function mapStateToProps (state) { const { blockNumber, blockTimestamp, netChain, netPeers } = state.nodeStatus; return { blockNumber, blockTimestamp, netChain, netPeers }; } export default connect( mapStateToProps, null )(Node);