1 import { connect } from 'react-redux'
2 import {DropdownButton, MenuItem} from 'react-bootstrap'
3 import componentClassNames from 'utility/componentClassNames'
4 import { PageContent, PageTitle, ConsoleSection } from 'features/shared/components'
5 import React from 'react'
6 import styles from './CoreIndex.scss'
7 import actions from 'actions'
10 class CoreIndex extends React.Component {
16 this.handleMiningState = this.handleMiningState.bind(this)
17 this.handleAdvancedOptionChange = this.handleAdvancedOptionChange.bind(this)
18 this.changeBTMamount = this.changeBTMamount.bind(this)
19 this.consolePopup = this.consolePopup.bind(this)
23 if(window.ipcRenderer){
24 window.ipcRenderer.on('btmAmountUnitState', (event, arg) => {
25 this.props.uptdateBtmAmountUnit(arg)
30 changeBTMamount(value) {
31 this.setState({ btmAmountUnit: value })
32 this.props.uptdateBtmAmountUnit(value)
35 handleAdvancedOptionChange(event) {
36 const target = event.target
38 this.props.showNavAdvanced()
40 this.props.hideNavAdvanced()
44 handleMiningState(event){
45 const target = event.target
47 this.props.updateMiningState(true)
49 this.props.updateMiningState(false)
58 lang={this.props.core.lang}
64 let navState = this.props.navAdvancedState === 'advance'
65 let miningState = this.props.core.mingStatus
66 let coreData = this.props.core.coreData
68 const lang = this.props.core.lang
71 <div className={[styles.left, styles.col].join(' ')}>
73 <h4>{lang === 'zh' ? '配置' : 'Configuration'}</h4>
74 <table className={styles.table}>
76 <tr className={styles.row}>
77 <td className={styles.row_label}>{lang === 'zh' ? '核心版本号' : 'Core Versions'}:</td>
78 <td><code>{coreData? coreData['version'] : null}</code></td>
80 <tr className={styles.row}>
81 <td className={styles.row_label}>{lang === 'zh' ? '语言' : 'Language'}:</td>
82 <td>{lang === 'zh' ? '中文' : 'English'}</td>
84 <tr className={styles.row}>
85 <td colSpan={2}><hr /></td>
87 <tr className={styles.row}>
88 <td className={styles.row_label}>{lang === 'zh' ? '高级导航选项' : 'Advanced'}: </td>
90 <label className={styles.switch}>
93 onChange={this.handleAdvancedOptionChange}
96 <span className={styles.slider}></span>
100 <tr className={styles.row}>
101 <td className={styles.row_label}>{lang === 'zh' ? '挖矿' : 'Mining'}: </td>
103 <label className={styles.switch}>
106 onChange={this.handleMiningState}
107 checked={miningState}
109 <span className={styles.slider}></span>
113 <tr className={styles.row}>
114 <td className={styles.row_label} >{lang === 'zh' ? '比原数量单位显示' : 'Unit to show amount in'} </td>
118 id='input-dropdown-amount'
119 title={this.props.core.btmAmountUnit || this.state.btmAmountUnit}
120 onSelect={this.changeBTMamount}
122 <MenuItem eventKey='BTM'>BTM</MenuItem>
123 <MenuItem eventKey='mBTM'>mBTM</MenuItem>
124 <MenuItem eventKey='NEU'>NEU</MenuItem>
134 let requestStatusBlock
138 requestStatusBlock = (<div>loading...</div>)
140 requestStatusBlock = (
142 <h4>{lang === 'zh' ? '网络状态' : 'Network status'}</h4>
143 <table className={styles.table}>
145 <tr className={styles.row} key={'core-listening'}>
146 <td className={styles.row_label}> {lang === 'zh' ? '节点监听' : 'Peer Listening'}:</td>
147 <td className={styles.row_value}>{(coreData['listening'])? (lang === 'zh' ? '连接' : <code>true</code>): (lang === 'zh' ? '断开' : <code>false</code>)}</td>
149 <tr className={styles.row} key={'core-syncing'}>
150 <td className={styles.row_label}> {lang === 'zh' ? '网络同步' : 'Syncing'}:</td>
151 <td className={styles.row_value}>{(coreData['syncing'])? (lang === 'zh' ? '同步中' : <code>true</code>): (lang === 'zh' ? '同步完成' : <code>false</code>)}</td>
153 <tr className={styles.row} key={'core-mining'}>
154 <td className={styles.row_label}> {lang === 'zh' ? '挖矿状态' : 'Mining'}:</td>
155 <td className={styles.row_value}>{(coreData['mining'])? (lang === 'zh' ? '运行' : <code>true</code>): (lang === 'zh' ? '停止' : <code>false</code>)}</td>
157 <tr className={styles.row} key={'core-peerCount'}>
158 <td className={styles.row_label}> {lang === 'zh' ? '连接数' : 'Peer Count'}:</td>
159 <td className={styles.row_value}><code>{String(coreData['peerCount'])}</code></td>
161 <tr className={styles.row} key={'core-currentBlock'}>
162 <td className={styles.row_label}> {lang === 'zh' ? '当前高度' : 'Current Block'}:</td>
163 <td className={styles.row_value}><code>{String(coreData['currentBlock'])}</code></td>
165 <tr className={styles.row} key={'core-highestBlock'}>
166 <td className={styles.row_label}> {lang === 'zh' ? '最高高度' : 'Highest Block'}:</td>
167 <td className={styles.row_value}><code>{String(coreData['highestBlock'])}</code></td>
169 <tr className={styles.row} key={'core-networkID'}>
170 <td className={styles.row_label}> {lang === 'zh' ? '网络ID' : 'Network Id'}:</td>
171 <td className={styles.row_value}><code>{String(coreData['networkId'])}</code></td>
179 let networkStatusBlock = (
180 <div className={[styles.right, styles.col].join(' ')}>
181 {/*<div ref='requestComponent'>*/}
188 <div className={componentClassNames(this, 'flex-container', styles.mainContainer)}>
190 title={lang === 'zh' ? '核心状态' :'Core Status'}
192 <button className='btn btn-link' onClick={this.consolePopup}>
193 <img src={require('images/console-window.svg')}/>
199 <div className={`${styles.flex}`}>
209 const mapStateToProps = (state) => ({
211 navAdvancedState: state.app.navAdvancedState,
214 const mapDispatchToProps = (dispatch) => ({
215 showNavAdvanced: () => dispatch(actions.app.showNavAdvanced),
216 hideNavAdvanced: () => dispatch(actions.app.hideNavAdvanced),
217 uptdateBtmAmountUnit: (param) => dispatch(actions.core.updateBTMAmountUnit(param)),
218 updateMiningState: (param) => dispatch(actions.core.updateMiningState(param)),
219 showModal: (body) => dispatch(actions.app.showModal(
221 actions.app.hideModal,
228 cmd: (data) => dispatch(actions.app.cmd(data))
231 export default connect(