]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/button/ConsoleButton.js
allow xtermjs to be the default console
[pve-manager.git] / www / manager6 / button / ConsoleButton.js
index c4ce34540dbd2ab8b44a5c567e76b8f5d0bc8d50..d825e1fbb9cdf6f64dcf273a3eb8a14fe20bc8c0 100644 (file)
@@ -6,55 +6,81 @@ Ext.define('PVE.button.ConsoleButton', {
 
     consoleName: undefined,
 
+    iconCls: 'fa fa-terminal',
+
     enableSpice: true,
+    enableXtermjs: true,
 
     nodename: undefined,
 
     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;
+    setEnableXtermJS: function(enable){
+       var me = this;
 
-       if (!me.nodename) {
-           throw "no node name specified";
-       }
+       me.enableXtermjs = enable;
+       me.down('#xtermjs').setDisabled(!enable);
+    },
 
-       me.spiceMenu = Ext.create('Ext.menu.Item', {
-           text: 'SPICE',
-           iconCls: 'pve-itype-icon-virt-viewer',
-           handler: function() { 
-               PVE.Utils.openConsoleWindow('vv', me.consoleType, me.vmid, me.nodename, me.consoleName);
-           }
-       });
+    handler: function() {
+       var me = this;
+       var consoles = {
+           spice: me.enableSpice,
+           xtermjs: me.enableXtermjs
+       };
+       PVE.Utils.openDefaultConsoleWindow(consoles, me.consoleType, me.vmid,
+                                          me.nodename, me.consoleName);
+    },
 
-       var noVncMenu = Ext.create('Ext.menu.Item', {
+    menu: [
+       {
+           xtype:'menuitem',
            text: 'noVNC',
            iconCls: 'pve-itype-icon-novnc',
-           handler: function() { 
-               PVE.Utils.openConsoleWindow('html5', me.consoleType, me.vmid, me.nodename, me.consoleName);
+           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(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: 'pve-itype-icon-xtermjs',
+           type: 'xtermjs',
+           handler: function(button) {
+               var me = this.up('button');
+               PVE.Utils.openConsoleWindow(button.type, me.consoleType, me.vmid, me.nodename, me.consoleName);
            }
-       });
-
-       if (me.text === null) {
-           me.text = gettext('Console');
        }
+    ],
 
-       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 ]
-           })
-       });
+    initComponent: function() {
+        var me = this;
+
+       if (!me.nodename) {
+           throw "no node name specified";
+       }
 
        me.callParent();
     }