]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/node/CmdMenu.js
ui: node config: fix internal code order for nav bar
[pve-manager.git] / www / manager6 / node / CmdMenu.js
1 Ext.define('PVE.node.CmdMenu', {
2 extend: 'Ext.menu.Menu',
3 xtype: 'nodeCmdMenu',
4
5 showSeparator: false,
6
7 items: [
8 {
9 text: gettext('Create VM'),
10 itemId: 'createvm',
11 iconCls: 'fa fa-desktop',
12 handler: function() {
13 var me = this.up('menu');
14 var wiz = Ext.create('PVE.qemu.CreateWizard', {
15 nodename: me.nodename,
16 });
17 wiz.show();
18 },
19 },
20 {
21 text: gettext('Create CT'),
22 itemId: 'createct',
23 iconCls: 'fa fa-cube',
24 handler: function() {
25 var me = this.up('menu');
26 var wiz = Ext.create('PVE.lxc.CreateWizard', {
27 nodename: me.nodename,
28 });
29 wiz.show();
30 },
31 },
32 { xtype: 'menuseparator' },
33 {
34 text: gettext('Bulk Start'),
35 itemId: 'bulkstart',
36 iconCls: 'fa fa-fw fa-play',
37 handler: function() {
38 var me = this.up('menu');
39 var win = Ext.create('PVE.window.BulkAction', {
40 nodename: me.nodename,
41 title: gettext('Bulk Start'),
42 btnText: gettext('Start'),
43 action: 'startall',
44 });
45 win.show();
46 },
47 },
48 {
49 text: gettext('Bulk Stop'),
50 itemId: 'bulkstop',
51 iconCls: 'fa fa-fw fa-stop',
52 handler: function() {
53 var me = this.up('menu');
54 var win = Ext.create('PVE.window.BulkAction', {
55 nodename: me.nodename,
56 title: gettext('Bulk Stop'),
57 btnText: gettext('Stop'),
58 action: 'stopall',
59 });
60 win.show();
61 },
62 },
63 {
64 text: gettext('Bulk Migrate'),
65 itemId: 'bulkmigrate',
66 iconCls: 'fa fa-fw fa-send-o',
67 handler: function() {
68 var me = this.up('menu');
69 var win = Ext.create('PVE.window.BulkAction', {
70 nodename: me.nodename,
71 title: gettext('Bulk Migrate'),
72 btnText: gettext('Migrate'),
73 action: 'migrateall',
74 });
75 win.show();
76 },
77 },
78 { xtype: 'menuseparator' },
79 {
80 text: gettext('Shell'),
81 itemId: 'shell',
82 iconCls: 'fa fa-fw fa-terminal',
83 handler: function() {
84 var me = this.up('menu');
85 PVE.Utils.openDefaultConsoleWindow(true, 'shell', undefined, me.nodename, undefined);
86 },
87 },
88 { xtype: 'menuseparator' },
89 {
90 text: gettext('Wake-on-LAN'),
91 itemId: 'wakeonlan',
92 iconCls: 'fa fa-fw fa-power-off',
93 handler: function() {
94 var me = this.up('menu');
95 Proxmox.Utils.API2Request({
96 param: {},
97 url: '/nodes/' + me.nodename + '/wakeonlan',
98 method: 'POST',
99 failure: function(response, opts) {
100 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
101 },
102 success: function(response, opts) {
103 Ext.Msg.show({
104 title: 'Success',
105 icon: Ext.Msg.INFO,
106 msg: Ext.String.format(gettext("Wake on LAN packet send for '{0}': '{1}'"), me.nodename, response.result.data),
107 });
108 },
109 });
110 },
111 },
112 ],
113
114 initComponent: function() {
115 var me = this;
116
117 if (!me.nodename) {
118 throw 'no nodename specified';
119 }
120
121 me.title = gettext('Node') + " '" + me.nodename + "'";
122 me.callParent();
123
124 var caps = Ext.state.Manager.get('GuiCap');
125 // disable not allowed options
126 if (!caps.vms['VM.Allocate']) {
127 me.getComponent('createct').setDisabled(true);
128 me.getComponent('createvm').setDisabled(true);
129 }
130
131 if (!caps.nodes['Sys.PowerMgmt']) {
132 me.getComponent('bulkstart').setDisabled(true);
133 me.getComponent('bulkstop').setDisabled(true);
134 me.getComponent('bulkmigrate').setDisabled(true);
135 me.getComponent('wakeonlan').setDisabled(true);
136 }
137
138 if (!caps.nodes['Sys.Console']) {
139 me.getComponent('shell').setDisabled(true);
140 }
141
142 if (me.pveSelNode.data.running) {
143 me.getComponent('wakeonlan').setDisabled(true);
144 }
145 },
146 });