diff --git a/nightwatch.js b/nightwatch.js index c5da94b94e..ab0c6f6295 100644 --- a/nightwatch.js +++ b/nightwatch.js @@ -42,7 +42,10 @@ module.exports = { 'javascriptEnabled': true, 'acceptSslCerts': true, 'build': 'build-' + TRAVIS_JOB_NUMBER, - 'tunnel-identifier': 'browsersolidity_tests_' + TRAVIS_JOB_NUMBER + 'tunnel-identifier': 'browsersolidity_tests_' + TRAVIS_JOB_NUMBER, + 'chromeOptions': { + 'args': ['window-size=2560,1440', 'start-fullscreen'] + } } }, diff --git a/src/app/execution/txListener.js b/src/app/execution/txListener.js index 5244860353..ea4eaaa1fc 100644 --- a/src/app/execution/txListener.js +++ b/src/app/execution/txListener.js @@ -47,7 +47,6 @@ class TxListener { input: data, hash: txResult.transactionHash ? txResult.transactionHash : 'call' + (from || '') + to + data, isCall: true, - output: txResult.result, returnValue: executionContext.isVM() ? txResult.result.vm.return : ethJSUtil.toBuffer(txResult.result), envMode: executionContext.getProvider() } diff --git a/src/app/execution/txLogger.js b/src/app/execution/txLogger.js index 349ad50950..fb79f0cde8 100644 --- a/src/app/execution/txLogger.js +++ b/src/app/execution/txLogger.js @@ -65,6 +65,14 @@ class TxLogger { constructor (opts = {}) { this.event = new EventManager() this.opts = opts + this.seen = {} + function filterTx (value, query) { + if (value.length) { + return helper.find(value, query) + } + return false + } + this.logKnownTX = opts.api.editorpanel.registerCommand('knownTransaction', (args, cmds, append) => { var data = args[0] var el @@ -73,14 +81,15 @@ class TxLogger { } else { el = renderKnownTransaction(this, data) } + this.seen[data.tx.hash] = el append(el) - }, { activate: true }) + }, { activate: true, filterFn: filterTx }) this.logUnknownTX = opts.api.editorpanel.registerCommand('unknownTransaction', (args, cmds, append) => { var data = args[0] var el = renderUnknownTransaction(this, data) append(el) - }, { activate: false }) + }, { activate: false, filterFn: filterTx }) this.logEmptyBlock = opts.api.editorpanel.registerCommand('emptyBlock', (args, cmds, append) => { var data = args[0] diff --git a/src/app/panels/terminal.js b/src/app/panels/terminal.js index 7fbbd5d7fc..03ca96f41d 100644 --- a/src/app/panels/terminal.js +++ b/src/app/panels/terminal.js @@ -122,7 +122,7 @@ var css = csjs` } .filter { ${styles.terminal.input_Search_MenuBar} - width : 150px; + width : 200px; padding-right : 0px; margin-right : 0px; border-top-left-radius : 0px; @@ -179,7 +179,8 @@ class Terminal { self.data = { lineLength: opts.lineLength || 80, session: [], - activeFilters: { commands: {}, input: '' } + activeFilters: { commands: {}, input: '' }, + filterFns: {} } self._view = { el: null, bar: null, input: null, term: null, journal: null, cli: null } self._components = {} @@ -224,6 +225,13 @@ class Terminal { else scopedCommands.log(output) }) }, { activate: true }) + function basicFilter (value, query) { try { return value.indexOf(query) !== -1 } catch (e) { return false } } + + self.registerFilter('log', basicFilter) + self.registerFilter('info', basicFilter) + self.registerFilter('error', basicFilter) + self.registerFilter('script', basicFilter) + self._jsSandboxContext = {} self._jsSandbox = vm.createContext(self._jsSandboxContext) if (opts.shell) self._shell = opts.shell @@ -399,9 +407,14 @@ class Terminal { self.event.trigger('resize', []) } } + var filtertimeout = null function filter (event) { - var input = event.currentTarget - self.updateJournal({ type: 'search', value: input.value }) + if (filtertimeout) { + clearTimeout(filtertimeout) + } + filtertimeout = setTimeout(() => { + self.updateJournal({ type: 'search', value: document.querySelector('.' + event.target.className).value }) + }, 500) } function clear (event) { refocus() @@ -537,8 +550,8 @@ class Terminal { var items = self._JOURNAL for (var gidx = 0, len = items.length; gidx < len; gidx++) { var item = items[gidx] - if (item) { - var show = query.length ? match(item.args, query) : true + if (item && self.data.filterFns[item.cmd]) { + var show = query.length ? self.data.filterFns[item.cmd](item.args, query) : true item.hide = !show } } @@ -553,14 +566,6 @@ class Terminal { self._view.journal.appendChild(df) }) } - _shouldAdd (item) { - var self = this - if (self.data.activeFilters.commands[item.root.cmd]) { - var query = self.data.activeFilters.input - var args = item.args - return query.length ? match(args, query) : true - } - } _appendItem (item) { var self = this var { el, gidx } = item @@ -608,6 +613,9 @@ class Terminal { }) return scopedCommands } + registerFilter (commandName, filterFn) { + this.data.filterFns[commandName] = filterFn + } registerCommand (name, command, opts) { var self = this name = String(name) @@ -636,7 +644,7 @@ class Terminal { item.idx = self._INDEX.commands[cmd].push(item) - 1 item.step = steps.push(item) - 1 item.args = params - if (self._shouldAdd(item)) self._appendItem(item) + self._appendItem(item) } var scopedCommands = self._scopeCommands(append) command(args, scopedCommands, el => append(null, args, blockify(el))) @@ -648,6 +656,9 @@ class Terminal { self.commands[name].toString = _ => { return help } self.commands[name].help = help self.data.activeFilters.commands[name] = opts && opts.activate + if (opts.filterFn) { + self.registerFilter(name, opts.filterFn) + } return self.commands[name] } _shell (script, scopedCommands, done) { // default shell @@ -675,30 +686,6 @@ function domTerminalFeatures (self, scopedCommands) { } } -function findDeep (object, fn, found = { break: false, value: undefined }) { - if (typeof object !== 'object' || object === null) return - 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 - } - return found.value -} - -function match (args, query) { - query = query.trim() - var isMatch = !!findDeep(args, function check (value, key) { - if (value === undefined || value === null) return false - if (typeof value === 'function') return false - if (typeof value === 'object') return false - var contains = String(value).indexOf(query.trim()) !== -1 - return contains - }) - return isMatch -} - function blockify (el) { return yo`