pve-manager/www/manager6/button/ConsoleButton.js
Thomas Lamprecht f729096099 ui: buttons: eslint fixes and code cleanup/refactoring
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-05-17 19:58:52 +02:00

107 lines
2.0 KiB
JavaScript

Ext.define('PVE.button.ConsoleButton', {
extend: 'Ext.button.Split',
alias: 'widget.pveConsoleButton',
consoleType: 'shell', // one of 'shell', 'kvm', 'lxc', 'upgrade', 'cmd'
cmd: undefined,
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.down('#spicemenu').setDisabled(!enable);
},
setEnableXtermJS: function(enable) {
var me = this;
me.enableXtermjs = enable;
me.down('#xtermjs').setDisabled(!enable);
},
handler: function() { // main, general, handler
let me = this;
PVE.Utils.openDefaultConsoleWindow(
{
spice: me.enableSpice,
xtermjs: me.enableXtermjs,
},
me.consoleType,
me.vmid,
me.nodename,
me.consoleName,
me.cmd,
);
},
openConsole: function(types) { // used by split-menu buttons
let me = this;
PVE.Utils.openConsoleWindow(
types,
me.consoleType,
me.vmid,
me.nodename,
me.consoleName,
me.cmd,
);
},
menu: [
{
xtype: 'menuitem',
text: 'noVNC',
iconCls: 'pve-itype-icon-novnc',
type: 'html5',
handler: function(button) {
let view = this.up('button');
view.openConsole(button.type);
},
},
{
xterm: 'menuitem',
itemId: 'spicemenu',
text: 'SPICE',
type: 'vv',
iconCls: 'pve-itype-icon-virt-viewer',
handler: function(button) {
let view = this.up('button');
view.openConsole(button.type);
},
},
{
text: 'xterm.js',
itemId: 'xtermjs',
iconCls: 'pve-itype-icon-xtermjs',
type: 'xtermjs',
handler: function(button) {
let view = this.up('button');
view.openConsole(button.type);
},
},
],
initComponent: function() {
let me = this;
if (!me.nodename) {
throw "no node name specified";
}
me.callParent();
},
});