diff --git a/src/app/editor/contextView.js b/src/app/editor/contextView.js
index b4a3df4485..ef957b079e 100644
--- a/src/app/editor/contextView.js
+++ b/src/app/editor/contextView.js
@@ -42,6 +42,15 @@ var css = csjs`
float : right;
margin-left : 15px;
}
+ .gasEstimation {
+ margin-left: 15px;
+ display: flex;
+ align-items: center;
+ }
+ .gasStationIcon {
+ height: 13px;
+ margin-right: 5px;
+ }
`
/*
@@ -159,7 +168,14 @@ class ContextView {
${references}
+ ${showGasEstimation()}
`
+
+ function showGasEstimation () {
+ var estimatedGas = self._api.contextualListener.gasEstimation(node) + ' gas'
+ if (node.name === 'FunctionDefinition' && !node.attributes.isConstructor) var el = yo`
${estimatedGas}
`
+ return el
+ }
}
}
diff --git a/src/app/editor/contextualListener.js b/src/app/editor/contextualListener.js
index 914d16bcb8..ec3e7b0686 100644
--- a/src/app/editor/contextualListener.js
+++ b/src/app/editor/contextualListener.js
@@ -39,9 +39,6 @@ class ContextualListener {
getActiveHighlights () {
return [...this._activeHighlights]
- // return [...this._activeHighlights].sort((a,b) => {
- // return a.position.start - b.position.start
- // })
}
declarationOf (node) {
@@ -94,6 +91,27 @@ class ContextualListener {
}
}
+ _getGasEstimation (results) {
+ this.contractName = Object.keys(results.data.contracts[results.source.target])[0]
+ this.target = results.data.contracts[results.source.target]
+ this.functions = Object.keys(this.target[this.contractName].evm.gasEstimates.external)
+ }
+
+ gasEstimation (node) {
+ if (node.name === 'FunctionDefinition') {
+ var functionName = node.attributes.name
+ var fn
+ for (var x in this.functions) {
+ if (!!~this.functions[x].indexOf(functionName)) {
+ fn = this.functions[x]
+ break
+ }
+ }
+ var estimation = this.target[this.contractName].evm.gasEstimates.external[fn]
+ return estimation
+ }
+ }
+
_highlight (node, compilationResult) {
if (!node) return
var position = this.sourceMappingDecoder.decode(node.src)
@@ -122,6 +140,7 @@ class ContextualListener {
highlights(node.id)
this._highlight(node, compilationResult)
}
+ this._getGasEstimation(compilationResult)
}
_stopHighlighting () {