// 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 BigNumber from 'bignumber.js'; import { observer } from 'mobx-react'; import React, { Component, PropTypes } from 'react'; import { FormattedMessage } from 'react-intl'; import { Input, InputDateTime, RadioButtons } from '../Form'; import GasPriceSelector from '../GasPriceSelector'; import Store, { CONDITIONS } from './store'; import styles from './gasPriceEditor.css'; const CONDITION_VALUES = [ { label: ( ), key: CONDITIONS.NONE }, { label: ( ), key: CONDITIONS.BLOCK }, { label: ( ), key: CONDITIONS.TIME } ]; @observer export default class GasPriceEditor extends Component { static contextTypes = { api: PropTypes.object.isRequired }; static propTypes = { children: PropTypes.node, onChange: PropTypes.func, store: PropTypes.object.isRequired } static Store = Store; render () { const { api } = this.context; const { children, store } = this.props; const { conditionType, errorGas, errorPrice, errorTotal, estimated, gas, histogram, price, priceDefault, totalValue } = store; const eth = api.util.fromWei(totalValue).toFormat(); const gasLabel = `gas (estimated: ${new BigNumber(estimated).toFormat()})`; const priceLabel = `price (current: ${new BigNumber(priceDefault).toFormat()})`; return (
} name='conditionType' onChange={ this.onChangeConditionType } value={ conditionType } values={ CONDITION_VALUES } /> { this.renderConditions() }
{ children }
); } renderConditions () { const { conditionType, condition, conditionBlockError } = this.props.store; if (conditionType === CONDITIONS.NONE) { return null; } if (conditionType === CONDITIONS.BLOCK) { return (
} label={ } min={ 1 } onChange={ this.onChangeConditionBlock } type='number' value={ condition.block } />
); } return (
} label={ } onChange={ this.onChangeConditionDateTime } value={ condition.time } />
); } onEditGas = (event, gas) => { const { store, onChange } = this.props; store.setGas(gas); onChange && onChange('gas', gas); } onEditGasPrice = (event, price) => { const { store, onChange } = this.props; store.setPrice(price); onChange && onChange('gasPrice', price); } onChangeConditionType = (event, conditionType) => { this.props.store.setConditionType(conditionType); } onChangeConditionBlock = (event, blockNumber) => { this.props.store.setConditionBlockNumber(blockNumber); } onChangeConditionDateTime = (event, datetime) => { this.props.store.setConditionDateTime(datetime); } }