Commit 46944c93 authored by yann300's avatar yann300 Committed by GitHub

Merge pull request #769 from ethereum/terminalFilter

add terminal menu bar with clear/filter/..
parents a7e14ad1 3762100a
...@@ -16,19 +16,25 @@ class TxLogger { ...@@ -16,19 +16,25 @@ class TxLogger {
constructor (opts = {}) { constructor (opts = {}) {
this.event = new EventManager() this.event = new EventManager()
this.opts = opts this.opts = opts
opts.api.editorpanel.registerLogType('knownTransaction', (data) => { this.logKnownTX = opts.api.editorpanel.registerCommand('knownTransaction', (args, cmds, append) => {
return renderKnownTransaction(this, data) var data = args[0]
var el = renderKnownTransaction(this, data)
append(el)
}) })
opts.api.editorpanel.registerLogType('unknownTransaction', (data) => { this.logUnknownTX = opts.api.editorpanel.registerCommand('unknownTransaction', (args, cmds, append) => {
return renderUnknownTransaction(this, data) var data = args[0]
var el = renderUnknownTransaction(this, data)
append(el)
}) })
opts.api.editorpanel.registerLogType('emptyBlock', (data) => { this.logEmptyBlock = opts.api.editorpanel.registerCommand('emptyBlock', (args, cmds, append) => {
return renderEmptyBlock(this, data) var data = args[0]
var el = renderEmptyBlock(this, data)
append(el)
}) })
opts.events.txListener.register('newBlock', (block) => { opts.events.txListener.register('newBlock', (block) => {
if (!block.transactions.length) { if (!block.transactions.length) {
opts.api.editorpanel.log({type: 'emptyBlock', value: { block: block }}) this.logEmptyBlock({ block: block })
} }
}) })
...@@ -43,12 +49,12 @@ function log (self, tx, api) { ...@@ -43,12 +49,12 @@ function log (self, tx, api) {
if (resolvedTransaction) { if (resolvedTransaction) {
api.parseLogs(tx, resolvedTransaction.contractName, api.compiledContracts(), (error, logs) => { api.parseLogs(tx, resolvedTransaction.contractName, api.compiledContracts(), (error, logs) => {
if (!error) { if (!error) {
api.editorpanel.log({type: 'knownTransaction', value: { tx: tx, resolvedData: resolvedTransaction, logs: logs }}) self.logKnownTX({ tx: tx, resolvedData: resolvedTransaction, logs: logs })
} }
}) })
} else { } else {
// contract unknown - just displaying raw tx. // contract unknown - just displaying raw tx.
api.editorpanel.log({ type: 'unknownTransaction', value: { tx: tx } }) self.logUnknownTX({ tx: tx })
} }
} }
......
...@@ -70,7 +70,6 @@ function fileExplorer (appAPI, files) { ...@@ -70,7 +70,6 @@ function fileExplorer (appAPI, files) {
} }
}) })
var self = this
var fileEvents = files.event var fileEvents = files.event
var treeView = new Treeview({ var treeView = new Treeview({
extractData: function (value, tree, key) { extractData: function (value, tree, key) {
......
...@@ -157,7 +157,49 @@ class EditorPanel { ...@@ -157,7 +157,49 @@ class EditorPanel {
context () { context () {
return self._api.context() return self._api.context()
} }
} },
banner: `
/******************************************************************************
...........................................
.....................:.....................
....................o:;....................
...................oo:;;...................
..................ooo:;;;..................
.................oooo:;;;;.................
................ooooo:;;;;;................
...............oooooo:;;;;;;...............
..............ooooooo:;;;;;;;..............
.............ooooooo;:';;;;;;;.............
............ooooo;;;;:'''';;;;;............
...........oo;;;;;;;;:'''''''';;...........
..........;;;;;;;;;;;:'''''''''''..........
..............;;;;;;;:'''''''..............
...........oo...;;;;;:'''''...;;...........
............oooo...;;:''...;;;;............
..............oooo...:...;;;;..............
...............oooooo:;;;;;;...............
................ooooo:;;;;;................
.................oooo:;;;;.................
..................ooo:;;;..................
...................oo:;;...................
....................o:;....................
.....................:.....................
...........................................
######## ######## ## ## #### ## ##
## ## ## ### ### ## ## ##
## ## ## #### #### ## ## ##
######## ###### ## ### ## ## ###
## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ##
## ## ######## ## ## #### ## ##
welcome to browser solidity
******************************************************************************/
`
}) })
} }
self._components.terminal.event.register('resize', delta => self._adjustLayout('top', delta)) self._components.terminal.event.register('resize', delta => self._adjustLayout('top', delta))
...@@ -194,6 +236,11 @@ class EditorPanel { ...@@ -194,6 +236,11 @@ class EditorPanel {
var self = this var self = this
self._view.tabs.onmouseenter() self._view.tabs.onmouseenter()
} }
log (data = {}) {
var self = this
var command = self._components.terminal.commands[data.type]
if (typeof command === 'function') command(data.value)
}
render () { render () {
var self = this var self = this
if (self._view.el) return self._view.el if (self._view.el) return self._view.el
...@@ -215,13 +262,9 @@ class EditorPanel { ...@@ -215,13 +262,9 @@ class EditorPanel {
self._adjustLayout('top', self.data._layout.top.offset) self._adjustLayout('top', self.data._layout.top.offset)
return self._view.el return self._view.el
} }
registerLogType (typename, template) { registerCommand (name, command) {
var self = this
self._components.terminal.registerType(typename, template)
}
log () {
var self = this var self = this
self._components.terminal._output.apply(self._components.terminal, arguments) return self._components.terminal.registerCommand(name, command)
} }
_renderTabsbar () { _renderTabsbar () {
var self = this var self = this
......
This diff is collapsed.
...@@ -32,8 +32,8 @@ function runTests (browser) { ...@@ -32,8 +32,8 @@ function runTests (browser) {
.click('#runTabView div[class^="create"]') .click('#runTabView div[class^="create"]')
.waitForElementPresent('.instance button[title="f - transact (not payable)"]') .waitForElementPresent('.instance button[title="f - transact (not payable)"]')
.click('.instance button[title="f - transact (not payable)"]') .click('.instance button[title="f - transact (not payable)"]')
.waitForElementPresent('#editor-container div[class^="terminal"] .knownTransaction span[id="tx0xa178c603400a184ce5fedbcfab392d9b77822f6ffa7facdec693aded214523bc"]') .waitForElementPresent('#editor-container div[class^="terminal"] span[id="tx0xa178c603400a184ce5fedbcfab392d9b77822f6ffa7facdec693aded214523bc"]')
.assert.containsText('#editor-container div[class^="terminal"] .knownTransaction span[id="tx0xa178c603400a184ce5fedbcfab392d9b77822f6ffa7facdec693aded214523bc"]', '(vm): from:0xca3...a733c, to:0x692...77b3a, browser/Untitled.sol:TestContract.f(), value:0 wei, data:0x261...21ff0, 0 logs, hash:0xa17...523bc,DetailsDebug') .assert.containsText('#editor-container div[class^="terminal"] span[id="tx0xa178c603400a184ce5fedbcfab392d9b77822f6ffa7facdec693aded214523bc"]', '(vm): from:0xca3...a733c, to:0x692...77b3a, browser/Untitled.sol:TestContract.f(), value:0 wei, data:0x261...21ff0, 0 logs, hash:0xa17...523bc,DetailsDebug')
.end() .end()
/* /*
@TODO: need to check now the return value of the function @TODO: need to check now the return value of the function
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment