parent
1daf991cee
commit
1220a3ee21
@ -0,0 +1,126 @@ |
|||||||
|
'use strict' |
||||||
|
var csjs = require('csjs-inject') |
||||||
|
var CodeListView = require('../remix-debugger/src/ui/CodeListView') |
||||||
|
var CalldataPanel = require('../remix-debugger/src/ui/CalldataPanel') |
||||||
|
var MemoryPanel = require('../remix-debugger/src/ui/MemoryPanel') |
||||||
|
var CallstackPanel = require('../remix-debugger/src/ui/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') |
||||||
|
var StepDetail = require('../remix-debugger/src/ui/StepDetail') |
||||||
|
var DropdownPanel = require('../remix-debugger/src/ui/DropdownPanel') |
||||||
|
var SolidityState = require('../remix-debugger/src/ui/SolidityState') |
||||||
|
var SolidityLocals = require('../remix-debugger/src/ui/SolidityLocals') |
||||||
|
var remixDebug = require('remix-debug') |
||||||
|
var StorageResolver = remixDebug.storage.StorageResolver |
||||||
|
var yo = require('yo-yo') |
||||||
|
|
||||||
|
var css = csjs` |
||||||
|
.asmCode { |
||||||
|
float: left; |
||||||
|
width: 50%; |
||||||
|
} |
||||||
|
.stepDetail { |
||||||
|
} |
||||||
|
.vmheadView { |
||||||
|
margin-top:10px; |
||||||
|
} |
||||||
|
` |
||||||
|
|
||||||
|
function VmDebugger (_parentUI, _traceManager, _codeManager, _solidityProxy, _callTree) { |
||||||
|
let _parent = _parentUI.debugger |
||||||
|
var self = this |
||||||
|
this.view |
||||||
|
this.asmCode = new CodeListView(_parent, _codeManager) |
||||||
|
this.stackPanel = new StackPanel(_parentUI, _traceManager) |
||||||
|
this.storagePanel = new StoragePanel(_parentUI, _traceManager) |
||||||
|
this.memoryPanel = new MemoryPanel(_parentUI, _traceManager) |
||||||
|
this.calldataPanel = new CalldataPanel(_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) |
||||||
|
|
||||||
|
/* Return values - */ |
||||||
|
this.returnValuesPanel = new DropdownPanel('Return Value', {json: true}) |
||||||
|
this.returnValuesPanel.data = {} |
||||||
|
_parentUI.event.register('indexChanged', this.returnValuesPanel, function (index) { |
||||||
|
if (!self.view) return |
||||||
|
var innerself = this |
||||||
|
_traceManager.getReturnValue(index, function (error, returnValue) { |
||||||
|
if (error) { |
||||||
|
innerself.update([error]) |
||||||
|
} else if (_parentUI.currentStepIndex === index) { |
||||||
|
innerself.update([returnValue]) |
||||||
|
} |
||||||
|
}) |
||||||
|
}) |
||||||
|
/* Return values - */ |
||||||
|
|
||||||
|
this.fullStoragesChangesPanel = new FullStoragesChangesPanel(_parentUI, _traceManager) |
||||||
|
|
||||||
|
_parent.event.register('newTraceLoaded', this, function () { |
||||||
|
if (!self.view) return |
||||||
|
var storageResolver = new StorageResolver({web3: _parent.web3}) |
||||||
|
self.storagePanel.storageResolver = storageResolver |
||||||
|
self.solidityState.storageResolver = storageResolver |
||||||
|
self.solidityLocals.storageResolver = storageResolver |
||||||
|
self.fullStoragesChangesPanel.storageResolver = storageResolver |
||||||
|
self.asmCode.basicPanel.show() |
||||||
|
self.stackPanel.basicPanel.show() |
||||||
|
self.storagePanel.basicPanel.show() |
||||||
|
self.memoryPanel.basicPanel.show() |
||||||
|
self.calldataPanel.basicPanel.show() |
||||||
|
self.callstackPanel.basicPanel.show() |
||||||
|
}) |
||||||
|
_parent.event.register('traceUnloaded', this, function () { |
||||||
|
if (!self.view) return |
||||||
|
}) |
||||||
|
_parent.callTree.event.register('callTreeReady', () => { |
||||||
|
if (!self.view) return |
||||||
|
if (_parent.callTree.reducedTrace.length) { |
||||||
|
self.solidityLocals.basicPanel.show() |
||||||
|
self.solidityState.basicPanel.show() |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
VmDebugger.prototype.renderHead = function () { |
||||||
|
var headView = yo`<div id='vmheadView' class=${css.vmheadView}>
|
||||||
|
<div> |
||||||
|
<div class=${css.asmCode}>${this.asmCode.render()}</div> |
||||||
|
<div class=${css.stepDetail}>${this.stepDetail.render()}</div> |
||||||
|
</div> |
||||||
|
</div>` |
||||||
|
if (!this.headView) { |
||||||
|
this.headView = headView |
||||||
|
} |
||||||
|
return headView |
||||||
|
} |
||||||
|
|
||||||
|
VmDebugger.prototype.remove = function () { |
||||||
|
// used to stop listenning on event. bad and should be "refactored"
|
||||||
|
this.view = null |
||||||
|
} |
||||||
|
|
||||||
|
VmDebugger.prototype.render = function () { |
||||||
|
var view = yo`<div id='vmdebugger'>
|
||||||
|
<div> |
||||||
|
${this.solidityLocals.render()} |
||||||
|
${this.solidityState.render()} |
||||||
|
${this.stackPanel.render()} |
||||||
|
${this.memoryPanel.render()} |
||||||
|
${this.storagePanel.render()} |
||||||
|
${this.callstackPanel.render()} |
||||||
|
${this.calldataPanel.render()} |
||||||
|
${this.returnValuesPanel.render()} |
||||||
|
${this.fullStoragesChangesPanel.render()} |
||||||
|
</div> |
||||||
|
</div>` |
||||||
|
if (!this.view) { |
||||||
|
this.view = view |
||||||
|
} |
||||||
|
return view |
||||||
|
} |
||||||
|
|
||||||
|
module.exports = VmDebugger |
Loading…
Reference in new issue