From 1ab5aa383279979e2e89fe468ca6eccbde804743 Mon Sep 17 00:00:00 2001 From: yann300 Date: Tue, 12 Sep 2017 15:54:40 +0200 Subject: [PATCH] add renderCall --- src/app/execution/txLogger.js | 45 +++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/src/app/execution/txLogger.js b/src/app/execution/txLogger.js index c9f668f6a6..e4b1d52057 100644 --- a/src/app/execution/txLogger.js +++ b/src/app/execution/txLogger.js @@ -13,6 +13,7 @@ var helper = require('../../lib/helper') var ethJSUtil = require('ethereumjs-util') var BN = ethJSUtil.BN var executionContext = require('../../execution-context') +var modalDialog = require('../ui/modal-dialog-custom') var css = csjs` .log { @@ -74,7 +75,12 @@ class TxLogger { this.opts = opts this.logKnownTX = opts.api.editorpanel.registerCommand('knownTransaction', (args, cmds, append) => { var data = args[0] - var el = renderKnownTransaction(this, data) + var el + if (data.tx.isCall) { + el = renderCall(this, data) + } else { + el = renderKnownTransaction(this, data) + } append(el) }, { activate: true }) @@ -115,6 +121,10 @@ class TxLogger { opts.events.txListener.register('newTransaction', (tx) => { log(this, tx, opts.api) }) + + opts.events.txListener.register('newCall', (tx) => { + log(this, tx, opts.api) + }) } } @@ -139,7 +149,7 @@ function renderKnownTransaction (self, data) { self.event.trigger('debugRequested', [data.tx.hash]) } var tx = yo` - +
${context(self, {from, to, data})}
@@ -175,6 +185,31 @@ function renderKnownTransaction (self, data) { return tx } +function renderCall (self, data) { + function debug () { + if (data.tx.envMode === 'vm') { + self.event.trigger('debugRequested', [data.tx.hash]) + } else { + modalDialog.alert('Cannot debug this call. Debugging calls is only possible in JavaScript VM mode.') + } + } + var to = data.resolvedData.contractName + '.' + data.resolvedData.fn + ' ' + helper.shortenHexData(data.tx.to) + var from = data.tx.from ? data.tx.from : ' - ' + var input = data.tx.input ? helper.shortenHexData(data.tx.input) : '' + var tx = yo` + +
+ [call] from:${from}, to:${to}, data:${input}, return: +
+ +
+
+
${JSON.stringify(value(data.resolvedData.decodedReturnValue), null, '\t')}
+
+ ` + return tx +} + function renderUnknownTransaction (self, data) { var from = data.tx.from var to = data.tx.to @@ -182,7 +217,7 @@ function renderUnknownTransaction (self, data) { self.event.trigger('debugRequested', [data.tx.hash]) } var tx = yo` - +
${context(self, {from, to, data})}
@@ -231,7 +266,7 @@ function context (self, opts) { if (executionContext.getProvider() === 'vm') { return yo`[vm] from:${from}, to:${to}, value:${value(val)} wei, data:${input}, ${logs} logs, hash:${hash}` } else if (executionContext.getProvider() !== 'vm' && data.resolvedData) { - return yo`[block:${block} txIndex:${i}] from:${from}, to:${to}, value:${value(val)} wei` + return yo`[block:${block} txIndex:${i}] from:${from}, to:${to}, value:${value(val)} wei, ${logs} logs, data:${input}, hash:${hash}` } else { to = helper.shortenHexData(to) hash = helper.shortenHexData(data.tx.blockHash) @@ -247,7 +282,7 @@ function value (v) { ret.push(value(v[k])) } return ret - } else if (BN.isBN(v)) { + } else if (BN.isBN(v) || (v.constructor && v.constructor.name === 'BigNumber')) { return v.toString(10) } else if (v.indexOf && v.indexOf('0x') === 0) { return (new BN(v.replace('0x', ''), 16)).toString(10)