Merge pull request #712 from ethereum/fixUxInterface

[Debugger] Fix ui
pull/1/head
yann300 7 years ago committed by GitHub
commit 20ed1bf11a
  1. 1
      remix-debugger/package.json
  2. 26
      remix-debugger/src/ui/DropdownPanel.js
  3. 2
      remix-debugger/src/ui/SolidityTypeFormatter.js
  4. 2
      remix-debugger/src/ui/TreeView.js
  5. 22
      remix-debugger/test-browser/test/vmdebugger.js

@ -24,6 +24,7 @@
"babelify": "^7.3.0", "babelify": "^7.3.0",
"browserify": "^13.0.1", "browserify": "^13.0.1",
"browserify-livereload": "^1.0.10", "browserify-livereload": "^1.0.10",
"clipboard-copy": "^1.2.0",
"csjs-inject": "^1.0.1", "csjs-inject": "^1.0.1",
"ethereum-common": "0.0.18", "ethereum-common": "0.0.18",
"ethereumjs-block": "^1.2.2", "ethereumjs-block": "^1.2.2",

@ -1,5 +1,6 @@
'use strict' 'use strict'
var yo = require('yo-yo') var yo = require('yo-yo')
const copy = require('clipboard-copy')
var remixLib = require('remix-lib') var remixLib = require('remix-lib')
var TreeView = require('./TreeView') var TreeView = require('./TreeView')
var EventManager = remixLib.EventManager var EventManager = remixLib.EventManager
@ -11,7 +12,7 @@ var styles = styleGuide.chooser()
var css = csjs` var css = csjs`
.title { .title {
margin-top: 10px; margin-top: 10px;
${styles.rightPanel.debuggerTab.dropdown_Debugger} ${styles.rightPanel.debuggerTab.dropdown_Debugger};
display: flex; display: flex;
align-items: center; align-items: center;
} }
@ -23,15 +24,13 @@ var css = csjs`
margin-right: 5%; margin-right: 5%;
} }
.eyeButton { .eyeButton {
${styles.rightPanel.debuggerTab.button_Debugger}
margin: 3px; margin: 3px;
float: right;
} }
.eyeButton:hover { .eyeButton:hover {
color: ${styles.rightPanel.debuggerTab.button_Debugger_icon_HoverColor}; color: ${styles.rightPanel.debuggerTab.button_Debugger_icon_HoverColor};
} }
.dropdownpanel { .dropdownpanel {
${styles.rightPanel.debuggerTab.dropdown_Debugger} ${styles.rightPanel.debuggerTab.dropdown_Debugger};
width: 100%; width: 100%;
} }
.dropdownrawcontent { .dropdownrawcontent {
@ -94,7 +93,7 @@ DropdownPanel.prototype.update = function (_data, _header) {
this.view.querySelector('.dropdownpanel .dropdowncontent').style.display = 'block' this.view.querySelector('.dropdownpanel .dropdowncontent').style.display = 'block'
this.view.querySelector('.dropdownpanel .dropdowncontent').style.color = styles.appProperties.mainText_Color this.view.querySelector('.dropdownpanel .dropdowncontent').style.color = styles.appProperties.mainText_Color
this.view.querySelector('.dropdownpanel .dropdownrawcontent').innerText = JSON.stringify(_data, null, '\t') this.view.querySelector('.dropdownpanel .dropdownrawcontent').innerText = JSON.stringify(_data, null, '\t')
this.view.querySelector('.dropdownpanel button.btn').style.display = 'block' this.view.querySelector('.title div.btn').style.display = 'block'
this.view.querySelector('.title span').innerText = _header || ' ' this.view.querySelector('.title span').innerText = _header || ' '
this.message('') this.message('')
if (this.json) { if (this.json) {
@ -130,13 +129,12 @@ DropdownPanel.prototype.render = function (overridestyle) {
to {transform:rotate(359deg);} to {transform:rotate(359deg);}
} }
</style> </style>
<div class="${css.title} title" onclick=${function () { self.toggle() }}> <div class="${css.title} title">
<div class="${css.icon} fa fa-caret-right"></div> <div class="${css.icon} fa fa-caret-right" onclick=${function () { self.toggle() }} ></div>
<div class="${css.name}">${this.name}</div><span></span> <div class="${css.name}" onclick=${function () { self.toggle() }} >${this.name}</div><span onclick=${function () { self.toggle() }} ></span>
<div onclick=${function () { self.copyClipboard() }} title='raw' class="${css.eyeButton} btn fa fa-clipboard"></div>
</div> </div>
<div class='dropdownpanel' style='display:none'> <div class='dropdownpanel' style='display:none'>
<button onclick=${function () { self.toggleRaw() }} title='raw' class="${css.eyeButton} btn fa fa-eye" type="button">
</button>
<i class="${css.refresh} fa fa-refresh" aria-hidden="true"></i> <i class="${css.refresh} fa fa-refresh" aria-hidden="true"></i>
<div class='dropdowncontent'>${content}</div> <div class='dropdowncontent'>${content}</div>
<div class='dropdownrawcontent' style='display:none'></div> <div class='dropdownrawcontent' style='display:none'></div>
@ -149,11 +147,9 @@ DropdownPanel.prototype.render = function (overridestyle) {
return view return view
} }
DropdownPanel.prototype.toggleRaw = function () { DropdownPanel.prototype.copyClipboard = function () {
var raw = this.view.querySelector('.dropdownpanel .dropdownrawcontent') var content = this.view.querySelector('.dropdownpanel .dropdownrawcontent')
var formatted = this.view.querySelector('.dropdownpanel .dropdowncontent') if (content) copy(content.innerText ? content.innerText : content.textContent)
raw.style.display = raw.style.display === 'none' ? 'block' : 'none'
formatted.style.display = formatted.style.display === 'none' ? 'block' : 'none'
} }
DropdownPanel.prototype.toggle = function () { DropdownPanel.prototype.toggle = function () {

@ -48,7 +48,7 @@ function extractData (item, parent, key) {
ret.isMapping = true ret.isMapping = true
ret.self = item.type ret.self = item.type
} else { } else {
ret.children = [] ret.children = null
ret.self = item.value ret.self = item.value
ret.type = item.type ret.type = item.type
} }

@ -175,7 +175,7 @@ class TreeView {
ret.isLeaf = false ret.isLeaf = false
} else { } else {
ret.self = item ret.self = item
ret.children = [] ret.children = null
ret.isNode = false ret.isNode = false
ret.isLeaf = true ret.isLeaf = true
} }

@ -39,8 +39,14 @@ function loadTraceNotFound (browser) {
.setValue('#txinput', '0x20ef65b8b186ca942zcccd634f37074dde49b541c27994fc7596740ef44cfd51') .setValue('#txinput', '0x20ef65b8b186ca942zcccd634f37074dde49b541c27994fc7596740ef44cfd51')
.click('#load') .click('#load')
.click('#txinfo .title') .click('#txinfo .title')
.click('#txinfo .dropdownpanel .btn') .execute(function () {
.expect.element('#txinfo .dropdownpanel .dropdownrawcontent').text.to.contain('<not found>') return document.querySelector('#txinfo .dropdownpanel .dropdownrawcontent').innerHTML
}, [], function (result) {
console.log(result.value)
if (result.value.indexOf('not found') === -1) {
browser.assert.fail(' txinput panel does not contain <not found> ', 'info about error', '')
}
})
return browser return browser
} }
@ -50,9 +56,15 @@ function loadTrace (browser) {
.setValue('#txinput', '0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51') .setValue('#txinput', '0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51')
.click('#load') .click('#load')
.click('#txinfo .title') .click('#txinfo .title')
.click('#txinfo .dropdownpanel .btn') .execute(function () {
.expect.element('#txinfo .dropdownpanel .dropdownrawcontent').text.to.contain('0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51') return document.querySelector('#txinfo .dropdownpanel .dropdownrawcontent').innerHTML
browser.click('#unload') }, [], function (result) {
console.log(result.value)
if (result.value.indexOf('0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51') === -1) {
browser.assert.fail(' txinput panel does not contain 0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51 ', 'info about error', '')
}
})
.click('#unload')
.waitForElementNotVisible('#vmdebugger', 1000) .waitForElementNotVisible('#vmdebugger', 1000)
return browser return browser
} }

Loading…
Cancel
Save