[pve-devel] [PATCH v2 manager 5/5] add xtermjs to consolebutton

Dominik Csapak d.csapak at proxmox.com
Mon Dec 4 11:51:53 CET 2017


also rework the button.
move most things in the static configuration

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
changes since v1:
* reworked button to a mostly declarative syntax
 www/manager6/button/ConsoleButton.js | 74 +++++++++++++++++++++---------------
 www/manager6/lxc/Config.js           | 30 ++++++++++-----
 www/manager6/node/Config.js          |  9 +++++
 3 files changed, 73 insertions(+), 40 deletions(-)

diff --git a/www/manager6/button/ConsoleButton.js b/www/manager6/button/ConsoleButton.js
index 98ebea0e..a3bf7464 100644
--- a/www/manager6/button/ConsoleButton.js
+++ b/www/manager6/button/ConsoleButton.js
@@ -12,50 +12,62 @@ Ext.define('PVE.button.ConsoleButton', {
 
     vmid: 0,
 
+    text: gettext('Console'),
+
     setEnableSpice: function(enable){
 	var me = this;
 
 	me.enableSpice = enable;
-	me.spiceMenu.setDisabled(!enable);
+	me.down('#spicemenu').setDisabled(!enable);
     },
 
-    initComponent: function() {
-        var me = this;
-
-	if (!me.nodename) {
-	    throw "no node name specified";
-	}
+    handler: function() {
+	var me = this;
+	PVE.Utils.openDefaultConsoleWindow(me.enableSpice, me.consoleType, me.vmid,
+					   me.nodename, me.consoleName);
+    },
 
-	me.spiceMenu = Ext.create('Ext.menu.Item', {
+    menu: [
+	{
+	    xtype:'menuitem',
+	    text: 'noVNC',
+	    iconCls: 'pve-itype-icon-novnc',
+	    type: 'html5',
+	    handler: function(button) {
+		var me = this.up('button');
+		PVE.Utils.openConsoleWindow(button.type, me.consoleType, me.vmid, me.nodename, me.consoleName);
+	    },
+	},
+	{
+	    xterm: 'menuitem',
+	    itemId: 'spicemenu',
 	    text: 'SPICE',
+	    type: 'vv',
 	    iconCls: 'pve-itype-icon-virt-viewer',
-	    handler: function() {
-		PVE.Utils.openConsoleWindow('vv', me.consoleType, me.vmid, me.nodename, me.consoleName);
-	    }
-	});
+	    handler: function(button) {
+		var me = this.up('button');
+		PVE.Utils.openConsoleWindow(button.type, me.consoleType, me.vmid, me.nodename, me.consoleName);
+	    },
+	},
+	{
+	    text: 'xterm.js',
+	    itemId: 'xtermjs',
+	    iconCls: 'fa fa-terminal',
+	    type: 'xtermjs',
+	    handler: function(button) {
+		var me = this.up('button');
+		PVE.Utils.openConsoleWindow(button.type, me.consoleType, me.vmid, me.nodename, me.consoleName);
+	    },
+	}
+    ],
 
-	var noVncMenu = Ext.create('Ext.menu.Item', {
-	    text: 'noVNC',
-	    iconCls: 'pve-itype-icon-novnc',
-	    handler: function() {
-		PVE.Utils.openConsoleWindow('html5', me.consoleType, me.vmid, me.nodename, me.consoleName);
-	    }
-	});
+    initComponent: function() {
+        var me = this;
 
-	if (me.text === null) {
-	    me.text = gettext('Console');
+	if (!me.nodename) {
+	    throw "no node name specified";
 	}
 
-	Ext.apply(me, {
-	    handler: function() {
-		PVE.Utils.openDefaultConsoleWindow(me.enableSpice, me.consoleType, me.vmid,
-						   me.nodename, me.consoleName);
-	    },
-	    menu: new Ext.menu.Menu({
-		items: [ noVncMenu, me.spiceMenu ]
-	    })
-	});
-
 	me.callParent();
     }
 });
diff --git a/www/manager6/lxc/Config.js b/www/manager6/lxc/Config.js
index 0ffc4841..bcff47ba 100644
--- a/www/manager6/lxc/Config.js
+++ b/www/manager6/lxc/Config.js
@@ -148,15 +148,27 @@ Ext.define('PVE.lxc.Config', {
 	});
 
 	if (caps.vms['VM.Console']) {
-	    me.items.push({
-		title: gettext('Console'),
-		itemId: 'console',
-		iconCls: 'fa fa-terminal',
-		xtype: 'pveNoVncConsole',
-		vmid: vmid,
-		consoleType: 'lxc',
-		nodename: nodename
-	    });
+	    me.items.push(
+		{
+		    title: gettext('Console'),
+		    itemId: 'console',
+		    iconCls: 'fa fa-terminal',
+		    xtype: 'pveNoVncConsole',
+		    vmid: vmid,
+		    consoleType: 'lxc',
+		    nodename: nodename
+		},
+		{
+		    title: gettext('Console (JS)'),
+		    itemId: 'consolejs',
+		    iconCls: 'fa fa-terminal',
+		    xtype: 'pveNoVncConsole',
+		    vmid: vmid,
+		    consoleType: 'lxc',
+		    xtermjs: true,
+		    nodename: nodename
+		}
+	    );
 	}
 
 	me.items.push(
diff --git a/www/manager6/node/Config.js b/www/manager6/node/Config.js
index 49f1186f..4d6b51ef 100644
--- a/www/manager6/node/Config.js
+++ b/www/manager6/node/Config.js
@@ -139,6 +139,15 @@ Ext.define('PVE.node.Config', {
 		    xtype: 'pveNoVncConsole',
 		    consoleType: 'shell',
 		    nodename: nodename
+		},
+		{
+		    title: gettext('Shell (JS)'),
+		    iconCls: 'fa fa-terminal',
+		    itemId: 'jsconsole',
+		    xtype: 'pveNoVncConsole',
+		    consoleType: 'shell',
+		    xtermjs: true,
+		    nodename: nodename
 		}
 	    );
 	}
-- 
2.11.0





More information about the pve-devel mailing list