Reformat: common/containers/Tabs/Swap/components/wantToSwapMy.js

This commit is contained in:
Daniel Ternyak 2017-06-19 00:37:17 -05:00
parent f0d00b3815
commit f32a2d6631
1 changed files with 145 additions and 129 deletions

View File

@ -1,150 +1,166 @@
import React, {Component} from 'react';
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import translate from 'translations';
import {combineAndUpper} from 'api/bity';
import { combineAndUpper } from 'api/bity';
class CoinTypeDropDown extends Component {
constructor(props, context) {
super(props, context)
}
constructor(props, context) {
super(props, context);
}
static propTypes = {
kind: PropTypes.any,
onChange: PropTypes.any,
kindOptions: PropTypes.any
};
static propTypes = {
kind: PropTypes.any,
onChange: PropTypes.any,
kindOptions: PropTypes.any
};
render() {
return (
<span className="dropdown">
<select value={this.props.kind}
className="btn btn-default"
onChange={this.props.onChange.bind(this)}>
{
this.props.kindOptions.map((obj, i) => {
return <option value={obj} key={i}>{obj}</option>
})
}
</select>
</span>
)
}
render() {
return (
<span className="dropdown">
<select
value={this.props.kind}
className="btn btn-default"
onChange={this.props.onChange.bind(this)}
>
{this.props.kindOptions.map((obj, i) => {
return <option value={obj} key={i}>{obj}</option>;
})}
</select>
</span>
);
}
}
export default class WantToSwapMy extends Component {
constructor(props, context) {
super(props, context)
constructor(props, context) {
super(props, context);
}
static propTypes = {
bityRates: PropTypes.any,
originAmount: PropTypes.any,
destinationAmount: PropTypes.any,
originKind: PropTypes.string,
destinationKind: PropTypes.string,
destinationKindOptions: PropTypes.array,
originKindOptions: PropTypes.array,
swapOriginKindTo: PropTypes.func,
swapDestinationKindTo: PropTypes.func,
swapOriginAmountTo: PropTypes.func,
swapDestinationAmountTo: PropTypes.func,
swapOriginKindAndDestinationKindAndDestinationOptionsTo: PropTypes.func
};
onClickStartSwap() {}
onChangeOriginAmount = amount => {
let originAmountAsNumber = parseFloat(amount);
if (originAmountAsNumber) {
let pairName = combineAndUpper(
this.props.originKind,
this.props.destinationKind
);
let bityRate = this.props.bityRates[pairName];
this.props.swapOriginAmountTo(originAmountAsNumber);
this.props.swapDestinationAmountTo(originAmountAsNumber * bityRate);
} else {
this.props.swapOriginAmountTo('');
this.props.swapDestinationAmountTo('');
}
};
static propTypes = {
bityRates: PropTypes.any,
originAmount: PropTypes.any,
destinationAmount: PropTypes.any,
originKind: PropTypes.string,
destinationKind: PropTypes.string,
destinationKindOptions: PropTypes.array,
originKindOptions: PropTypes.array,
swapOriginKindTo: PropTypes.func,
swapDestinationKindTo: PropTypes.func,
swapOriginAmountTo: PropTypes.func,
swapDestinationAmountTo: PropTypes.func,
swapOriginKindAndDestinationKindAndDestinationOptionsTo: PropTypes.func
};
onClickStartSwap() {
onChangeDestinationAmount(amount) {
let destinationAmountAsNumber = parseFloat(amount);
if (destinationAmountAsNumber) {
this.props.swapDestinationAmountTo(destinationAmountAsNumber);
let pairName = combineAndUpper(
this.props.destinationKind,
this.props.originKind
);
let bityRate = this.props.bityRates[pairName];
this.props.swapOriginAmountTo(destinationAmountAsNumber * bityRate);
} else {
this.props.swapOriginAmountTo('');
this.props.swapDestinationAmountTo('');
}
}
onChangeOriginAmount = (amount) => {
let originAmountAsNumber = parseFloat(amount);
if (originAmountAsNumber) {
let pairName = combineAndUpper(this.props.originKind, this.props.destinationKind);
let bityRate = this.props.bityRates[pairName];
this.props.swapOriginAmountTo(originAmountAsNumber);
this.props.swapDestinationAmountTo(originAmountAsNumber * bityRate)
} else {
this.props.swapOriginAmountTo('');
this.props.swapDestinationAmountTo('')
}
};
async onChangeDestinationKind(event) {
let newDestinationKind = event.target.value;
this.props.swapDestinationKindTo(newDestinationKind);
let pairName = combineAndUpper(this.props.originKind, newDestinationKind);
let bityRate = this.props.bityRates[pairName];
this.props.swapDestinationAmountTo(
parseFloat(this.props.originAmount) * bityRate
);
}
onChangeDestinationAmount(amount) {
let destinationAmountAsNumber = parseFloat(amount);
if (destinationAmountAsNumber) {
this.props.swapDestinationAmountTo(destinationAmountAsNumber);
let pairName = combineAndUpper(this.props.destinationKind, this.props.originKind);
let bityRate = this.props.bityRates[pairName];
this.props.swapOriginAmountTo(destinationAmountAsNumber * bityRate)
} else {
this.props.swapOriginAmountTo('');
this.props.swapDestinationAmountTo('')
}
}
async onChangeOriginKind(event) {
let newOriginKind = event.target.value;
this.props.swapOriginKindTo(newOriginKind);
// https://github.com/reactjs/redux/issues/1543#issuecomment-201399259
let destinationKind = store.getState().swap.destinationKind;
let pairName = combineAndUpper(newOriginKind, destinationKind);
let bityRate = this.props.bityRates[pairName];
this.props.swapDestinationAmountTo(
parseFloat(this.props.originAmount) * bityRate
);
}
async onChangeDestinationKind(event) {
let newDestinationKind = event.target.value;
this.props.swapDestinationKindTo(newDestinationKind);
let pairName = combineAndUpper(this.props.originKind, newDestinationKind);
let bityRate = this.props.bityRates[pairName];
this.props.swapDestinationAmountTo(parseFloat(this.props.originAmount) * bityRate)
}
render() {
const {
originAmount,
destinationAmount,
originKind,
destinationKind,
destinationKindOptions,
originKindOptions
} = this.props;
async onChangeOriginKind(event) {
let newOriginKind = event.target.value;
this.props.swapOriginKindTo(newOriginKind);
// https://github.com/reactjs/redux/issues/1543#issuecomment-201399259
let destinationKind = store.getState().swap.destinationKind;
let pairName = combineAndUpper(newOriginKind, destinationKind);
let bityRate = this.props.bityRates[pairName];
this.props.swapDestinationAmountTo(parseFloat(this.props.originAmount) * bityRate)
}
return (
<article className="swap-panel">
<h1>{translate('SWAP_init_1')}</h1>
<input
className={`form-control ${this.props.originAmount !== '' &&
this.props.originAmount > 0
? 'is-valid'
: 'is-invalid'}`}
type="number"
placeholder="Amount"
onChange={e => this.onChangeOriginAmount(e.target.value)}
value={originAmount}
/>
render() {
const {
originAmount,
destinationAmount,
originKind,
destinationKind,
destinationKindOptions,
originKindOptions
} = this.props;
<CoinTypeDropDown
kind={originKind}
onChange={this.onChangeOriginKind.bind(this)}
kindOptions={originKindOptions}
/>
return (
<article className="swap-panel">
<h1>{translate('SWAP_init_1')}</h1>
<input
className={`form-control ${(this.props.originAmount !== '' && this.props.originAmount > 0) ? 'is-valid' : 'is-invalid'}`}
type="number"
placeholder="Amount"
onChange={(e) => this.onChangeOriginAmount(e.target.value)}
value={originAmount}/>
<h1>{translate('SWAP_init_2')}</h1>
<CoinTypeDropDown kind={originKind}
onChange={this.onChangeOriginKind.bind(this)}
kindOptions={originKindOptions}/>
<input
className={`form-control ${this.props.destinationAmount !== '' &&
this.props.destinationAmount > 0
? 'is-valid'
: 'is-invalid'}`}
type="number"
placeholder="Amount"
value={destinationAmount}
onChange={e => this.onChangeDestinationAmount(e.target.value)}
/>
<CoinTypeDropDown
kind={destinationKind}
onChange={this.onChangeDestinationKind.bind(this)}
kindOptions={destinationKindOptions}
/>
<h1>{translate('SWAP_init_2')}</h1>
<input
className={`form-control ${(this.props.destinationAmount !== '' && this.props.destinationAmount > 0) ? 'is-valid' : 'is-invalid'}`}
type="number"
placeholder="Amount"
value={destinationAmount}
onChange={(e) => this.onChangeDestinationAmount(e.target.value)}/>
<CoinTypeDropDown kind={destinationKind}
onChange={this.onChangeDestinationKind.bind(this)}
kindOptions={destinationKindOptions}/>
<div className="col-xs-12 clearfix text-center">
<a onClick={this.onClickStartSwap} className="btn btn-info btn-lg">
<span>{translate('SWAP_init_CTA')}</span>
</a>
</div>
</article>
)
}
<div className="col-xs-12 clearfix text-center">
<a onClick={this.onClickStartSwap} className="btn btn-info btn-lg">
<span>{translate('SWAP_init_CTA')}</span>
</a>
</div>
</article>
);
}
}