Add optimize and autocompile toggles
This commit is contained in:
parent
f70e808056
commit
5886034265
@ -19,7 +19,7 @@ import solc from 'solc/browser-wrapper';
|
|||||||
export default class SolidityUtils {
|
export default class SolidityUtils {
|
||||||
|
|
||||||
static compile (data, compiler) {
|
static compile (data, compiler) {
|
||||||
const { sourcecode, build, optimized = 1 } = data;
|
const { sourcecode, build, optimize } = data;
|
||||||
|
|
||||||
const start = Date.now();
|
const start = Date.now();
|
||||||
console.log('[solidity] compiling...');
|
console.log('[solidity] compiling...');
|
||||||
@ -28,7 +28,7 @@ export default class SolidityUtils {
|
|||||||
'': sourcecode
|
'': sourcecode
|
||||||
};
|
};
|
||||||
|
|
||||||
const compiled = compiler.compile({ sources: input }, optimized);
|
const compiled = compiler.compile({ sources: input }, optimize ? 1 : 0);
|
||||||
|
|
||||||
const time = Math.round((Date.now() - start) / 100) / 10;
|
const time = Math.round((Date.now() - start) / 100) / 10;
|
||||||
console.log(`[solidity] done compiling in ${time}s`);
|
console.log(`[solidity] done compiling in ${time}s`);
|
||||||
|
@ -26,6 +26,16 @@
|
|||||||
color: #ccc;
|
color: #ccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.toggles {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
margin: 1em 0 0;
|
||||||
|
|
||||||
|
> * {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.container {
|
.container {
|
||||||
padding: 1em 0;
|
padding: 1em 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
import React, { PropTypes, Component } from 'react';
|
import React, { PropTypes, Component } from 'react';
|
||||||
import { observer } from 'mobx-react';
|
import { observer } from 'mobx-react';
|
||||||
import { MenuItem } from 'material-ui';
|
import { MenuItem, Toggle } from 'material-ui';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { bindActionCreators } from 'redux';
|
import { bindActionCreators } from 'redux';
|
||||||
import CircularProgress from 'material-ui/CircularProgress';
|
import CircularProgress from 'material-ui/CircularProgress';
|
||||||
@ -283,6 +283,24 @@ class WriteContract extends Component {
|
|||||||
: null
|
: null
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
<div className={ styles.toggles }>
|
||||||
|
<div>
|
||||||
|
<Toggle
|
||||||
|
label='Optimize'
|
||||||
|
labelPosition='right'
|
||||||
|
onToggle={ this.store.handleOptimizeToggle }
|
||||||
|
toggled={ this.store.optimize }
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<Toggle
|
||||||
|
label='Auto-Compile'
|
||||||
|
labelPosition='right'
|
||||||
|
onToggle={ this.store.handleAutocompileToggle }
|
||||||
|
toggled={ this.store.autocompile }
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{ this.renderSolidityVersions() }
|
{ this.renderSolidityVersions() }
|
||||||
{ this.renderCompilation() }
|
{ this.renderCompilation() }
|
||||||
</div>
|
</div>
|
||||||
|
@ -66,6 +66,9 @@ export default class WriteContractStore {
|
|||||||
@observable builds = [];
|
@observable builds = [];
|
||||||
@observable selectedBuild = -1;
|
@observable selectedBuild = -1;
|
||||||
|
|
||||||
|
@observable autocompile = false;
|
||||||
|
@observable optimize = false;
|
||||||
|
|
||||||
@observable showDeployModal = false;
|
@observable showDeployModal = false;
|
||||||
@observable showSaveModal = false;
|
@observable showSaveModal = false;
|
||||||
@observable showLoadModal = false;
|
@observable showLoadModal = false;
|
||||||
@ -278,7 +281,7 @@ export default class WriteContractStore {
|
|||||||
const build = this.builds[this.selectedBuild];
|
const build = this.builds[this.selectedBuild];
|
||||||
const version = build.longVersion;
|
const version = build.longVersion;
|
||||||
const sourcecode = this.sourcecode.replace(/\n+/g, '\n').replace(/\s(\s+)/g, ' ');
|
const sourcecode = this.sourcecode.replace(/\n+/g, '\n').replace(/\s(\s+)/g, ' ');
|
||||||
const hash = sha3(JSON.stringify({ version, sourcecode }));
|
const hash = sha3(JSON.stringify({ version, sourcecode, optimize: this.optimize }));
|
||||||
|
|
||||||
let promise = Promise.resolve(null);
|
let promise = Promise.resolve(null);
|
||||||
|
|
||||||
@ -297,7 +300,8 @@ export default class WriteContractStore {
|
|||||||
.then(() => {
|
.then(() => {
|
||||||
return this.compile({
|
return this.compile({
|
||||||
sourcecode: sourcecode,
|
sourcecode: sourcecode,
|
||||||
build: build
|
build: build,
|
||||||
|
optimize: this.optimize
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
@ -337,6 +341,14 @@ export default class WriteContractStore {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@action handleAutocompileToggle = () => {
|
||||||
|
this.autocompile = !this.autocompile;
|
||||||
|
}
|
||||||
|
|
||||||
|
@action handleOptimizeToggle = () => {
|
||||||
|
this.optimize = !this.optimize;
|
||||||
|
}
|
||||||
|
|
||||||
@action parseCompiled = (data) => {
|
@action parseCompiled = (data) => {
|
||||||
const { contracts } = data;
|
const { contracts } = data;
|
||||||
|
|
||||||
@ -395,7 +407,7 @@ export default class WriteContractStore {
|
|||||||
|
|
||||||
if (compile) {
|
if (compile) {
|
||||||
this.handleCompile();
|
this.handleCompile();
|
||||||
} else {
|
} else if (this.autocompile) {
|
||||||
this.debouncedCompile();
|
this.debouncedCompile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user