diff --git a/src/app/execution/txListener.js b/src/app/execution/txListener.js
index 4d6ee736a5..5d6bd19897 100644
--- a/src/app/execution/txListener.js
+++ b/src/app/execution/txListener.js
@@ -38,7 +38,7 @@ class TxListener {
// in VM mode
// in web3 mode && listen remix txs only
if (!this._isListening) return // we don't listen
- if (this._loopId) return // we seems to already listen on the network
+ if (this._loopId && executionContext.getProvider() !== 'vm') return // we seems to already listen on a "web3" network
executionContext.web3().eth.getTransaction(txResult.transactionHash, (error, tx) => {
if (error) return console.log(error)
if (txResult && txResult.result && txResult.result.vm) tx.returnValue = txResult.result.vm.return
@@ -81,7 +81,7 @@ class TxListener {
startListening () {
this.init()
this._isListening = true
- if (this._listenOnNetwork) {
+ if (this._listenOnNetwork && executionContext.getProvider() !== 'vm') {
this._startListenOnNetwork()
}
}
diff --git a/src/app/execution/txLogger.js b/src/app/execution/txLogger.js
index 14c2ee2964..c9f668f6a6 100644
--- a/src/app/execution/txLogger.js
+++ b/src/app/execution/txLogger.js
@@ -76,16 +76,34 @@ class TxLogger {
var data = args[0]
var el = renderKnownTransaction(this, data)
append(el)
- })
+ }, { activate: true })
+
this.logUnknownTX = opts.api.editorpanel.registerCommand('unknownTransaction', (args, cmds, append) => {
var data = args[0]
var el = renderUnknownTransaction(this, data)
append(el)
- })
+ }, { activate: false })
+
this.logEmptyBlock = opts.api.editorpanel.registerCommand('emptyBlock', (args, cmds, append) => {
var data = args[0]
var el = renderEmptyBlock(this, data)
append(el)
+ }, { activate: true })
+
+ opts.api.editorpanel.event.register('terminalFilterChanged', (type, label) => {
+ if (type === 'deselect') {
+ if (label === 'only remix transactions') {
+ opts.api.editorpanel.updateTerminalFilter({ type: 'select', value: 'unknownTransaction' })
+ } else if (label === 'all transactions') {
+ opts.api.editorpanel.updateTerminalFilter({ type: 'deselect', value: 'unknownTransaction' })
+ }
+ } else if (type === 'select') {
+ if (label === 'only remix transactions') {
+ opts.api.editorpanel.updateTerminalFilter({ type: 'deselect', value: 'unknownTransaction' })
+ } else if (label === 'all transactions') {
+ opts.api.editorpanel.updateTerminalFilter({ type: 'select', value: 'unknownTransaction' })
+ }
+ }
})
opts.events.txListener.register('newBlock', (block) => {
@@ -196,7 +214,7 @@ function renderUnknownTransaction (self, data) {
}
function renderEmptyBlock (self, data) {
- return yo`block ${data.block.number} - O transactions`
+ return yo`[block:${data.block.number} - 0 transactions]`
}
function context (self, opts) {
diff --git a/src/app/panels/editor-panel.js b/src/app/panels/editor-panel.js
index 43a9edfbe8..9cd9b6d9c4 100644
--- a/src/app/panels/editor-panel.js
+++ b/src/app/panels/editor-panel.js
@@ -167,6 +167,9 @@ class EditorPanel {
`
})
}
+ self._components.terminal.event.register('filterChanged', (type, value) => {
+ this.event.trigger('terminalFilterChanged', [type, value])
+ })
self._components.terminal.event.register('resize', delta => self._adjustLayout('top', delta))
if (self._api.txListener) {
self._components.terminal.event.register('listenOnNetWork', (listenOnNetWork) => {
@@ -232,9 +235,12 @@ class EditorPanel {
self._adjustLayout('top', self.data._layout.top.offset)
return self._view.el
}
- registerCommand (name, command) {
+ registerCommand (name, command, opts) {
var self = this
- return self._components.terminal.registerCommand(name, command)
+ return self._components.terminal.registerCommand(name, command, opts)
+ }
+ updateTerminalFilter (filter) {
+ this._components.terminal.updateJournal(filter)
}
_renderTabsbar () {
var self = this
diff --git a/src/app/panels/terminal.js b/src/app/panels/terminal.js
index 7e6123a951..c5215a0362 100644
--- a/src/app/panels/terminal.js
+++ b/src/app/panels/terminal.js
@@ -143,20 +143,14 @@ class Terminal {
dependencies: {'all transactions': ['only remix transactions'], 'only remix transactions': ['all transactions']}
})
self._components.dropdown.event.register('deselect', function (label) {
- if (label === 'only remix transactions') {
- self.updateJournal({ type: 'select', value: 'unknownTransaction' })
- } else if (label === 'all transactions') {
- self.updateJournal({ type: 'deselect', value: 'unknownTransaction' })
- } else { // script
+ self.event.trigger('filterChanged', ['deselect', label])
+ if (label === 'script') {
self.updateJournal({ type: 'deselect', value: label })
}
})
self._components.dropdown.event.register('select', function (label) {
- if (label === 'only remix transactions') {
- self.updateJournal({ type: 'deselect', value: 'unknownTransaction' })
- } else if (label === 'all transactions') {
- self.updateJournal({ type: 'select', value: 'unknownTransaction' })
- } else { // script
+ self.event.trigger('filterChanged', ['select', label])
+ if (label === 'script') {
self.updateJournal({ type: 'select', value: label })
}
})
@@ -171,10 +165,10 @@ class Terminal {
self._INDEX.commandsMain = {}
self.registerCommand('banner', function (args, scopedCommands, append) {
append(args[0])
- })
- self.registerCommand('log', self._blocksRenderer('log'))
- self.registerCommand('info', self._blocksRenderer('info'))
- self.registerCommand('error', self._blocksRenderer('error'))
+ }, { activate: true })
+ self.registerCommand('log', self._blocksRenderer('log'), { activate: true })
+ self.registerCommand('info', self._blocksRenderer('info'), { activate: true })
+ self.registerCommand('error', self._blocksRenderer('error'), { activate: true })
self.registerCommand('script', function execute (args, scopedCommands, append) {
var script = String(args[0])
scopedCommands.log(`> ${script}`)
@@ -182,12 +176,11 @@ class Terminal {
if (error) scopedCommands.error(error)
else scopedCommands.log(output)
})
- })
+ }, { activate: true })
self._jsSandboxContext = {}
self._jsSandbox = vm.createContext(self._jsSandboxContext)
if (opts.shell) self._shell = opts.shell
register(self)
- self.updateJournal({ type: 'select', value: 'knownTransaction' })
}
render () {
var self = this
@@ -545,7 +538,7 @@ class Terminal {
})
return scopedCommands
}
- registerCommand (name, command) {
+ registerCommand (name, command, opts) {
var self = this
name = String(name)
if (self._commands[name]) throw new Error(`command "${name}" exists already`)
@@ -584,6 +577,7 @@ class Terminal {
].join('\n')
self.commands[name].toString = _ => { return help }
self.commands[name].help = help
+ self.data.activeFilters.commands[name] = opts && opts.activate
return self.commands[name]
}
_shell (script, scopedCommands, done) { // default shell
@@ -616,6 +610,7 @@ function findDeep (object, fn, found = { break: false, value: undefined }) {
for (var i in object) {
if (found.break) break
var el = object[i]
+ if (el && el.innerText !== undefined && el.innerText !== null) el = el.innerText
if (!fn(el, i, object)) findDeep(el, fn, found)
else if (found.break = true) return found.value = el // eslint-disable-line
}