Commit 65871cda authored by 周小侠's avatar 周小侠

disconnect + 修正显示连接资产信息

parent 359dfc2a
No preview for this file type
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
...@@ -47,13 +47,15 @@ var UserList = (function () { ...@@ -47,13 +47,15 @@ var UserList = (function () {
this.DataStore = service_1.DataStore; this.DataStore = service_1.DataStore;
this._logger.log('LeftbarComponent.ts:UserList'); this._logger.log('LeftbarComponent.ts:UserList');
} }
UserList.prototype.ngOnInit = function () { UserList.prototype.ngOnInit = function () { };
};
UserList.prototype.selectUser = function (serverInfo, index) { UserList.prototype.selectUser = function (serverInfo, index) {
this.selectedUser = serverInfo.system_users[index]; this.selectedUser = serverInfo.system_users[index];
var param = { var param = {
'assetId': serverInfo.id, 'assetId': serverInfo.id,
'sysUserId': this.selectedUser['id'], 'sysUserId': this.selectedUser['id'],
'nickName': serverInfo.title,
'ip': serverInfo.ip,
'port': serverInfo.port,
}; };
service_1.DataStore.termlist.push(param); service_1.DataStore.termlist.push(param);
service_1.DataStore.loguserlist = []; service_1.DataStore.loguserlist = [];
...@@ -104,7 +106,9 @@ var LeftbarComponent = (function () { ...@@ -104,7 +106,9 @@ var LeftbarComponent = (function () {
folderOpen: "fa fa-folder-open-o" folderOpen: "fa fa-folder-open-o"
} }
}, },
source: { url: service_1.DataStore.leftbar }, source: {
url: service_1.DataStore.leftbar
},
activeVisible: true, activeVisible: true,
aria: true, aria: true,
autoActivate: true, autoActivate: true,
...@@ -136,70 +140,67 @@ var LeftbarComponent = (function () { ...@@ -136,70 +140,67 @@ var LeftbarComponent = (function () {
if (!data.node.folder) { if (!data.node.folder) {
if (data.node.data.system_users && data.node.data.system_users.length > 1) { if (data.node.data.system_users && data.node.data.system_users.length > 1) {
service_1.DataStore.loguserlist = data.node.data.system_users; service_1.DataStore.loguserlist = data.node.data.system_users;
service_1.DataStore.loguserInfo = data.node.data; service_1.DataStore.loguserInfo = jQuery.extent({}, data.node.data, {
'nickName': data.node.title
});
} }
else { else {
if (data.node.data.system_users && data.node.data.system_users.length > 0) { if (data.node.data.system_users && data.node.data.system_users.length > 0) {
var param = { var param = {
'assetId': data.node.data.id, 'assetId': data.node.data.id,
'sysUserId': data.node.data.system_users[0].id, 'sysUserId': data.node.data.system_users[0].id,
'nickName': data.node.title,
'ip': data.node.data.ip,
'port': data.node.data.port,
}; };
service_1.DataStore.termlist.push(param); service_1.DataStore.termlist.push(param);
} }
} }
} }
}, }
}); });
jQuery("#left-bar").contextmenu({ jQuery("#left-bar").contextmenu({
delegate: "span.fancytree-title", delegate: "span.fancytree-title",
hide: { effect: "basic", duration: "slow" }, hide: {
menu: [ effect: "basic",
{ duration: "slow"
},
menu: [{
"title": "Cut", "title": "Cut",
"cmd": "cut", "cmd": "cut",
"uiIcon": "fa fa-cut fa-size-1p3em" "uiIcon": "fa fa-cut fa-size-1p3em"
}, }, {
{
"title": "Copy", "title": "Copy",
"cmd": "copy", "cmd": "copy",
"uiIcon": "fa fa-copy fa-size-1p3em" "uiIcon": "fa fa-copy fa-size-1p3em"
}, }, {
{
"title": "Paste", "title": "Paste",
"cmd": "paste", "cmd": "paste",
"uiIcon": "fa fa-paste fa-size-1p3em", "uiIcon": "fa fa-paste fa-size-1p3em",
"disabled": false "disabled": false
}, }, {
{
"title": "----" "title": "----"
}, }, {
{
"title": "Edit", "title": "Edit",
"cmd": "edit", "cmd": "edit",
"uiIcon": "fa fa-edit fa-size-1p3em", "uiIcon": "fa fa-edit fa-size-1p3em",
"disabled": true "disabled": true
}, }, {
{
"title": "Delete", "title": "Delete",
"cmd": "delete", "cmd": "delete",
"uiIcon": "fa fa-trash fa-size-1p3em", "uiIcon": "fa fa-trash fa-size-1p3em",
"disabled": true "disabled": true
}, }, {
{
"title": "More", "title": "More",
"uiIcon": "fa fa-caret-right fa-size-1p3em", "uiIcon": "fa fa-caret-right fa-size-1p3em",
"children": [ "children": [{
{
"title": "Sub 1", "title": "Sub 1",
"cmd": "sub1" "cmd": "sub1"
}, }, {
{
"title": "Sub 2", "title": "Sub 2",
"cmd": "sub1" "cmd": "sub1"
} }]
] }],
}
],
beforeOpen: function (event, ui) { beforeOpen: function (event, ui) {
var node = jQuery.ui.fancytree.getNode(ui.target[0]); var node = jQuery.ui.fancytree.getNode(ui.target[0]);
// Modify menu entries depending on node status // Modify menu entries depending on node status
...@@ -223,8 +224,8 @@ var LeftbarComponent = (function () { ...@@ -223,8 +224,8 @@ var LeftbarComponent = (function () {
LeftbarComponent = __decorate([ LeftbarComponent = __decorate([
core_1.Component({ core_1.Component({
selector: 'div', selector: 'div',
template: "<div style=\"height:30px;width:100%;background-color: #00b3ee\">\n <search-bar></search-bar><select-user-panel></select-user-panel></div>", template: "<div style=\"height:30px;width:100%;background-color: #00b3ee\">\n <search-bar></search-bar></div>",
directives: [SearchBar, UserList], directives: [SearchBar],
}), }),
__metadata('design:paramtypes', [service_1.AppService, core_2.Logger]) __metadata('design:paramtypes', [service_1.AppService, core_2.Logger])
], LeftbarComponent); ], LeftbarComponent);
......
This diff is collapsed.
...@@ -2,15 +2,29 @@ ...@@ -2,15 +2,29 @@
* Created by liuzheng on 7/12/16. * Created by liuzheng on 7/12/16.
*/ */
import {Component, OnChanges, OnInit, Input} from '@angular/core'; import {
import {NgClass} from '@angular/common'; Component,
import {ROUTER_DIRECTIVES} from '@angular/router-deprecated'; OnChanges,
import {Logger} from "angular2-logger/core"; OnInit,
Input
import 'rxjs/Rx'; } from '@angular/core';
declare var jQuery:any; import {
NgClass
import {AppService, DataStore} from './service' } from '@angular/common';
import {
ROUTER_DIRECTIVES
} from '@angular/router-deprecated';
import {
Logger
} from "angular2-logger/core";
import 'rxjs/Rx';
declare var jQuery: any;
import {
AppService,
DataStore
} from './service'
@Component({ @Component({
selector: 'search-bar', selector: 'search-bar',
...@@ -20,10 +34,10 @@ import {AppService, DataStore} from './service' ...@@ -20,10 +34,10 @@ import {AppService, DataStore} from './service'
}) })
class SearchBar implements OnChanges { class SearchBar implements OnChanges {
@Input() input; @Input() input;
q:string; q: string;
constructor(private _appService:AppService, constructor(private _appService: AppService,
private _logger:Logger) { private _logger: Logger) {
this._logger.log('LeftbarComponent.ts:SearchBar'); this._logger.log('LeftbarComponent.ts:SearchBar');
} }
...@@ -35,6 +49,7 @@ class SearchBar implements OnChanges { ...@@ -35,6 +49,7 @@ class SearchBar implements OnChanges {
this._appService.Search(this.q) this._appService.Search(this.q)
} }
} }
@Component({ @Component({
selector: 'select-user-panel', selector: 'select-user-panel',
template: `<div class="select-user-panel" *ngIf="DataStore.loguserlist.length"><h2>选择要登录的账户</h2> template: `<div class="select-user-panel" *ngIf="DataStore.loguserlist.length"><h2>选择要登录的账户</h2>
...@@ -44,45 +59,42 @@ class SearchBar implements OnChanges { ...@@ -44,45 +59,42 @@ class SearchBar implements OnChanges {
}) })
class UserList implements OnInit { class UserList implements OnInit {
DataStore = DataStore; DataStore = DataStore;
users: Object[]; users: Object[];
selectedUser: Object; selectedUser: Object;
constructor(private _appService:AppService, constructor(private _appService: AppService,
private _logger:Logger) { private _logger: Logger) {
this._logger.log('LeftbarComponent.ts:UserList'); this._logger.log('LeftbarComponent.ts:UserList');
} }
ngOnInit() {
}
selectUser(serverInfo, index) {
this.selectedUser = serverInfo.system_users[index];
let param = {
'assetId': serverInfo.id,
'sysUserId': this.selectedUser['id'],
};
DataStore.termlist.push(param);
DataStore.loguserlist = [];
DataStore.loguserInfo = {};
}
}
ngOnInit() {}
selectUser(serverInfo, index) {
this.selectedUser = serverInfo.system_users[index];
let param = {
'assetId': serverInfo.id,
'sysUserId': this.selectedUser['id'],
'nickName': serverInfo.title,
'ip': serverInfo.ip,
'port': serverInfo.port,
};
DataStore.termlist.push(param);
DataStore.loguserlist = [];
DataStore.loguserInfo = {};
}
}
@Component({ @Component({
selector: 'div', selector: 'div',
template: `<div style="height:30px;width:100%;background-color: #00b3ee"> template: `<div style="height:30px;width:100%;background-color: #00b3ee">
<search-bar></search-bar><select-user-panel></select-user-panel></div>`, <search-bar></search-bar></div>`,
directives: [SearchBar, UserList], directives: [SearchBar],
}) })
export class LeftbarComponent { export class LeftbarComponent {
DataStore = DataStore; DataStore = DataStore;
constructor(private _appService: AppService,
constructor(private _appService:AppService, private _logger: Logger) {
private _logger:Logger) {
this._logger.log('LeftbarComponent.ts:LeftbarComponent'); this._logger.log('LeftbarComponent.ts:LeftbarComponent');
this._logger.debug("check DataStroe.leftbar", DataStore.leftbar); this._logger.debug("check DataStroe.leftbar", DataStore.leftbar);
} }
...@@ -117,7 +129,9 @@ export class LeftbarComponent { ...@@ -117,7 +129,9 @@ export class LeftbarComponent {
folderOpen: "fa fa-folder-open-o" folderOpen: "fa fa-folder-open-o"
} }
}, },
source: {url: DataStore.leftbar}, source: {
url: DataStore.leftbar
},
activeVisible: true, // Make sure, active nodes are visible (expanded). activeVisible: true, // Make sure, active nodes are visible (expanded).
aria: true, // Enable WAI-ARIA support. aria: true, // Enable WAI-ARIA support.
autoActivate: true, // Automatically activate a node when it is focused (using keys). autoActivate: true, // Automatically activate a node when it is focused (using keys).
...@@ -145,83 +159,75 @@ export class LeftbarComponent { ...@@ -145,83 +159,75 @@ export class LeftbarComponent {
selectMode: 3, // 1:single, 2:multi, 3:multi-hier selectMode: 3, // 1:single, 2:multi, 3:multi-hier
tabindex: "0", // Whole tree behaves as one single control tabindex: "0", // Whole tree behaves as one single control
titlesTabbable: false, // Node titles can receive keyboard focus titlesTabbable: false, // Node titles can receive keyboard focus
dblclick: function (event, data) { dblclick: function(event, data) {
console.log('leftbar dbclick', event, data); console.log('leftbar dbclick', event, data);
if (!data.node.folder) { if (!data.node.folder) {
if (data.node.data.system_users && data.node.data.system_users.length > 1) { if (data.node.data.system_users && data.node.data.system_users.length > 1) {
DataStore.loguserlist = data.node.data.system_users; DataStore.loguserlist = data.node.data.system_users;
DataStore.loguserInfo = data.node.data; DataStore.loguserInfo = jQuery.extent({}, data.node.data, {
'nickName': data.node.title
});
} else { } else {
if (data.node.data.system_users && data.node.data.system_users.length > 0) { if (data.node.data.system_users && data.node.data.system_users.length > 0) {
let param = { let param = {
'assetId': data.node.data.id, 'assetId': data.node.data.id,
'sysUserId': data.node.data.system_users[0].id, 'sysUserId': data.node.data.system_users[0].id,
'nickName': data.node.title,
'ip': data.node.data.ip,
'port': data.node.data.port,
}; };
DataStore.termlist.push(param); DataStore.termlist.push(param);
} }
} }
// DataStore.termActive = DataStore.term.push({
// "machine": data.node.data.machine,
// "nick": data.node.title
// }) - 1;
}
}, }
}
}); });
jQuery("#left-bar").contextmenu({ jQuery("#left-bar").contextmenu({
delegate: "span.fancytree-title", delegate: "span.fancytree-title",
hide: {effect: "basic", duration: "slow"}, hide: {
menu: [ effect: "basic",
{ duration: "slow"
"title": "Cut", },
"cmd": "cut", menu: [{
"uiIcon": "fa fa-cut fa-size-1p3em" "title": "Cut",
}, "cmd": "cut",
{ "uiIcon": "fa fa-cut fa-size-1p3em"
"title": "Copy", }, {
"cmd": "copy", "title": "Copy",
"uiIcon": "fa fa-copy fa-size-1p3em" "cmd": "copy",
}, "uiIcon": "fa fa-copy fa-size-1p3em"
{ }, {
"title": "Paste", "title": "Paste",
"cmd": "paste", "cmd": "paste",
"uiIcon": "fa fa-paste fa-size-1p3em", "uiIcon": "fa fa-paste fa-size-1p3em",
"disabled": false "disabled": false
}, }, {
{ "title": "----"
"title": "----" }, {
}, "title": "Edit",
{ "cmd": "edit",
"title": "Edit", "uiIcon": "fa fa-edit fa-size-1p3em",
"cmd": "edit", "disabled": true
"uiIcon": "fa fa-edit fa-size-1p3em", }, {
"disabled": true "title": "Delete",
}, "cmd": "delete",
{ "uiIcon": "fa fa-trash fa-size-1p3em",
"title": "Delete", "disabled": true
"cmd": "delete", }, {
"uiIcon": "fa fa-trash fa-size-1p3em", "title": "More",
"disabled": true "uiIcon": "fa fa-caret-right fa-size-1p3em",
}, "children": [{
{ "title": "Sub 1",
"title": "More", "cmd": "sub1"
"uiIcon": "fa fa-caret-right fa-size-1p3em", }, {
"children": [ "title": "Sub 2",
{ "cmd": "sub1"
"title": "Sub 1", }]
"cmd": "sub1" }],
}, beforeOpen: function(event, ui) {
{
"title": "Sub 2",
"cmd": "sub1"
}
]
}
],
beforeOpen: function (event, ui) {
var node = jQuery.ui.fancytree.getNode(ui.target[0]); var node = jQuery.ui.fancytree.getNode(ui.target[0]);
// Modify menu entries depending on node status // Modify menu entries depending on node status
jQuery("#left-bar").contextmenu("enableEntry", "paste", node.isFolder()); jQuery("#left-bar").contextmenu("enableEntry", "paste", node.isFolder());
...@@ -230,7 +236,7 @@ export class LeftbarComponent { ...@@ -230,7 +236,7 @@ export class LeftbarComponent {
// Activate node on right-click // Activate node on right-click
node.setActive(); node.setActive();
}, },
select: function (event, ui) { select: function(event, ui) {
var node = jQuery.ui.fancytree.getNode(ui.target[0]); var node = jQuery.ui.fancytree.getNode(ui.target[0]);
alert("select " + ui.cmd + " on " + node); alert("select " + ui.cmd + " on " + node);
} }
...@@ -246,4 +252,4 @@ export class LeftbarComponent { ...@@ -246,4 +252,4 @@ export class LeftbarComponent {
} }
} }
\ No newline at end of file
...@@ -102,6 +102,7 @@ var AppService = (function () { ...@@ -102,6 +102,7 @@ var AppService = (function () {
exports.DataStore.Nav = JSON.parse(data); exports.DataStore.Nav = JSON.parse(data);
}); });
exports.DataStore.socket.on('leftbar', function (data) { exports.DataStore.socket.on('leftbar', function (data) {
console.log('leftbar', data);
if (data == 'changed') if (data == 'changed')
vm.ReloadLeftbar(); vm.ReloadLeftbar();
}); });
...@@ -314,7 +315,12 @@ var AppService = (function () { ...@@ -314,7 +315,12 @@ var AppService = (function () {
// //
// } // }
AppService.prototype.TerminalConnect = function (assetData) { AppService.prototype.TerminalConnect = function (assetData) {
console.log('--------------------', assetData); // assetId 资产
// sysUserId 用户
// nickName 资产昵称
// ip 资产IP
// port 资产端口
console.log('assetData', assetData);
var socket = io.connect(); var socket = io.connect();
var vm = this; var vm = this;
if (ng2_cookies_1.Cookie.get("cols")) { if (ng2_cookies_1.Cookie.get("cols")) {
...@@ -331,10 +337,17 @@ var AppService = (function () { ...@@ -331,10 +337,17 @@ var AppService = (function () {
var rows = "24"; var rows = "24";
ng2_cookies_1.Cookie.set('rows', rows, 99, '/', document.domain); ng2_cookies_1.Cookie.set('rows', rows, 99, '/', document.domain);
} }
// var id = DataStore.term.push({
// "machine": "localhost",
// "nick": "localhost",
// "connected": true,
// "socket": socket
// }) - 1;
var id = exports.DataStore.term.push({ var id = exports.DataStore.term.push({
"machine": "localhost", "machine": '' + assetData.assetId,
"nick": "localhost", "nick": assetData.nickName,
"connected": true, "connected": true,
"closed": false,
"socket": socket "socket": socket
}) - 1; }) - 1;
exports.DataStore.termActive = id; exports.DataStore.termActive = id;
...@@ -347,8 +360,10 @@ var AppService = (function () { ...@@ -347,8 +360,10 @@ var AppService = (function () {
exports.DataStore.term[id]["term"].on('title', function (title) { exports.DataStore.term[id]["term"].on('title', function (title) {
document.title = title; document.title = title;
}); });
exports.DataStore.term[id]["term"].open(document.getElementById('term-' + id)); setTimeout(function () {
exports.DataStore.term[id]["term"].write('\x1b[31mWelcome to Jumpserver!\x1b[m\r\n'); exports.DataStore.term[id]["term"].open(document.getElementById('term-' + id));
exports.DataStore.term[id]["term"].write('\x1b[31mWelcome to Jumpserver!\x1b[m\r\n');
}, 0);
socket.on('connect', function () { socket.on('connect', function () {
socket.emit('machine', assetData); socket.emit('machine', assetData);
exports.DataStore.term[id]["term"].on('data', function (data) { exports.DataStore.term[id]["term"].on('data', function (data) {
...@@ -396,6 +411,7 @@ var AppService = (function () { ...@@ -396,6 +411,7 @@ var AppService = (function () {
}; };
AppService.prototype.TerminalDisconnect = function (i) { AppService.prototype.TerminalDisconnect = function (i) {
exports.DataStore.term[i]["connected"] = false; exports.DataStore.term[i]["connected"] = false;
exports.DataStore.term[i]["closed"] = true;
exports.DataStore.term[i]["socket"].destroy(); exports.DataStore.term[i]["socket"].destroy();
exports.DataStore.term[i]["term"].write('\r\n\x1b[31mBye Bye!\x1b[m\r\n'); exports.DataStore.term[i]["term"].write('\r\n\x1b[31mBye Bye!\x1b[m\r\n');
}; };
......
This diff is collapsed.
...@@ -130,6 +130,7 @@ export class AppService { ...@@ -130,6 +130,7 @@ export class AppService {
DataStore.Nav = JSON.parse(data) DataStore.Nav = JSON.parse(data)
}); });
DataStore.socket.on('leftbar', function (data) { DataStore.socket.on('leftbar', function (data) {
console.log('leftbar', data)
if (data == 'changed') if (data == 'changed')
vm.ReloadLeftbar() vm.ReloadLeftbar()
}); });
...@@ -378,7 +379,12 @@ export class AppService { ...@@ -378,7 +379,12 @@ export class AppService {
// //
// } // }
TerminalConnect(assetData) { TerminalConnect(assetData) {
console.log('--------------------', assetData); // assetId 资产
// sysUserId 用户
// nickName 资产昵称
// ip 资产IP
// port 资产端口
console.log('assetData', assetData);
var socket = io.connect(); var socket = io.connect();
var vm = this; var vm = this;
...@@ -394,12 +400,21 @@ export class AppService { ...@@ -394,12 +400,21 @@ export class AppService {
var rows = "24"; var rows = "24";
Cookie.set('rows', rows, 99, '/', document.domain); Cookie.set('rows', rows, 99, '/', document.domain);
} }
// var id = DataStore.term.push({
// "machine": "localhost",
// "nick": "localhost",
// "connected": true,
// "socket": socket
// }) - 1;
var id = DataStore.term.push({ var id = DataStore.term.push({
"machine": "localhost", "machine": '' + assetData.assetId,
"nick": "localhost", "nick": assetData.nickName,
"connected": true, "connected": true,
"closed": false,
"socket": socket "socket": socket
}) - 1; }) - 1;
DataStore.termActive = id; DataStore.termActive = id;
DataStore.term[id]["term"] = new Terminal({ DataStore.term[id]["term"] = new Terminal({
cols: cols, cols: cols,
...@@ -411,10 +426,11 @@ export class AppService { ...@@ -411,10 +426,11 @@ export class AppService {
DataStore.term[id]["term"].on('title', function (title) { DataStore.term[id]["term"].on('title', function (title) {
document.title = title; document.title = title;
}); });
setTimeout(function() {
DataStore.term[id]["term"].open(document.getElementById('term-' + id)); DataStore.term[id]["term"].open(document.getElementById('term-' + id));
DataStore.term[id]["term"].write('\x1b[31mWelcome to Jumpserver!\x1b[m\r\n');
DataStore.term[id]["term"].write('\x1b[31mWelcome to Jumpserver!\x1b[m\r\n'); }, 0);
socket.on('connect', function () { socket.on('connect', function () {
socket.emit('machine', assetData); socket.emit('machine', assetData);
...@@ -465,6 +481,7 @@ export class AppService { ...@@ -465,6 +481,7 @@ export class AppService {
TerminalDisconnect(i) { TerminalDisconnect(i) {
DataStore.term[i]["connected"] = false; DataStore.term[i]["connected"] = false;
DataStore.term[i]["closed"] = true;
DataStore.term[i]["socket"].destroy(); DataStore.term[i]["socket"].destroy();
DataStore.term[i]["term"].write('\r\n\x1b[31mBye Bye!\x1b[m\r\n'); DataStore.term[i]["term"].write('\r\n\x1b[31mBye Bye!\x1b[m\r\n');
} }
......
...@@ -35,9 +35,9 @@ var TermComponent = (function () { ...@@ -35,9 +35,9 @@ var TermComponent = (function () {
TermComponent.prototype.timer = function () { TermComponent.prototype.timer = function () {
var _this = this; var _this = this;
if (service_1.DataStore.termlist.length > 0) { if (service_1.DataStore.termlist.length > 0) {
for (var i in service_1.DataStore.termlist) for (var i in service_1.DataStore.termlist) {
console.log('-----------------------', service_1.DataStore.termlist[i]); this._appService.TerminalConnect(service_1.DataStore.termlist[i]);
this._appService.TerminalConnect(service_1.DataStore.termlist[i]); }
service_1.DataStore.termlist = []; service_1.DataStore.termlist = [];
} }
jQuery(window).trigger('resize'); jQuery(window).trigger('resize');
...@@ -48,8 +48,28 @@ var TermComponent = (function () { ...@@ -48,8 +48,28 @@ var TermComponent = (function () {
TermComponent.prototype.close = function (i) { TermComponent.prototype.close = function (i) {
this._logger.debug(i); this._logger.debug(i);
this._appService.TerminalDisconnect(i); this._appService.TerminalDisconnect(i);
service_1.DataStore.term[i]["term"].destroy(); // DataStore.term[i]["term"].destroy();
// delete DataStore.term.splice(i, 1) service_1.DataStore.term.splice(i, 1);
this.checkActive(i);
};
TermComponent.prototype.checkActive = function (index) {
var len = service_1.DataStore.term.length;
if (len == 1) {
// 唯一一个
service_1.DataStore.termActive = 0;
}
else {
if (len == index) {
// 删了最后一个
service_1.DataStore.termActive = index - 1;
}
else if (len > index) {
service_1.DataStore.termActive = index;
}
}
};
TermComponent.prototype.setActive = function (index) {
service_1.DataStore.termActive = index;
}; };
TermComponent.prototype.dblclick = function () { TermComponent.prototype.dblclick = function () {
console.log(service_1.DataStore.term); console.log(service_1.DataStore.term);
...@@ -57,7 +77,7 @@ var TermComponent = (function () { ...@@ -57,7 +77,7 @@ var TermComponent = (function () {
TermComponent = __decorate([ TermComponent = __decorate([
core_1.Component({ core_1.Component({
selector: 'term', selector: 'term',
template: "<div id=\"tabs\" style=\"height: 30px;width: 100%\">\n <ul>\n <li *ngFor=\"let m of DataStore.term;let i = index\"\n [ngClass]=\"{'active':i==DataStore.termActive,'disconnected':!m.connected}\"\n id=\"termnav-{{i}}\">\n <span *ngIf=\"!m.$edit\" (click)=\"DataStore.termActive=i\" (dblclick)=\"m.$edit=true;DataStore.termActive=i\">{{m.nick}}</span>\n <input *ngIf=\"m.$edit\" [(ngModel)]=\"m.nick\" autofocus (blur)=\"m.$edit=false\" (keyup.enter)=\"m.$edit=false\"/>\n <a class=\"close\" (click)=\"close(i)\" onclick=\"this.parentElement.style.display='none';\">x</a></li>\n </ul>\n</div>\n<div id=\"term\" style=\"width: 100%;height: 100%;\">\n <div id=\"term-0\" [ngClass]=\"{'hidden':DataStore.termActive!=0}\"></div>\n <div *ngFor=\"let m of DataStore.term; let i = index\" [ngClass]=\"{'hidden':i+1!=DataStore.termActive}\"\n id=\"term-{{i+1}}\"></div>\n</div>", template: "<div id=\"tabs\" style=\"height: 30px;width: 100%\">\n <ul>\n <li *ngFor=\"let m of DataStore.term;let i = index\"\n [ngClass]=\"{'active':i==DataStore.termActive,'disconnected':!m.connected, 'hidden': m.closed}\"\n id=\"termnav-{{i}}\" (click)=\"setActive(i)\">\n <span *ngIf=\"!m.$edit\" (dblclick)=\"m.$edit=true;setActive(i)\">{{m.nick}}</span>\n <input *ngIf=\"m.$edit\" [(ngModel)]=\"m.nick\" autofocus (blur)=\"m.$edit=false\" (keyup.enter)=\"m.$edit=false\"/>\n <a class=\"close\" (click)=\"close(i)\">&times;</a></li>\n </ul>\n</div>\n<div id=\"term\" style=\"width: 100%;height: 100%;\">\n <div *ngFor=\"let m of DataStore.term;let i = index\" [ngClass]=\"{'disconnected':!m.connected, 'hidden': i!=DataStore.termActive || m.closed}\" id=\"term-{{i}}\"></div>\n</div>",
directives: [common_1.NgClass, common_1.FORM_DIRECTIVES] directives: [common_1.NgClass, common_1.FORM_DIRECTIVES]
}), }),
__metadata('design:paramtypes', [service_1.AppService, core_2.Logger]) __metadata('design:paramtypes', [service_1.AppService, core_2.Logger])
......
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["terminal.ts"],"names":[],"mappings":"AAAA;;GAEG;;;;;;;;;;;AAEH,qBAAwB,eAAe,CAAC,CAAA;AACxC,uBAA0C,iBAAiB,CAAC,CAAA;AAE5D,qBAAqB,sBAAsB,CAAC,CAAA;AAI5C,QAAQ,SAAS,CAAC,CAAA;AAGlB,wBAAoC,WAGpC,CAAC,CAH8C;AAwB/C;IAKI,uBAAoB,WAAsB,EACtB,OAAc;QADd,gBAAW,GAAX,WAAW,CAAW;QACtB,YAAO,GAAP,OAAO,CAAO;QALlC,cAAS,GAAG,mBAAS,CAAC;QAMlB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IACvD,CAAC;IAED,gCAAQ,GAAR;QACI,mEAAmE;QACnE,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,uCAAe,GAAf;QACI,wCAAwC;QACxC,6DAA6D;QAC7D,8DAA8D;IAClE,CAAC;IAED,6BAAK,GAAL;QAAA,iBAWC;QAVG,EAAE,CAAC,CAAC,mBAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAChC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,mBAAS,CAAC,QAAQ,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,mBAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,mBAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,mBAAS,CAAC,QAAQ,GAAG,EAAE,CAAA;QAC3B,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,UAAU,CAAC;YACP,KAAI,CAAC,KAAK,EAAE,CAAA;QAChB,CAAC,EAAE,CAAC,CAAC,CAAA;IACT,CAAC;IAED,6BAAK,GAAL,UAAM,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACvC,mBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;QAEpC,qCAAqC;IACzC,CAAC;IAED,gCAAQ,GAAR;QACI,OAAO,CAAC,GAAG,CAAC,mBAAS,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAjEL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,s7BAcP;YACH,UAAU,EAAE,CAAC,gBAAO,EAAE,wBAAe,CAAC;SACzC,CAAC;;qBAAA;IAgDF,oBAAC;AAAD,CAAC,AA7CD,IA6CC;AA7CY,qBAAa,gBA6CzB,CAAA"} {"version":3,"file":"terminal.js","sourceRoot":"","sources":["terminal.ts"],"names":[],"mappings":"AAAA;;GAEG;;;;;;;;;;;AAEH,qBAAwB,eAAe,CAAC,CAAA;AACxC,uBAA0C,iBAAiB,CAAC,CAAA;AAE5D,qBAAqB,sBAAsB,CAAC,CAAA;AAI5C,QAAQ,SAAS,CAAC,CAAA;AAGlB,wBAAoC,WAGpC,CAAC,CAH8C;AAsB/C;IAKI,uBAAoB,WAAsB,EACtB,OAAc;QADd,gBAAW,GAAX,WAAW,CAAW;QACtB,YAAO,GAAP,OAAO,CAAO;QALlC,cAAS,GAAG,mBAAS,CAAC;QAMlB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IACvD,CAAC;IAED,gCAAQ,GAAR;QACI,mEAAmE;QACnE,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,uCAAe,GAAf;QACI,wCAAwC;QACxC,6DAA6D;QAC7D,8DAA8D;IAClE,CAAC;IAED,6BAAK,GAAL;QAAA,iBAWC;QAVG,EAAE,CAAC,CAAC,mBAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAChC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,mBAAS,CAAC,QAAQ,CAAC,CAAA,CAAC;gBAC9B,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,mBAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,CAAC;YACD,mBAAS,CAAC,QAAQ,GAAG,EAAE,CAAA;QAC3B,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,UAAU,CAAC;YACP,KAAI,CAAC,KAAK,EAAE,CAAA;QAChB,CAAC,EAAE,CAAC,CAAC,CAAA;IACT,CAAC;IAED,6BAAK,GAAL,UAAM,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACvC,uCAAuC;QACvC,mBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,mCAAW,GAAX,UAAY,KAAK;QACb,IAAI,GAAG,GAAG,mBAAS,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,EAAE,CAAA,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACV,OAAO;YACP,mBAAS,CAAC,UAAU,GAAG,CAAC,CAAC;QAC7B,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC;gBACf,SAAS;gBACT,mBAAS,CAAC,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;YACrC,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;gBACrB,mBAAS,CAAC,UAAU,GAAG,KAAK,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC;IACD,iCAAS,GAAT,UAAU,KAAK;QACX,mBAAS,CAAC,UAAU,GAAG,KAAK,CAAC;IACjC,CAAC;IACD,gCAAQ,GAAR;QACI,OAAO,CAAC,GAAG,CAAC,mBAAS,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IA/EL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,k1BAYP;YACH,UAAU,EAAE,CAAC,gBAAO,EAAE,wBAAe,CAAC;SACzC,CAAC;;qBAAA;IAgEF,oBAAC;AAAD,CAAC,AA7DD,IA6DC;AA7DY,qBAAa,gBA6DzB,CAAA"}
\ No newline at end of file \ No newline at end of file
...@@ -20,17 +20,15 @@ import {AppService, DataStore} from './service' ...@@ -20,17 +20,15 @@ import {AppService, DataStore} from './service'
template: `<div id="tabs" style="height: 30px;width: 100%"> template: `<div id="tabs" style="height: 30px;width: 100%">
<ul> <ul>
<li *ngFor="let m of DataStore.term;let i = index" <li *ngFor="let m of DataStore.term;let i = index"
[ngClass]="{'active':i==DataStore.termActive,'disconnected':!m.connected}" [ngClass]="{'active':i==DataStore.termActive,'disconnected':!m.connected, 'hidden': m.closed}"
id="termnav-{{i}}"> id="termnav-{{i}}" (click)="setActive(i)">
<span *ngIf="!m.$edit" (click)="DataStore.termActive=i" (dblclick)="m.$edit=true;DataStore.termActive=i">{{m.nick}}</span> <span *ngIf="!m.$edit" (dblclick)="m.$edit=true;setActive(i)">{{m.nick}}</span>
<input *ngIf="m.$edit" [(ngModel)]="m.nick" autofocus (blur)="m.$edit=false" (keyup.enter)="m.$edit=false"/> <input *ngIf="m.$edit" [(ngModel)]="m.nick" autofocus (blur)="m.$edit=false" (keyup.enter)="m.$edit=false"/>
<a class="close" (click)="close(i)" onclick="this.parentElement.style.display='none';">x</a></li> <a class="close" (click)="close(i)">&times;</a></li>
</ul> </ul>
</div> </div>
<div id="term" style="width: 100%;height: 100%;"> <div id="term" style="width: 100%;height: 100%;">
<div id="term-0" [ngClass]="{'hidden':DataStore.termActive!=0}"></div> <div *ngFor="let m of DataStore.term;let i = index" [ngClass]="{'disconnected':!m.connected, 'hidden': i!=DataStore.termActive || m.closed}" id="term-{{i}}"></div>
<div *ngFor="let m of DataStore.term; let i = index" [ngClass]="{'hidden':i+1!=DataStore.termActive}"
id="term-{{i+1}}"></div>
</div>`, </div>`,
directives: [NgClass, FORM_DIRECTIVES] directives: [NgClass, FORM_DIRECTIVES]
}) })
...@@ -59,9 +57,9 @@ export class TermComponent { ...@@ -59,9 +57,9 @@ export class TermComponent {
timer() { timer() {
if (DataStore.termlist.length > 0) { if (DataStore.termlist.length > 0) {
for (var i in DataStore.termlist) for (var i in DataStore.termlist){
console.log('-----------------------', DataStore.termlist[i]);
this._appService.TerminalConnect(DataStore.termlist[i]); this._appService.TerminalConnect(DataStore.termlist[i]);
}
DataStore.termlist = [] DataStore.termlist = []
} }
jQuery(window).trigger('resize'); jQuery(window).trigger('resize');
...@@ -73,11 +71,27 @@ export class TermComponent { ...@@ -73,11 +71,27 @@ export class TermComponent {
close(i) { close(i) {
this._logger.debug(i); this._logger.debug(i);
this._appService.TerminalDisconnect(i); this._appService.TerminalDisconnect(i);
DataStore.term[i]["term"].destroy(); // DataStore.term[i]["term"].destroy();
DataStore.term.splice(i, 1);
// delete DataStore.term.splice(i, 1) this.checkActive(i);
}
checkActive(index) {
var len = DataStore.term.length;
if(len == 1) {
// 唯一一个
DataStore.termActive = 0;
} else {
if (len == index) {
// 删了最后一个
DataStore.termActive = index - 1;
} else if (len > index) {
DataStore.termActive = index;
}
}
}
setActive(index) {
DataStore.termActive = index;
} }
dblclick() { dblclick() {
console.log(DataStore.term) console.log(DataStore.term)
} }
......
0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'start' ]
2 info using npm@4.0.1
3 info using node@v4.3.1
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle Luna@0.0.1~prestart: Luna@0.0.1
6 silly lifecycle Luna@0.0.1~prestart: no script for prestart, continuing
7 info lifecycle Luna@0.0.1~start: Luna@0.0.1
8 verbose lifecycle Luna@0.0.1~start: unsafe-perm in lifecycle true
9 verbose lifecycle Luna@0.0.1~start: PATH: /usr/local/lib/node_modules/npm/bin/node-gyp-bin:/Users/zhouxiaoxia/workspace/sofia/luna/node_modules/.bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/zhouxiaoxia/Library/Python/2.7/bin/
10 verbose lifecycle Luna@0.0.1~start: CWD: /Users/zhouxiaoxia/workspace/sofia/luna
11 silly lifecycle Luna@0.0.1~start: Args: [ '-c', 'grunt && tsc && concurrently "npm run tsc:w" ' ]
12 silly lifecycle Luna@0.0.1~start: Returned: code: 2 signal: null
13 info lifecycle Luna@0.0.1~start: Failed to exec start script
14 verbose stack Error: Luna@0.0.1 start: `grunt && tsc && concurrently "npm run tsc:w" `
14 verbose stack Exit status 2
14 verbose stack at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/lifecycle.js:279:16)
14 verbose stack at emitTwo (events.js:87:13)
14 verbose stack at EventEmitter.emit (events.js:172:7)
14 verbose stack at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/spawn.js:40:14)
14 verbose stack at emitTwo (events.js:87:13)
14 verbose stack at ChildProcess.emit (events.js:172:7)
14 verbose stack at maybeClose (internal/child_process.js:821:16)
14 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
15 verbose pkgid Luna@0.0.1
16 verbose cwd /Users/zhouxiaoxia/workspace/sofia/luna/luna
17 error Darwin 16.6.0
18 error argv "/usr/local/bin/node" "/usr/local/bin/npm" "start"
19 error node v4.3.1
20 error npm v4.0.1
21 error code ELIFECYCLE
22 error Luna@0.0.1 start: `grunt && tsc && concurrently "npm run tsc:w" `
22 error Exit status 2
23 error Failed at the Luna@0.0.1 start script 'grunt && tsc && concurrently "npm run tsc:w" '.
23 error Make sure you have the latest version of node.js and npm installed.
23 error If you do, this is most likely a problem with the Luna package,
23 error not with npm itself.
23 error Tell the author that this fails on your system:
23 error grunt && tsc && concurrently "npm run tsc:w"
23 error You can get information on how to open an issue for this project with:
23 error npm bugs Luna
23 error Or if that isn't available, you can get their info via:
23 error npm owner ls Luna
23 error There is likely additional logging output above.
24 verbose exit [ 1, true ]
...@@ -257,7 +257,30 @@ nav .nav .dropdown-content li a span { ...@@ -257,7 +257,30 @@ nav .nav .dropdown-content li a span {
#left-bar.hideleftbar { #left-bar.hideleftbar {
left: -198px; left: -198px;
} }
#left-bar .select-user-panel {
position: fixed;
top: 200px;
left: 50%;
width: 300px;
padding: 20px;
border: 1px solid #ddd;
border-radius: 6px;
margin-left: -150px;
line-height: 32px;
font-size: 14px;
background:#2f2a2a;
color: #efefef;;
z-index: 8000;
}
#left-bar .select-user-panel h2 {
border-bottom: 1px solid #999;
line-height: 1;
padding-bottom: 20px;
font-size: 18px;
}
#left-bar .select-user-panel .log-user {
cursor: pointer;
}
#ngdiv.hideleftbar { #ngdiv.hideleftbar {
left: 2px !important; left: 2px !important;
} }
...@@ -329,7 +352,7 @@ span.fancytree-selected span { ...@@ -329,7 +352,7 @@ span.fancytree-selected span {
.fancytree-treefocus span.fancytree-active span.fancytree-title, .fancytree-treefocus span.fancytree-active span.fancytree-title,
.fancytree-treefocus span.fancytree-selected span.fancytree-title { .fancytree-treefocus span.fancytree-selected span.fancytree-title {
color: #fff; color: #fff;
background: rgb(47, 42, 42); background: #a9a9a9;
} }
span.fancytree-treefocus span.fancytree-title, span.fancytree-treefocus span.fancytree-title,
span.fancytree-active span.fancytree-title, span.fancytree-active span.fancytree-title,
...@@ -496,6 +519,9 @@ span.fancytree-icon { ...@@ -496,6 +519,9 @@ span.fancytree-icon {
#tabs ul li.disconnected { #tabs ul li.disconnected {
background-color: darkgray; background-color: darkgray;
} }
#tabs ul li.hidden {
display: none;
}
.layui-layer.layui-layer-dialog.layui-layer-prompt.layer-anim textarea { .layui-layer.layui-layer-dialog.layui-layer-prompt.layer-anim textarea {
height: 160px; height: 160px;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
...@@ -40,6 +40,36 @@ var SearchBar = (function () { ...@@ -40,6 +40,36 @@ var SearchBar = (function () {
], SearchBar); ], SearchBar);
return SearchBar; return SearchBar;
}()); }());
var UserList = (function () {
function UserList(_appService, _logger) {
this._appService = _appService;
this._logger = _logger;
this.DataStore = service_1.DataStore;
this._logger.log('LeftbarComponent.ts:UserList');
}
UserList.prototype.ngOnInit = function () { };
UserList.prototype.selectUser = function (serverInfo, index) {
this.selectedUser = serverInfo.system_users[index];
var param = {
'assetId': serverInfo.id,
'sysUserId': this.selectedUser['id'],
'nickName': serverInfo.title,
'ip': serverInfo.ip,
'port': serverInfo.port,
};
service_1.DataStore.termlist.push(param);
service_1.DataStore.loguserlist = [];
service_1.DataStore.loguserInfo = {};
};
UserList = __decorate([
core_1.Component({
selector: 'select-user-panel',
template: "<div class=\"select-user-panel\" *ngIf=\"DataStore.loguserlist.length\"><h2>\u9009\u62E9\u8981\u767B\u5F55\u7684\u8D26\u6237</h2>\n <div class=\"log-user\" *ngFor=\"let user of DataStore.loguserlist; let i = index\" (click)=\"selectUser(DataStore.loguserInfo, i)\">\n {{i+1}}: {{user.name}}\n </div></div>"
}),
__metadata('design:paramtypes', [service_1.AppService, core_2.Logger])
], UserList);
return UserList;
}());
var LeftbarComponent = (function () { var LeftbarComponent = (function () {
function LeftbarComponent(_appService, _logger) { function LeftbarComponent(_appService, _logger) {
this._appService = _appService; this._appService = _appService;
...@@ -76,7 +106,9 @@ var LeftbarComponent = (function () { ...@@ -76,7 +106,9 @@ var LeftbarComponent = (function () {
folderOpen: "fa fa-folder-open-o" folderOpen: "fa fa-folder-open-o"
} }
}, },
source: { url: service_1.DataStore.leftbar }, source: {
url: service_1.DataStore.leftbar
},
activeVisible: true, activeVisible: true,
aria: true, aria: true,
autoActivate: true, autoActivate: true,
...@@ -106,64 +138,69 @@ var LeftbarComponent = (function () { ...@@ -106,64 +138,69 @@ var LeftbarComponent = (function () {
dblclick: function (event, data) { dblclick: function (event, data) {
console.log('leftbar dbclick', event, data); console.log('leftbar dbclick', event, data);
if (!data.node.folder) { if (!data.node.folder) {
var param = { if (data.node.data.system_users && data.node.data.system_users.length > 1) {
'assetId': data.node.data.id, service_1.DataStore.loguserlist = data.node.data.system_users;
'sysUserId': data.node.data.system_users[0].id, service_1.DataStore.loguserInfo = jQuery.extent({}, data.node.data, {
}; 'nickName': data.node.title
service_1.DataStore.termlist.push(param); });
}
else {
if (data.node.data.system_users && data.node.data.system_users.length > 0) {
var param = {
'assetId': data.node.data.id,
'sysUserId': data.node.data.system_users[0].id,
'nickName': data.node.title,
'ip': data.node.data.ip,
'port': data.node.data.port,
};
service_1.DataStore.termlist.push(param);
}
}
} }
}, }
}); });
jQuery("#left-bar").contextmenu({ jQuery("#left-bar").contextmenu({
delegate: "span.fancytree-title", delegate: "span.fancytree-title",
hide: { effect: "basic", duration: "slow" }, hide: {
menu: [ effect: "basic",
{ duration: "slow"
},
menu: [{
"title": "Cut", "title": "Cut",
"cmd": "cut", "cmd": "cut",
"uiIcon": "fa fa-cut fa-size-1p3em" "uiIcon": "fa fa-cut fa-size-1p3em"
}, }, {
{
"title": "Copy", "title": "Copy",
"cmd": "copy", "cmd": "copy",
"uiIcon": "fa fa-copy fa-size-1p3em" "uiIcon": "fa fa-copy fa-size-1p3em"
}, }, {
{
"title": "Paste", "title": "Paste",
"cmd": "paste", "cmd": "paste",
"uiIcon": "fa fa-paste fa-size-1p3em", "uiIcon": "fa fa-paste fa-size-1p3em",
"disabled": false "disabled": false
}, }, {
{
"title": "----" "title": "----"
}, }, {
{
"title": "Edit", "title": "Edit",
"cmd": "edit", "cmd": "edit",
"uiIcon": "fa fa-edit fa-size-1p3em", "uiIcon": "fa fa-edit fa-size-1p3em",
"disabled": true "disabled": true
}, }, {
{
"title": "Delete", "title": "Delete",
"cmd": "delete", "cmd": "delete",
"uiIcon": "fa fa-trash fa-size-1p3em", "uiIcon": "fa fa-trash fa-size-1p3em",
"disabled": true "disabled": true
}, }, {
{
"title": "More", "title": "More",
"uiIcon": "fa fa-caret-right fa-size-1p3em", "uiIcon": "fa fa-caret-right fa-size-1p3em",
"children": [ "children": [{
{
"title": "Sub 1", "title": "Sub 1",
"cmd": "sub1" "cmd": "sub1"
}, }, {
{
"title": "Sub 2", "title": "Sub 2",
"cmd": "sub1" "cmd": "sub1"
} }]
] }],
}
],
beforeOpen: function (event, ui) { beforeOpen: function (event, ui) {
var node = jQuery.ui.fancytree.getNode(ui.target[0]); var node = jQuery.ui.fancytree.getNode(ui.target[0]);
// Modify menu entries depending on node status // Modify menu entries depending on node status
......
{"version":3,"file":"leftbar.js","sourceRoot":"","sources":["leftbar.ts"],"names":[],"mappings":"AAAA;;GAEG;;;;;;;;;;;AAEH,qBAA0C,eAAe,CAAC,CAAA;AAG1D,qBAAqB,sBAAsB,CAAC,CAAA;AAE5C,QAAQ,SAAS,CAAC,CAAA;AAGlB,wBAAoC,WAEpC,CAAC,CAF8C;AAQ/C;IAII,mBAAoB,WAAsB,EACtB,OAAc;QADd,gBAAW,GAAX,WAAW,CAAW;QACtB,YAAO,GAAP,OAAO,CAAO;QAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IACtD,CAAC;IAED,+BAAW,GAAX,UAAY,OAAO;QACf,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;IACxC,CAAC;IAED,+BAAW,GAAX,UAAY,MAAM;QACd,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC;IAdD;QAAC,YAAK,EAAE;;4CAAA;IAPZ;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,gSAEgC;SAC7C,CAAC;;iBAAA;IAiBF,gBAAC;AAAD,CAAC,AAhBD,IAgBC;AAUD;IAGI,0BAAoB,WAAsB,EACtB,OAAc;QADd,gBAAW,GAAX,WAAW,CAAW;QACtB,YAAO,GAAP,OAAO,CAAO;QAHlC,cAAS,GAAG,mBAAS,CAAC;QAIlB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,mBAAS,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,mCAAQ,GAAR;QACI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAEtE,CAAC;IAED,0CAAe,GAAf;QACI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACzE,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC;YAC1B,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE;gBACH,GAAG,EAAE;oBACD,QAAQ,EAAE,gBAAgB;oBAC1B,gBAAgB,EAAE,sBAAsB;oBACxC,eAAe,EAAE,cAAc;oBAC/B,UAAU,EAAE,mBAAmB;oBAC/B,UAAU,EAAE,wBAAwB;oBACpC,KAAK,EAAE,eAAe;oBACtB,cAAc,EAAE,mBAAmB;oBACnC,YAAY,EAAE,mBAAmB;oBACjC,YAAY,EAAE,kBAAkB;oBAChC,MAAM,EAAE,aAAa;oBACrB,OAAO,EAAE,wBAAwB;oBACjC,sBAAsB;oBACtB,6EAA6E;oBAC7E,GAAG,EAAE,YAAY;oBACjB,OAAO,EAAE,cAAc;oBACvB,MAAM,EAAE,cAAc;oBACtB,UAAU,EAAE,qBAAqB;iBACpC;aACJ;YACD,MAAM,EAAE,EAAC,GAAG,EAAE,mBAAS,CAAC,OAAO,EAAC;YAChC,aAAa,EAAE,IAAI;YACnB,IAAI,EAAE,IAAI;YACV,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,CAAC;YAClB,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,CAAC;YACb,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,IAAI;YAEV,iCAAiC;YACjC,kCAAkC;YAClC,6CAA6C;YAC7C,QAAQ;YACR,KAAK;YACL,QAAQ,EAAE,KAAK;YACf,gBAAgB,EAAE,GAAG;YACrB,cAAc,EAAE,CAAC;YACjB,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,CAAC;YACb,QAAQ,EAAE,GAAG;YACb,cAAc,EAAE,KAAK;YACrB,QAAQ,EAAE,UAAU,KAAK,EAAE,IAAI;gBAC3B,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC5C,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;oBACpB,IAAI,KAAK,GAAG;wBACR,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC5B,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;qBACjD,CAAC;oBACF,mBAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAKnC,CAAC;YAEL,CAAC;SACJ,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC;YAC5B,QAAQ,EAAE,sBAAsB;YAChC,IAAI,EAAE,EAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAC;YACzC,IAAI,EAAE;gBACF;oBACI,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK;oBACZ,QAAQ,EAAE,yBAAyB;iBACtC;gBACD;oBACI,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE,MAAM;oBACb,QAAQ,EAAE,0BAA0B;iBACvC;gBACD;oBACI,OAAO,EAAE,OAAO;oBAChB,KAAK,EAAE,OAAO;oBACd,QAAQ,EAAE,2BAA2B;oBACrC,UAAU,EAAE,KAAK;iBACpB;gBACD;oBACI,OAAO,EAAE,MAAM;iBAClB;gBACD;oBACI,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE,MAAM;oBACb,QAAQ,EAAE,0BAA0B;oBACpC,UAAU,EAAE,IAAI;iBACnB;gBACD;oBACI,OAAO,EAAE,QAAQ;oBACjB,KAAK,EAAE,QAAQ;oBACf,QAAQ,EAAE,2BAA2B;oBACrC,UAAU,EAAE,IAAI;iBACnB;gBACD;oBACI,OAAO,EAAE,MAAM;oBACf,QAAQ,EAAE,iCAAiC;oBAC3C,UAAU,EAAE;wBACR;4BACI,OAAO,EAAE,OAAO;4BAChB,KAAK,EAAE,MAAM;yBAChB;wBACD;4BACI,OAAO,EAAE,OAAO;4BAChB,KAAK,EAAE,MAAM;yBAChB;qBACJ;iBACJ;aACJ;YACD,UAAU,EAAE,UAAU,KAAK,EAAE,EAAE;gBAC3B,IAAI,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,+CAA+C;gBAC/C,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACzE,2BAA2B;gBAE3B,+BAA+B;gBAC/B,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,CAAC;YACD,MAAM,EAAE,UAAU,KAAK,EAAE,EAAE;gBACvB,IAAI,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;YAC9C,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,oCAAS,GAAT;QACI,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAChE,CAAC;IAED,+BAAI,GAAJ;QACI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAA;IAC/B,CAAC;IApKL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,uGACsB;YAChC,UAAU,EAAE,CAAC,SAAS,CAAC;SAC1B,CAAC;;wBAAA;IAkKF,uBAAC;AAAD,CAAC,AA/JD,IA+JC;AA/JY,wBAAgB,mBA+J5B,CAAA"} {"version":3,"file":"leftbar.js","sourceRoot":"","sources":["leftbar.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
...@@ -2,15 +2,29 @@ ...@@ -2,15 +2,29 @@
* Created by liuzheng on 7/12/16. * Created by liuzheng on 7/12/16.
*/ */
import {Component, OnChanges, Input} from '@angular/core'; import {
import {NgClass} from '@angular/common'; Component,
import {ROUTER_DIRECTIVES} from '@angular/router-deprecated'; OnChanges,
import {Logger} from "angular2-logger/core"; OnInit,
Input
import 'rxjs/Rx'; } from '@angular/core';
declare var jQuery:any; import {
NgClass
import {AppService, DataStore} from './service' } from '@angular/common';
import {
ROUTER_DIRECTIVES
} from '@angular/router-deprecated';
import {
Logger
} from "angular2-logger/core";
import 'rxjs/Rx';
declare var jQuery: any;
import {
AppService,
DataStore
} from './service'
@Component({ @Component({
selector: 'search-bar', selector: 'search-bar',
...@@ -20,10 +34,10 @@ import {AppService, DataStore} from './service' ...@@ -20,10 +34,10 @@ import {AppService, DataStore} from './service'
}) })
class SearchBar implements OnChanges { class SearchBar implements OnChanges {
@Input() input; @Input() input;
q:string; q: string;
constructor(private _appService:AppService, constructor(private _appService: AppService,
private _logger:Logger) { private _logger: Logger) {
this._logger.log('LeftbarComponent.ts:SearchBar'); this._logger.log('LeftbarComponent.ts:SearchBar');
} }
...@@ -36,6 +50,39 @@ class SearchBar implements OnChanges { ...@@ -36,6 +50,39 @@ class SearchBar implements OnChanges {
} }
} }
@Component({
selector: 'select-user-panel',
template: `<div class="select-user-panel" *ngIf="DataStore.loguserlist.length"><h2>选择要登录的账户</h2>
<div class="log-user" *ngFor="let user of DataStore.loguserlist; let i = index" (click)="selectUser(DataStore.loguserInfo, i)">
{{i+1}}: {{user.name}}
</div></div>`
})
class UserList implements OnInit {
DataStore = DataStore;
users: Object[];
selectedUser: Object;
constructor(private _appService: AppService,
private _logger: Logger) {
this._logger.log('LeftbarComponent.ts:UserList');
}
ngOnInit() {}
selectUser(serverInfo, index) {
this.selectedUser = serverInfo.system_users[index];
let param = {
'assetId': serverInfo.id,
'sysUserId': this.selectedUser['id'],
'nickName': serverInfo.title,
'ip': serverInfo.ip,
'port': serverInfo.port,
};
DataStore.termlist.push(param);
DataStore.loguserlist = [];
DataStore.loguserInfo = {};
}
}
@Component({ @Component({
selector: 'div', selector: 'div',
template: `<div style="height:30px;width:100%;background-color: #00b3ee"> template: `<div style="height:30px;width:100%;background-color: #00b3ee">
...@@ -46,9 +93,8 @@ class SearchBar implements OnChanges { ...@@ -46,9 +93,8 @@ class SearchBar implements OnChanges {
export class LeftbarComponent { export class LeftbarComponent {
DataStore = DataStore; DataStore = DataStore;
constructor(private _appService: AppService,
constructor(private _appService:AppService, private _logger: Logger) {
private _logger:Logger) {
this._logger.log('LeftbarComponent.ts:LeftbarComponent'); this._logger.log('LeftbarComponent.ts:LeftbarComponent');
this._logger.debug("check DataStroe.leftbar", DataStore.leftbar); this._logger.debug("check DataStroe.leftbar", DataStore.leftbar);
} }
...@@ -83,7 +129,9 @@ export class LeftbarComponent { ...@@ -83,7 +129,9 @@ export class LeftbarComponent {
folderOpen: "fa fa-folder-open-o" folderOpen: "fa fa-folder-open-o"
} }
}, },
source: {url: DataStore.leftbar}, source: {
url: DataStore.leftbar
},
activeVisible: true, // Make sure, active nodes are visible (expanded). activeVisible: true, // Make sure, active nodes are visible (expanded).
aria: true, // Enable WAI-ARIA support. aria: true, // Enable WAI-ARIA support.
autoActivate: true, // Automatically activate a node when it is focused (using keys). autoActivate: true, // Automatically activate a node when it is focused (using keys).
...@@ -111,74 +159,75 @@ export class LeftbarComponent { ...@@ -111,74 +159,75 @@ export class LeftbarComponent {
selectMode: 3, // 1:single, 2:multi, 3:multi-hier selectMode: 3, // 1:single, 2:multi, 3:multi-hier
tabindex: "0", // Whole tree behaves as one single control tabindex: "0", // Whole tree behaves as one single control
titlesTabbable: false, // Node titles can receive keyboard focus titlesTabbable: false, // Node titles can receive keyboard focus
dblclick: function (event, data) { dblclick: function(event, data) {
console.log('leftbar dbclick', event, data); console.log('leftbar dbclick', event, data);
if (!data.node.folder) { if (!data.node.folder) {
let param = { if (data.node.data.system_users && data.node.data.system_users.length > 1) {
'assetId': data.node.data.id, DataStore.loguserlist = data.node.data.system_users;
'sysUserId': data.node.data.system_users[0].id, DataStore.loguserInfo = jQuery.extent({}, data.node.data, {
}; 'nickName': data.node.title
DataStore.termlist.push(param); });
// DataStore.termActive = DataStore.term.push({ } else {
// "machine": data.node.data.machine, if (data.node.data.system_users && data.node.data.system_users.length > 0) {
// "nick": data.node.title let param = {
// }) - 1; 'assetId': data.node.data.id,
} 'sysUserId': data.node.data.system_users[0].id,
'nickName': data.node.title,
'ip': data.node.data.ip,
'port': data.node.data.port,
};
DataStore.termlist.push(param);
}
}, }
}
}
}); });
jQuery("#left-bar").contextmenu({ jQuery("#left-bar").contextmenu({
delegate: "span.fancytree-title", delegate: "span.fancytree-title",
hide: {effect: "basic", duration: "slow"}, hide: {
menu: [ effect: "basic",
{ duration: "slow"
"title": "Cut", },
"cmd": "cut", menu: [{
"uiIcon": "fa fa-cut fa-size-1p3em" "title": "Cut",
}, "cmd": "cut",
{ "uiIcon": "fa fa-cut fa-size-1p3em"
"title": "Copy", }, {
"cmd": "copy", "title": "Copy",
"uiIcon": "fa fa-copy fa-size-1p3em" "cmd": "copy",
}, "uiIcon": "fa fa-copy fa-size-1p3em"
{ }, {
"title": "Paste", "title": "Paste",
"cmd": "paste", "cmd": "paste",
"uiIcon": "fa fa-paste fa-size-1p3em", "uiIcon": "fa fa-paste fa-size-1p3em",
"disabled": false "disabled": false
}, }, {
{ "title": "----"
"title": "----" }, {
}, "title": "Edit",
{ "cmd": "edit",
"title": "Edit", "uiIcon": "fa fa-edit fa-size-1p3em",
"cmd": "edit", "disabled": true
"uiIcon": "fa fa-edit fa-size-1p3em", }, {
"disabled": true "title": "Delete",
}, "cmd": "delete",
{ "uiIcon": "fa fa-trash fa-size-1p3em",
"title": "Delete", "disabled": true
"cmd": "delete", }, {
"uiIcon": "fa fa-trash fa-size-1p3em", "title": "More",
"disabled": true "uiIcon": "fa fa-caret-right fa-size-1p3em",
}, "children": [{
{ "title": "Sub 1",
"title": "More", "cmd": "sub1"
"uiIcon": "fa fa-caret-right fa-size-1p3em", }, {
"children": [ "title": "Sub 2",
{ "cmd": "sub1"
"title": "Sub 1", }]
"cmd": "sub1" }],
}, beforeOpen: function(event, ui) {
{
"title": "Sub 2",
"cmd": "sub1"
}
]
}
],
beforeOpen: function (event, ui) {
var node = jQuery.ui.fancytree.getNode(ui.target[0]); var node = jQuery.ui.fancytree.getNode(ui.target[0]);
// Modify menu entries depending on node status // Modify menu entries depending on node status
jQuery("#left-bar").contextmenu("enableEntry", "paste", node.isFolder()); jQuery("#left-bar").contextmenu("enableEntry", "paste", node.isFolder());
...@@ -187,7 +236,7 @@ export class LeftbarComponent { ...@@ -187,7 +236,7 @@ export class LeftbarComponent {
// Activate node on right-click // Activate node on right-click
node.setActive(); node.setActive();
}, },
select: function (event, ui) { select: function(event, ui) {
var node = jQuery.ui.fancytree.getNode(ui.target[0]); var node = jQuery.ui.fancytree.getNode(ui.target[0]);
alert("select " + ui.cmd + " on " + node); alert("select " + ui.cmd + " on " + node);
} }
...@@ -203,4 +252,4 @@ export class LeftbarComponent { ...@@ -203,4 +252,4 @@ export class LeftbarComponent {
} }
} }
\ No newline at end of file
...@@ -73,6 +73,8 @@ exports.DataStore = { ...@@ -73,6 +73,8 @@ exports.DataStore = {
leftbarhide: false, leftbarhide: false,
termlist: [], termlist: [],
windowsize: [], windowsize: [],
loguserInfo: {},
loguserlist: [],
}; };
var AppService = (function () { var AppService = (function () {
function AppService(http, _router, _logger) { function AppService(http, _router, _logger) {
...@@ -100,6 +102,7 @@ var AppService = (function () { ...@@ -100,6 +102,7 @@ var AppService = (function () {
exports.DataStore.Nav = JSON.parse(data); exports.DataStore.Nav = JSON.parse(data);
}); });
exports.DataStore.socket.on('leftbar', function (data) { exports.DataStore.socket.on('leftbar', function (data) {
console.log('leftbar', data);
if (data == 'changed') if (data == 'changed')
vm.ReloadLeftbar(); vm.ReloadLeftbar();
}); });
...@@ -312,6 +315,12 @@ var AppService = (function () { ...@@ -312,6 +315,12 @@ var AppService = (function () {
// //
// } // }
AppService.prototype.TerminalConnect = function (assetData) { AppService.prototype.TerminalConnect = function (assetData) {
// assetId 资产
// sysUserId 用户
// nickName 资产昵称
// ip 资产IP
// port 资产端口
console.log('assetData', assetData);
var socket = io.connect(); var socket = io.connect();
var vm = this; var vm = this;
if (ng2_cookies_1.Cookie.get("cols")) { if (ng2_cookies_1.Cookie.get("cols")) {
...@@ -328,10 +337,17 @@ var AppService = (function () { ...@@ -328,10 +337,17 @@ var AppService = (function () {
var rows = "24"; var rows = "24";
ng2_cookies_1.Cookie.set('rows', rows, 99, '/', document.domain); ng2_cookies_1.Cookie.set('rows', rows, 99, '/', document.domain);
} }
// var id = DataStore.term.push({
// "machine": "localhost",
// "nick": "localhost",
// "connected": true,
// "socket": socket
// }) - 1;
var id = exports.DataStore.term.push({ var id = exports.DataStore.term.push({
"machine": "localhost", "machine": '' + assetData.assetId,
"nick": "localhost", "nick": assetData.nickName,
"connected": true, "connected": true,
"closed": false,
"socket": socket "socket": socket
}) - 1; }) - 1;
exports.DataStore.termActive = id; exports.DataStore.termActive = id;
...@@ -344,8 +360,10 @@ var AppService = (function () { ...@@ -344,8 +360,10 @@ var AppService = (function () {
exports.DataStore.term[id]["term"].on('title', function (title) { exports.DataStore.term[id]["term"].on('title', function (title) {
document.title = title; document.title = title;
}); });
exports.DataStore.term[id]["term"].open(document.getElementById('term-' + id)); setTimeout(function () {
exports.DataStore.term[id]["term"].write('\x1b[31mWelcome to Jumpserver!\x1b[m\r\n'); exports.DataStore.term[id]["term"].open(document.getElementById('term-' + id));
exports.DataStore.term[id]["term"].write('\x1b[31mWelcome to Jumpserver!\x1b[m\r\n');
}, 0);
socket.on('connect', function () { socket.on('connect', function () {
socket.emit('machine', assetData); socket.emit('machine', assetData);
exports.DataStore.term[id]["term"].on('data', function (data) { exports.DataStore.term[id]["term"].on('data', function (data) {
...@@ -393,6 +411,7 @@ var AppService = (function () { ...@@ -393,6 +411,7 @@ var AppService = (function () {
}; };
AppService.prototype.TerminalDisconnect = function (i) { AppService.prototype.TerminalDisconnect = function (i) {
exports.DataStore.term[i]["connected"] = false; exports.DataStore.term[i]["connected"] = false;
exports.DataStore.term[i]["closed"] = true;
exports.DataStore.term[i]["socket"].destroy(); exports.DataStore.term[i]["socket"].destroy();
exports.DataStore.term[i]["term"].write('\r\n\x1b[31mBye Bye!\x1b[m\r\n'); exports.DataStore.term[i]["term"].write('\r\n\x1b[31mBye Bye!\x1b[m\r\n');
}; };
......
This diff is collapsed.
...@@ -69,6 +69,9 @@ export var DataStore:{ ...@@ -69,6 +69,9 @@ export var DataStore:{
leftbarhide:boolean, leftbarhide:boolean,
termlist:Array<{}>, termlist:Array<{}>,
windowsize:Array<number>, windowsize:Array<number>,
loguserInfo: {}, // 当前已选服务器信息
loguserlist:Array<{}>, // 可用用户列表
} = { } = {
socket: io.connect(), socket: io.connect(),
user: new User, user: new User,
...@@ -88,6 +91,9 @@ export var DataStore:{ ...@@ -88,6 +91,9 @@ export var DataStore:{
leftbarhide: false, leftbarhide: false,
termlist: [], termlist: [],
windowsize: [], windowsize: [],
loguserInfo: {}, // 当前已选服务器信息
loguserlist:[], // 可用用户列表
}; };
@Injectable() @Injectable()
...@@ -124,6 +130,7 @@ export class AppService { ...@@ -124,6 +130,7 @@ export class AppService {
DataStore.Nav = JSON.parse(data) DataStore.Nav = JSON.parse(data)
}); });
DataStore.socket.on('leftbar', function (data) { DataStore.socket.on('leftbar', function (data) {
console.log('leftbar', data)
if (data == 'changed') if (data == 'changed')
vm.ReloadLeftbar() vm.ReloadLeftbar()
}); });
...@@ -372,6 +379,12 @@ export class AppService { ...@@ -372,6 +379,12 @@ export class AppService {
// //
// } // }
TerminalConnect(assetData) { TerminalConnect(assetData) {
// assetId 资产
// sysUserId 用户
// nickName 资产昵称
// ip 资产IP
// port 资产端口
console.log('assetData', assetData);
var socket = io.connect(); var socket = io.connect();
var vm = this; var vm = this;
...@@ -387,12 +400,21 @@ export class AppService { ...@@ -387,12 +400,21 @@ export class AppService {
var rows = "24"; var rows = "24";
Cookie.set('rows', rows, 99, '/', document.domain); Cookie.set('rows', rows, 99, '/', document.domain);
} }
// var id = DataStore.term.push({
// "machine": "localhost",
// "nick": "localhost",
// "connected": true,
// "socket": socket
// }) - 1;
var id = DataStore.term.push({ var id = DataStore.term.push({
"machine": "localhost", "machine": '' + assetData.assetId,
"nick": "localhost", "nick": assetData.nickName,
"connected": true, "connected": true,
"closed": false,
"socket": socket "socket": socket
}) - 1; }) - 1;
DataStore.termActive = id; DataStore.termActive = id;
DataStore.term[id]["term"] = new Terminal({ DataStore.term[id]["term"] = new Terminal({
cols: cols, cols: cols,
...@@ -404,10 +426,11 @@ export class AppService { ...@@ -404,10 +426,11 @@ export class AppService {
DataStore.term[id]["term"].on('title', function (title) { DataStore.term[id]["term"].on('title', function (title) {
document.title = title; document.title = title;
}); });
setTimeout(function() {
DataStore.term[id]["term"].open(document.getElementById('term-' + id)); DataStore.term[id]["term"].open(document.getElementById('term-' + id));
DataStore.term[id]["term"].write('\x1b[31mWelcome to Jumpserver!\x1b[m\r\n');
DataStore.term[id]["term"].write('\x1b[31mWelcome to Jumpserver!\x1b[m\r\n'); }, 0);
socket.on('connect', function () { socket.on('connect', function () {
socket.emit('machine', assetData); socket.emit('machine', assetData);
...@@ -458,6 +481,7 @@ export class AppService { ...@@ -458,6 +481,7 @@ export class AppService {
TerminalDisconnect(i) { TerminalDisconnect(i) {
DataStore.term[i]["connected"] = false; DataStore.term[i]["connected"] = false;
DataStore.term[i]["closed"] = true;
DataStore.term[i]["socket"].destroy(); DataStore.term[i]["socket"].destroy();
DataStore.term[i]["term"].write('\r\n\x1b[31mBye Bye!\x1b[m\r\n'); DataStore.term[i]["term"].write('\r\n\x1b[31mBye Bye!\x1b[m\r\n');
} }
......
...@@ -28,15 +28,16 @@ var TermComponent = (function () { ...@@ -28,15 +28,16 @@ var TermComponent = (function () {
this.timer(); this.timer();
}; };
TermComponent.prototype.ngAfterViewInit = function () { TermComponent.prototype.ngAfterViewInit = function () {
this._appService.TerminalConnect({}); // this._appService.TerminalConnect({});
//this._logger.debug("term width ", jQuery("#term").width()); //this._logger.debug("term width ", jQuery("#term").width());
//this._logger.debug("term height", jQuery("#term").height()); //this._logger.debug("term height", jQuery("#term").height());
}; };
TermComponent.prototype.timer = function () { TermComponent.prototype.timer = function () {
var _this = this; var _this = this;
if (service_1.DataStore.termlist.length > 0) { if (service_1.DataStore.termlist.length > 0) {
for (var i in service_1.DataStore.termlist) for (var i in service_1.DataStore.termlist) {
this._appService.TerminalConnect(service_1.DataStore.termlist[i]); this._appService.TerminalConnect(service_1.DataStore.termlist[i]);
}
service_1.DataStore.termlist = []; service_1.DataStore.termlist = [];
} }
jQuery(window).trigger('resize'); jQuery(window).trigger('resize');
...@@ -47,8 +48,28 @@ var TermComponent = (function () { ...@@ -47,8 +48,28 @@ var TermComponent = (function () {
TermComponent.prototype.close = function (i) { TermComponent.prototype.close = function (i) {
this._logger.debug(i); this._logger.debug(i);
this._appService.TerminalDisconnect(i); this._appService.TerminalDisconnect(i);
service_1.DataStore.term[i]["term"].destroy(); // DataStore.term[i]["term"].destroy();
// delete DataStore.term.splice(i, 1) service_1.DataStore.term.splice(i, 1);
this.checkActive(i);
};
TermComponent.prototype.checkActive = function (index) {
var len = service_1.DataStore.term.length;
if (len == 1) {
// 唯一一个
service_1.DataStore.termActive = 0;
}
else {
if (len == index) {
// 删了最后一个
service_1.DataStore.termActive = index - 1;
}
else if (len > index) {
service_1.DataStore.termActive = index;
}
}
};
TermComponent.prototype.setActive = function (index) {
service_1.DataStore.termActive = index;
}; };
TermComponent.prototype.dblclick = function () { TermComponent.prototype.dblclick = function () {
console.log(service_1.DataStore.term); console.log(service_1.DataStore.term);
...@@ -56,7 +77,7 @@ var TermComponent = (function () { ...@@ -56,7 +77,7 @@ var TermComponent = (function () {
TermComponent = __decorate([ TermComponent = __decorate([
core_1.Component({ core_1.Component({
selector: 'term', selector: 'term',
template: "<div id=\"tabs\" style=\"height: 30px;width: 100%\">\n <ul>\n <li *ngFor=\"let m of DataStore.term;let i = index\"\n [ngClass]=\"{'active':i==DataStore.termActive,'disconnected':!m.connected}\"\n id=\"termnav-{{i}}\">\n <span *ngIf=\"!m.$edit\" (click)=\"DataStore.termActive=i\" (dblclick)=\"m.$edit=true;DataStore.termActive=i\">{{m.nick}}</span>\n <input *ngIf=\"m.$edit\" [(ngModel)]=\"m.nick\" autofocus (blur)=\"m.$edit=false\" (keyup.enter)=\"m.$edit=false\"/>\n <a class=\"close\" (click)=\"close(i)\" onclick=\"this.parentElement.style.display='none';\">x</a></li>\n </ul>\n</div>\n<div id=\"term\" style=\"width: 100%;height: 100%;\">\n <div id=\"term-0\" [ngClass]=\"{'hidden':DataStore.termActive!=0}\"></div>\n <div *ngFor=\"let m of DataStore.term; let i = index\" [ngClass]=\"{'hidden':i+1!=DataStore.termActive}\"\n id=\"term-{{i+1}}\"></div>\n</div>", template: "<div id=\"tabs\" style=\"height: 30px;width: 100%\">\n <ul>\n <li *ngFor=\"let m of DataStore.term;let i = index\"\n [ngClass]=\"{'active':i==DataStore.termActive,'disconnected':!m.connected, 'hidden': m.closed}\"\n id=\"termnav-{{i}}\" (click)=\"setActive(i)\">\n <span *ngIf=\"!m.$edit\" (dblclick)=\"m.$edit=true;setActive(i)\">{{m.nick}}</span>\n <input *ngIf=\"m.$edit\" [(ngModel)]=\"m.nick\" autofocus (blur)=\"m.$edit=false\" (keyup.enter)=\"m.$edit=false\"/>\n <a class=\"close\" (click)=\"close(i)\">&times;</a></li>\n </ul>\n</div>\n<div id=\"term\" style=\"width: 100%;height: 100%;\">\n <div *ngFor=\"let m of DataStore.term;let i = index\" [ngClass]=\"{'disconnected':!m.connected, 'hidden': i!=DataStore.termActive || m.closed}\" id=\"term-{{i}}\"></div>\n</div>",
directives: [common_1.NgClass, common_1.FORM_DIRECTIVES] directives: [common_1.NgClass, common_1.FORM_DIRECTIVES]
}), }),
__metadata('design:paramtypes', [service_1.AppService, core_2.Logger]) __metadata('design:paramtypes', [service_1.AppService, core_2.Logger])
......
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["terminal.ts"],"names":[],"mappings":"AAAA;;GAEG;;;;;;;;;;;AAEH,qBAAwB,eAAe,CAAC,CAAA;AACxC,uBAA0C,iBAAiB,CAAC,CAAA;AAE5D,qBAAqB,sBAAsB,CAAC,CAAA;AAI5C,QAAQ,SAAS,CAAC,CAAA;AAGlB,wBAAoC,WAGpC,CAAC,CAH8C;AAwB/C;IAKI,uBAAoB,WAAsB,EACtB,OAAc;QADd,gBAAW,GAAX,WAAW,CAAW;QACtB,YAAO,GAAP,OAAO,CAAO;QALlC,cAAS,GAAG,mBAAS,CAAC;QAMlB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IACvD,CAAC;IAED,gCAAQ,GAAR;QACI,mEAAmE;QACnE,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,uCAAe,GAAf;QACI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACrC,6DAA6D;QAC7D,8DAA8D;IAClE,CAAC;IAED,6BAAK,GAAL;QAAA,iBAUC;QATG,EAAE,CAAC,CAAC,mBAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAChC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,mBAAS,CAAC,QAAQ,CAAC;gBAC7B,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,mBAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,mBAAS,CAAC,QAAQ,GAAG,EAAE,CAAA;QAC3B,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,UAAU,CAAC;YACP,KAAI,CAAC,KAAK,EAAE,CAAA;QAChB,CAAC,EAAE,CAAC,CAAC,CAAA;IACT,CAAC;IAED,6BAAK,GAAL,UAAM,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACvC,mBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;QAEpC,qCAAqC;IACzC,CAAC;IAED,gCAAQ,GAAR;QACI,OAAO,CAAC,GAAG,CAAC,mBAAS,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAhEL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,s7BAcP;YACH,UAAU,EAAE,CAAC,gBAAO,EAAE,wBAAe,CAAC;SACzC,CAAC;;qBAAA;IA+CF,oBAAC;AAAD,CAAC,AA5CD,IA4CC;AA5CY,qBAAa,gBA4CzB,CAAA"} {"version":3,"file":"terminal.js","sourceRoot":"","sources":["terminal.ts"],"names":[],"mappings":"AAAA;;GAEG;;;;;;;;;;;AAEH,qBAAwB,eAAe,CAAC,CAAA;AACxC,uBAA0C,iBAAiB,CAAC,CAAA;AAE5D,qBAAqB,sBAAsB,CAAC,CAAA;AAI5C,QAAQ,SAAS,CAAC,CAAA;AAGlB,wBAAoC,WAGpC,CAAC,CAH8C;AAsB/C;IAKI,uBAAoB,WAAsB,EACtB,OAAc;QADd,gBAAW,GAAX,WAAW,CAAW;QACtB,YAAO,GAAP,OAAO,CAAO;QALlC,cAAS,GAAG,mBAAS,CAAC;QAMlB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IACvD,CAAC;IAED,gCAAQ,GAAR;QACI,mEAAmE;QACnE,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,uCAAe,GAAf;QACI,wCAAwC;QACxC,6DAA6D;QAC7D,8DAA8D;IAClE,CAAC;IAED,6BAAK,GAAL;QAAA,iBAWC;QAVG,EAAE,CAAC,CAAC,mBAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAChC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,mBAAS,CAAC,QAAQ,CAAC,CAAA,CAAC;gBAC9B,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,mBAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,CAAC;YACD,mBAAS,CAAC,QAAQ,GAAG,EAAE,CAAA;QAC3B,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,UAAU,CAAC;YACP,KAAI,CAAC,KAAK,EAAE,CAAA;QAChB,CAAC,EAAE,CAAC,CAAC,CAAA;IACT,CAAC;IAED,6BAAK,GAAL,UAAM,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACvC,uCAAuC;QACvC,mBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,mCAAW,GAAX,UAAY,KAAK;QACb,IAAI,GAAG,GAAG,mBAAS,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,EAAE,CAAA,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACV,OAAO;YACP,mBAAS,CAAC,UAAU,GAAG,CAAC,CAAC;QAC7B,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC;gBACf,SAAS;gBACT,mBAAS,CAAC,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;YACrC,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;gBACrB,mBAAS,CAAC,UAAU,GAAG,KAAK,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC;IACD,iCAAS,GAAT,UAAU,KAAK;QACX,mBAAS,CAAC,UAAU,GAAG,KAAK,CAAC;IACjC,CAAC;IACD,gCAAQ,GAAR;QACI,OAAO,CAAC,GAAG,CAAC,mBAAS,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IA/EL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,k1BAYP;YACH,UAAU,EAAE,CAAC,gBAAO,EAAE,wBAAe,CAAC;SACzC,CAAC;;qBAAA;IAgEF,oBAAC;AAAD,CAAC,AA7DD,IA6DC;AA7DY,qBAAa,gBA6DzB,CAAA"}
\ No newline at end of file \ No newline at end of file
...@@ -20,17 +20,15 @@ import {AppService, DataStore} from './service' ...@@ -20,17 +20,15 @@ import {AppService, DataStore} from './service'
template: `<div id="tabs" style="height: 30px;width: 100%"> template: `<div id="tabs" style="height: 30px;width: 100%">
<ul> <ul>
<li *ngFor="let m of DataStore.term;let i = index" <li *ngFor="let m of DataStore.term;let i = index"
[ngClass]="{'active':i==DataStore.termActive,'disconnected':!m.connected}" [ngClass]="{'active':i==DataStore.termActive,'disconnected':!m.connected, 'hidden': m.closed}"
id="termnav-{{i}}"> id="termnav-{{i}}" (click)="setActive(i)">
<span *ngIf="!m.$edit" (click)="DataStore.termActive=i" (dblclick)="m.$edit=true;DataStore.termActive=i">{{m.nick}}</span> <span *ngIf="!m.$edit" (dblclick)="m.$edit=true;setActive(i)">{{m.nick}}</span>
<input *ngIf="m.$edit" [(ngModel)]="m.nick" autofocus (blur)="m.$edit=false" (keyup.enter)="m.$edit=false"/> <input *ngIf="m.$edit" [(ngModel)]="m.nick" autofocus (blur)="m.$edit=false" (keyup.enter)="m.$edit=false"/>
<a class="close" (click)="close(i)" onclick="this.parentElement.style.display='none';">x</a></li> <a class="close" (click)="close(i)">&times;</a></li>
</ul> </ul>
</div> </div>
<div id="term" style="width: 100%;height: 100%;"> <div id="term" style="width: 100%;height: 100%;">
<div id="term-0" [ngClass]="{'hidden':DataStore.termActive!=0}"></div> <div *ngFor="let m of DataStore.term;let i = index" [ngClass]="{'disconnected':!m.connected, 'hidden': i!=DataStore.termActive || m.closed}" id="term-{{i}}"></div>
<div *ngFor="let m of DataStore.term; let i = index" [ngClass]="{'hidden':i+1!=DataStore.termActive}"
id="term-{{i+1}}"></div>
</div>`, </div>`,
directives: [NgClass, FORM_DIRECTIVES] directives: [NgClass, FORM_DIRECTIVES]
}) })
...@@ -52,15 +50,16 @@ export class TermComponent { ...@@ -52,15 +50,16 @@ export class TermComponent {
} }
ngAfterViewInit() { ngAfterViewInit() {
this._appService.TerminalConnect({}); // this._appService.TerminalConnect({});
//this._logger.debug("term width ", jQuery("#term").width()); //this._logger.debug("term width ", jQuery("#term").width());
//this._logger.debug("term height", jQuery("#term").height()); //this._logger.debug("term height", jQuery("#term").height());
} }
timer() { timer() {
if (DataStore.termlist.length > 0) { if (DataStore.termlist.length > 0) {
for (var i in DataStore.termlist) for (var i in DataStore.termlist){
this._appService.TerminalConnect(DataStore.termlist[i]); this._appService.TerminalConnect(DataStore.termlist[i]);
}
DataStore.termlist = [] DataStore.termlist = []
} }
jQuery(window).trigger('resize'); jQuery(window).trigger('resize');
...@@ -72,11 +71,27 @@ export class TermComponent { ...@@ -72,11 +71,27 @@ export class TermComponent {
close(i) { close(i) {
this._logger.debug(i); this._logger.debug(i);
this._appService.TerminalDisconnect(i); this._appService.TerminalDisconnect(i);
DataStore.term[i]["term"].destroy(); // DataStore.term[i]["term"].destroy();
DataStore.term.splice(i, 1);
// delete DataStore.term.splice(i, 1) this.checkActive(i);
}
checkActive(index) {
var len = DataStore.term.length;
if(len == 1) {
// 唯一一个
DataStore.termActive = 0;
} else {
if (len == index) {
// 删了最后一个
DataStore.termActive = index - 1;
} else if (len > index) {
DataStore.termActive = index;
}
}
}
setActive(index) {
DataStore.termActive = index;
} }
dblclick() { dblclick() {
console.log(DataStore.term) console.log(DataStore.term)
} }
......
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