Allow boolean dropdowns for contract deploy (#3077)

* Allow boolean dropdowns for contract deploy

* Be explicit in deployment types

* Extra line as per PR comments
This commit is contained in:
Jaco Greeff 2016-11-02 17:25:21 +01:00 committed by GitHub
parent 9b1f67b2dd
commit f3d4aa43f3

View File

@ -15,8 +15,9 @@
// along with Parity. If not, see <http://www.gnu.org/licenses/>. // along with Parity. If not, see <http://www.gnu.org/licenses/>.
import React, { Component, PropTypes } from 'react'; import React, { Component, PropTypes } from 'react';
import { MenuItem } from 'material-ui';
import { AddressSelect, Form, Input, InputAddressSelect } from '../../../ui'; import { AddressSelect, Form, Input, InputAddressSelect, Select } from '../../../ui';
import { validateAbi } from '../../../util/validation'; import { validateAbi } from '../../../util/validation';
import styles from '../deployContract.css'; import styles from '../deployContract.css';
@ -98,6 +99,7 @@ export default class DetailsStep extends Component {
return inputs.map((input, index) => { return inputs.map((input, index) => {
const onChange = (event, value) => this.onParamChange(index, value); const onChange = (event, value) => this.onParamChange(index, value);
const onChangeBool = (event, _index, value) => this.onParamChange(index, value === 'true');
const onSubmit = (value) => this.onParamChange(index, value); const onSubmit = (value) => this.onParamChange(index, value);
const label = `${input.name}: ${input.type}`; const label = `${input.name}: ${input.type}`;
let inputBox = null; let inputBox = null;
@ -115,6 +117,26 @@ export default class DetailsStep extends Component {
); );
break; break;
case 'bool':
const boolitems = ['false', 'true'].map((bool) => {
return (
<MenuItem
key={ bool }
value={ bool }
label={ bool }>{ bool }</MenuItem>
);
});
inputBox = (
<Select
label={ label }
value={ params[index] ? 'true' : 'false' }
error={ paramsError[index] }
onChange={ onChangeBool }>
{ boolitems }
</Select>
);
break;
default: default:
inputBox = ( inputBox = (
<Input <Input
@ -164,12 +186,28 @@ export default class DetailsStep extends Component {
inputs.forEach((input) => { inputs.forEach((input) => {
switch (input.type) { switch (input.type) {
case 'address':
params.push('0x');
break;
case 'bool':
params.push(false);
break;
case 'bytes':
params.push('0x');
break;
case 'uint':
params.push('0');
break;
case 'string': case 'string':
params.push(''); params.push('');
break; break;
default: default:
params.push('0x'); params.push('0');
break; break;
} }
}); });