优化
This commit is contained in:
71
server/scripts/dashboard.ts
Normal file
71
server/scripts/dashboard.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
import blessed from 'neo-blessed';
|
||||
import execa from 'execa';
|
||||
import path from 'path';
|
||||
|
||||
/**
|
||||
* WIP: 终端管理器
|
||||
*/
|
||||
|
||||
class TailchatServiceDashboard {
|
||||
screen: blessed.Widgets.Screen;
|
||||
mainBox: blessed.Widgets.BoxElement;
|
||||
mainProcess: execa.ExecaChildProcess<string>;
|
||||
|
||||
constructor() {
|
||||
this.initElement();
|
||||
}
|
||||
|
||||
initElement() {
|
||||
this.screen = blessed.screen({
|
||||
smartCSR: true,
|
||||
});
|
||||
this.screen.title = 'my window title';
|
||||
|
||||
this.mainBox = blessed.box({
|
||||
top: 0,
|
||||
left: 'center',
|
||||
width: '100%',
|
||||
height: '80%',
|
||||
content: 'Hello {bold}world{/bold}!',
|
||||
tags: true,
|
||||
border: {
|
||||
type: 'line',
|
||||
},
|
||||
style: {
|
||||
fg: 'white',
|
||||
border: {
|
||||
fg: '#f0f0f0',
|
||||
},
|
||||
},
|
||||
scrollable: true,
|
||||
});
|
||||
this.screen.append(this.mainBox);
|
||||
|
||||
// Quit on Escape, q, or Control-C.
|
||||
this.screen.key(['escape', 'q', 'C-c'], (ch, key) => {
|
||||
this.mainProcess.kill(0);
|
||||
return process.exit(0);
|
||||
});
|
||||
|
||||
this.mainBox.focus();
|
||||
this.screen.render();
|
||||
}
|
||||
|
||||
start() {
|
||||
const child = execa('ts-node', ['./runner.ts'], {
|
||||
cwd: path.resolve(__dirname, '../'),
|
||||
});
|
||||
child.stdout.on('data', (data) => {
|
||||
this.mainBox.insertBottom(String(data));
|
||||
this.screen.render();
|
||||
});
|
||||
child.stderr.on('data', (data) => {
|
||||
this.mainBox.pushLine(String(data));
|
||||
this.screen.render();
|
||||
});
|
||||
|
||||
this.mainProcess = child;
|
||||
}
|
||||
}
|
||||
|
||||
new TailchatServiceDashboard().start();
|
||||
Reference in New Issue
Block a user