From 65e67f90da9fcba11e011b7ae7b3c6b8c3638918 Mon Sep 17 00:00:00 2001 From: nuintun Date: Fri, 27 Nov 2015 09:34:50 +0800 Subject: [PATCH] update files --- bin/emulator.js | 9 ++-- static/js/components/app-main/index.js | 66 +++++++++++++------------- 2 files changed, 39 insertions(+), 36 deletions(-) diff --git a/bin/emulator.js b/bin/emulator.js index 35eb4ae..59a1199 100644 --- a/bin/emulator.js +++ b/bin/emulator.js @@ -83,6 +83,7 @@ module.exports = { switch (action) { case 'start': if (!emulator) { + var stream; var env = {}; Object.keys(process.env).forEach(function (key){ @@ -99,14 +100,14 @@ module.exports = { command: project.command.value }); - var stream = emulator.start(); + stream = emulator.start(); stream.stdout.on('data', function (data){ - event.sender.send('data', project, data); + event.sender.send('emulator', 'data', project, data); }); stream.stderr.on('error', function (error){ - event.sender.send('error', project, error); + event.sender.send('emulator', 'error', project, error); emulator.stop(); @@ -114,7 +115,7 @@ module.exports = { }); stream.on('close', function (signal){ - event.sender.send('close', project, signal); + event.sender.send('emulator', 'close', project, signal); delete emulators[key]; }); diff --git a/static/js/components/app-main/index.js b/static/js/components/app-main/index.js index d713b40..775d69e 100644 --- a/static/js/components/app-main/index.js +++ b/static/js/components/app-main/index.js @@ -53,35 +53,41 @@ function scroll(xterm, parent){ * @param xtermNode */ function createXTerm(name, xtermNode){ - //var timer; - //var runtime = window.AppRuntime[name]; + var timer; + var runtime = window.AppRuntime[name]; - //if (runtime) { - // runtime.xterm.focus(); - //} else { - // var xterm = new Terminal({ - // rows: 66, - // scrollback: 66, - // convertEOL: true, - // fgColor: 'inherit', - // bgColor: 'transparent', - // onscreen: function (screen){ - // if (this.isFocused()) { - // clearTimeout(timer); - // - // timer = setTimeout(function (){ - // //xtermNode.innerHTML = screen; - // - // scroll(xterm, xtermNode); - // }, 10); - // } - // } - // }); - // - // xterm.open(); + if (runtime) { + runtime.xterm.focus(); + } else { + var xterm = new Terminal({ + rows: 66, + scrollback: 66, + convertEOL: true, + fgColor: 'inherit', + bgColor: 'transparent', + onscreen: function (screen){ + if (this.isFocused()) { + setImmediate(function (){ + xtermNode.innerHTML = screen; + scroll(xterm, xtermNode); + }); + //clearTimeout(timer); - window.AppRuntime[name] = true; - //} + //timer = setTimeout(function (){ + // xtermNode.innerHTML = screen; + //}, 0); + // + //scroll(xterm, xtermNode); + } + } + }); + + xterm.open(); + + window.AppRuntime[name] = { + xterm: xterm + }; + } } module.exports = Vue.component('app-main', { @@ -190,9 +196,7 @@ module.exports = Vue.component('app-main', { var runtime = window.AppRuntime[project.name]; if (runtime) { - if (project.name === context.project.name) { - context.$els.terminal.innerHTML = data; - } + runtime.xterm.write(data + ''); } else { event.sender.send('emulator', project, 'stop'); } @@ -200,7 +204,5 @@ module.exports = Vue.component('app-main', { }, ready: function (){ createXTerm(this.project.name, this.$els.terminal); - - new Worker('static/js/components/app-main/worker.js'); } });