if not available for a vm, we fallback to novnc like with spice

Signed-off-by: Dominik Csapak <d.csa...@proxmox.com>
---
 www/manager6/Utils.js                | 40 ++++++++++++++++++++++++------------
 www/manager6/button/ConsoleButton.js |  6 +++++-
 www/manager6/qemu/CmdMenu.js         |  7 ++++++-
 3 files changed, 38 insertions(+), 15 deletions(-)

diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js
index af03958c..6163c2e6 100644
--- a/www/manager6/Utils.js
+++ b/www/manager6/Utils.js
@@ -279,19 +279,23 @@ Ext.define('PVE.Utils', { utilities: {
     },
 
     render_console_viewer: function(value) {
-       if (!value || value === '__default__') {
-           return Proxmox.Utils.defaultText + ' (HTML5)';
-       } else if (value === 'vv') {
-           return  'SPICE (remote-viewer)';
-       } else if (value === 'html5') {
-           return  'HTML5 (noVNC)';
-       } else {
-           return value;
+       value = value || '__default__';
+       switch (value) {
+           case 'vv':
+               return  'SPICE (remote-viewer)';
+           case 'html5':
+               return  'HTML5 (noVNC)';
+           case 'xtermjs':
+               return 'xterm.js';
+           case '__default__':
+               return Proxmox.Utils.defaultText + ' (HTML5)';
+           default:
+               return value;
        }
     },
 
     console_viewer_array: function() {
-       return Ext.Array.map(['__default__','vv', 'html5'], function(v) {
+       return Ext.Array.map(['__default__','vv', 'html5', 'xtermjs'], 
function(v) {
            return [v, PVE.Utils.render_console_viewer(v)];
        });
     },
@@ -723,8 +727,8 @@ Ext.define('PVE.Utils', { utilities: {
             function(m, addr, offset, original) { return addr; });
     },
 
-    openDefaultConsoleWindow: function(allowSpice, vmtype, vmid, nodename, 
vmname) {
-       var dv = PVE.Utils.defaultViewer(allowSpice);
+    openDefaultConsoleWindow: function(consoles, vmtype, vmid, nodename, 
vmname) {
+       var dv = PVE.Utils.defaultViewer(consoles);
        PVE.Utils.openConsoleWindow(dv, vmtype, vmid, nodename, vmname);
     },
 
@@ -765,10 +769,20 @@ Ext.define('PVE.Utils', { utilities: {
        }
     },
 
-    defaultViewer: function(allowSpice) {
+    defaultViewer: function(consoles) {
+
+       var allowSpice, allowXtermjs;
+
+       if (consoles === true) {
+           allowSpice = true;
+           allowXtermjs = true;
+       } else if (typeof consoles === 'object') {
+           allowSpice = consoles.spice;
+           allowXtermjs = consoles.xtermjs;
+       }
        var vncdefault = 'html5';
        var dv = PVE.VersionInfo.console || vncdefault;
-       if (dv === 'vv' && !allowSpice) {
+       if ((dv === 'vv' && !allowSpice) || (dv === 'xtermjs' && 
!allowXtermjs)) {
            dv = vncdefault;
        }
 
diff --git a/www/manager6/button/ConsoleButton.js 
b/www/manager6/button/ConsoleButton.js
index 97bed170..d825e1fb 100644
--- a/www/manager6/button/ConsoleButton.js
+++ b/www/manager6/button/ConsoleButton.js
@@ -33,7 +33,11 @@ Ext.define('PVE.button.ConsoleButton', {
 
     handler: function() {
        var me = this;
-       PVE.Utils.openDefaultConsoleWindow(me.enableSpice, me.consoleType, 
me.vmid,
+       var consoles = {
+           spice: me.enableSpice,
+           xtermjs: me.enableXtermjs
+       };
+       PVE.Utils.openDefaultConsoleWindow(consoles, me.consoleType, me.vmid,
                                           me.nodename, me.consoleName);
     },
 
diff --git a/www/manager6/qemu/CmdMenu.js b/www/manager6/qemu/CmdMenu.js
index 00af7cbc..da6f556a 100644
--- a/www/manager6/qemu/CmdMenu.js
+++ b/www/manager6/qemu/CmdMenu.js
@@ -169,7 +169,12 @@ Ext.define('PVE.qemu.CmdMenu', {
                        },
                        success: function(response, opts) {
                            var allowSpice = response.result.data.spice;
-                           PVE.Utils.openDefaultConsoleWindow(allowSpice, 
'kvm', vmid, nodename, vmname);
+                           var allowXtermjs = response.result.data.serial;
+                           var consoles = {
+                               spice: allowSpice,
+                               xtermjs: allowXtermjs
+                           };
+                           PVE.Utils.openDefaultConsoleWindow(consoles, 'kvm', 
vmid, nodename, vmname);
                        }
                    });
                }
-- 
2.11.0


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to