diff --git a/src/app/debugger/debuggerUI/VmDebugger.js b/src/app/debugger/debuggerUI/VmDebugger.js index 0a7dc69d00..f9c3739c63 100644 --- a/src/app/debugger/debuggerUI/VmDebugger.js +++ b/src/app/debugger/debuggerUI/VmDebugger.js @@ -3,7 +3,7 @@ var csjs = require('csjs-inject') var CodeListView = require('./vmDebugger/CodeListView') var CalldataPanel = require('./vmDebugger/CalldataPanel') var MemoryPanel = require('./vmDebugger/MemoryPanel') -var CallstackPanel = require('../remix-debugger/src/ui/CallstackPanel') +var CallstackPanel = require('./vmDebugger/CallstackPanel') var StackPanel = require('../remix-debugger/src/ui/StackPanel') var StoragePanel = require('../remix-debugger/src/ui/StoragePanel') var FullStoragesChangesPanel = require('../remix-debugger/src/ui/FullStoragesChanges') @@ -70,9 +70,10 @@ function VmDebugger (_parentUI, _traceManager, _codeManager, _solidityProxy, _ca }) }) + this.callstackPanel = new CallstackPanel(_parentUI, _traceManager) + this.stackPanel = new StackPanel(_parentUI, _traceManager) this.storagePanel = new StoragePanel(_parentUI, _traceManager) - this.callstackPanel = new CallstackPanel(_parentUI, _traceManager) this.stepDetail = new StepDetail(_parentUI, _traceManager) this.solidityState = new SolidityState(_parentUI, _traceManager, _codeManager, _solidityProxy) this.solidityLocals = new SolidityLocals(_parentUI, _traceManager, _callTree) diff --git a/src/app/debugger/debuggerUI/vmDebugger/CallstackPanel.js b/src/app/debugger/debuggerUI/vmDebugger/CallstackPanel.js new file mode 100644 index 0000000000..0e60aa5285 --- /dev/null +++ b/src/app/debugger/debuggerUI/vmDebugger/CallstackPanel.js @@ -0,0 +1,34 @@ +'use strict' +var DropdownPanel = require('./DropdownPanel') +var yo = require('yo-yo') + +function CallstackPanel (_parent, _traceManager) { + this.parent = _parent + this.traceManager = _traceManager + this.basicPanel = new DropdownPanel('Call Stack', {json: true}) + this.init() +} + +CallstackPanel.prototype.render = function () { + return yo`
${this.basicPanel.render()}
` +} + +CallstackPanel.prototype.init = function () { + var self = this + this.parent.event.register('indexChanged', this, function (index) { + if (index < 0) return + if (self.parent.currentStepIndex !== index) return + + self.traceManager.getCallStackAt(index, function (error, callstack) { + if (error) { + console.log(error) + self.basicPanel.update({}) + } else if (self.parent.currentStepIndex === index) { + self.basicPanel.update(callstack) + } + }) + }) +} + +module.exports = CallstackPanel +