From 5886034265405f8deaac9ad1add0a80a3bb6a391 Mon Sep 17 00:00:00 2001 From: Nicolas Gotchac Date: Tue, 20 Dec 2016 02:11:04 +0100 Subject: [PATCH] Add optimize and autocompile toggles --- js/src/util/solidity.js | 4 ++-- js/src/views/WriteContract/writeContract.css | 10 ++++++++++ js/src/views/WriteContract/writeContract.js | 20 ++++++++++++++++++- .../views/WriteContract/writeContractStore.js | 18 ++++++++++++++--- 4 files changed, 46 insertions(+), 6 deletions(-) diff --git a/js/src/util/solidity.js b/js/src/util/solidity.js index f09213ac5..72e8e6d81 100644 --- a/js/src/util/solidity.js +++ b/js/src/util/solidity.js @@ -19,7 +19,7 @@ import solc from 'solc/browser-wrapper'; export default class SolidityUtils { static compile (data, compiler) { - const { sourcecode, build, optimized = 1 } = data; + const { sourcecode, build, optimize } = data; const start = Date.now(); console.log('[solidity] compiling...'); @@ -28,7 +28,7 @@ export default class SolidityUtils { '': 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; console.log(`[solidity] done compiling in ${time}s`); diff --git a/js/src/views/WriteContract/writeContract.css b/js/src/views/WriteContract/writeContract.css index feed8616e..c5cefcf7a 100644 --- a/js/src/views/WriteContract/writeContract.css +++ b/js/src/views/WriteContract/writeContract.css @@ -26,6 +26,16 @@ color: #ccc; } +.toggles { + display: flex; + flex-direction: row; + margin: 1em 0 0; + + > * { + flex: 1; + } +} + .container { padding: 1em 0; display: flex; diff --git a/js/src/views/WriteContract/writeContract.js b/js/src/views/WriteContract/writeContract.js index 5266fb625..c95c09c04 100644 --- a/js/src/views/WriteContract/writeContract.js +++ b/js/src/views/WriteContract/writeContract.js @@ -16,7 +16,7 @@ import React, { PropTypes, Component } from 'react'; import { observer } from 'mobx-react'; -import { MenuItem } from 'material-ui'; +import { MenuItem, Toggle } from 'material-ui'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import CircularProgress from 'material-ui/CircularProgress'; @@ -283,6 +283,24 @@ class WriteContract extends Component { : null } +
+
+ +
+
+ +
+
{ this.renderSolidityVersions() } { this.renderCompilation() } diff --git a/js/src/views/WriteContract/writeContractStore.js b/js/src/views/WriteContract/writeContractStore.js index 3a9a40aab..c16fb5e23 100644 --- a/js/src/views/WriteContract/writeContractStore.js +++ b/js/src/views/WriteContract/writeContractStore.js @@ -66,6 +66,9 @@ export default class WriteContractStore { @observable builds = []; @observable selectedBuild = -1; + @observable autocompile = false; + @observable optimize = false; + @observable showDeployModal = false; @observable showSaveModal = false; @observable showLoadModal = false; @@ -278,7 +281,7 @@ export default class WriteContractStore { const build = this.builds[this.selectedBuild]; const version = build.longVersion; 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); @@ -297,7 +300,8 @@ export default class WriteContractStore { .then(() => { return this.compile({ sourcecode: sourcecode, - build: build + build: build, + optimize: this.optimize }); }) .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) => { const { contracts } = data; @@ -395,7 +407,7 @@ export default class WriteContractStore { if (compile) { this.handleCompile(); - } else { + } else if (this.autocompile) { this.debouncedCompile(); } }