]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/lxc/Options.js
use Proxmox.Utils instead of PVE.Utils
[pve-manager.git] / www / manager6 / lxc / Options.js
CommitLineData
d6cae26a
DM
1/*jslint confusion: true */
2Ext.define('PVE.lxc.Options', {
3 extend: 'PVE.grid.ObjectGrid',
4 alias: ['widget.pveLxcOptions'],
5
ba93a9c6
DC
6 onlineHelp: 'pct_options',
7
d6cae26a
DM
8 initComponent : function() {
9 var me = this;
10 var i;
11
12 var nodename = me.pveSelNode.data.node;
13 if (!nodename) {
14 throw "no node name specified";
15 }
16
17 var vmid = me.pveSelNode.data.vmid;
18 if (!vmid) {
19 throw "no VM ID specified";
20 }
21
22 var caps = Ext.state.Manager.get('GuiCap');
23
24 var rows = {
25 onboot: {
26 header: gettext('Start at boot'),
27 defaultValue: '',
e7ade592 28 renderer: Proxmox.Utils.format_boolean,
d6cae26a
DM
29 editor: caps.vms['VM.Config.Options'] ? {
30 xtype: 'pveWindowEdit',
31 subject: gettext('Start at boot'),
32 items: {
33 xtype: 'pvecheckbox',
34 name: 'onboot',
35 uncheckedValue: 0,
36 defaultValue: 0,
37 fieldLabel: gettext('Start at boot')
38 }
39 } : undefined
40 },
41 startup: {
42 header: gettext('Start/Shutdown order'),
43 defaultValue: '',
44 renderer: PVE.Utils.render_kvm_startup,
45 editor: caps.vms['VM.Config.Options'] && caps.nodes['Sys.Modify'] ?
6eb2141a
EK
46 {
47 xtype: 'pveWindowStartupEdit',
48 onlineHelp: 'pct_startup_and_shutdown'
49 } : undefined
d6cae26a
DM
50 },
51 ostype: {
52 header: gettext('OS Type'),
e7ade592 53 defaultValue: Proxmox.Utils.unknownText
d6cae26a
DM
54 },
55 arch: {
56 header: gettext('Architecture'),
e7ade592 57 defaultValue: Proxmox.Utils.unknownText
d6cae26a
DM
58 },
59 console: {
b9628aa5 60 header: '/dev/console',
d6cae26a 61 defaultValue: 1,
e7ade592 62 renderer: Proxmox.Utils.format_enabled_toggle,
d6cae26a
DM
63 editor: caps.vms['VM.Config.Options'] ? {
64 xtype: 'pveWindowEdit',
0a3cf3d4 65 subject: '/dev/console',
d6cae26a
DM
66 items: {
67 xtype: 'pvecheckbox',
68 name: 'console',
69 uncheckedValue: 0,
70 defaultValue: 1,
71 deleteDefaultValue: true,
72 checked: true,
0a3cf3d4 73 fieldLabel: '/dev/console'
d6cae26a
DM
74 }
75 } : undefined
76 },
77 tty: {
78 header: gettext('TTY count'),
79 defaultValue: 2,
80 editor: caps.vms['VM.Config.Options'] ? {
81 xtype: 'pveWindowEdit',
82 subject: gettext('TTY count'),
83 items: {
bf96f60d 84 xtype: 'proxmoxintegerfield',
d6cae26a 85 name: 'tty',
d6cae26a
DM
86 minValue: 0,
87 maxValue: 6,
88 value: 2,
89 fieldLabel: gettext('TTY count'),
bf96f60d
DC
90 emptyText: gettext('Default'),
91 deleteEmpty: true
d6cae26a
DM
92 }
93 } : undefined
94 },
95 cmode: {
96 header: gettext('Console mode'),
97 defaultValue: 'tty',
98 editor: caps.vms['VM.Config.Options'] ? {
99 xtype: 'pveWindowEdit',
100 subject: gettext('Console mode'),
101 items: {
102 xtype: 'pveKVComboBox',
103 name: 'cmode',
104 deleteEmpty: true,
c9d05dc8
EK
105 value: '__default__',
106 comboItems: [
e7ade592 107 ['__default__', Proxmox.Utils.defaultText + " (tty)"],
d6cae26a
DM
108 ['tty', "/dev/tty[X]"],
109 ['console', "/dev/console"],
110 ['shell', "shell"]
111 ],
112 fieldLabel: gettext('Console mode')
113 }
114 } : undefined
115 },
a979c78d
EK
116 protection: {
117 header: gettext('Protection'),
118 defaultValue: false,
e7ade592 119 renderer: Proxmox.Utils.format_boolean,
a979c78d
EK
120 editor: caps.vms['VM.Config.Options'] ? {
121 xtype: 'pveWindowEdit',
122 subject: gettext('Protection'),
123 items: {
124 xtype: 'pvecheckbox',
125 name: 'protection',
126 uncheckedValue: 0,
127 defaultValue: 0,
128 deleteDefaultValue: true,
129 fieldLabel: gettext('Enabled')
130 }
131 } : undefined
a97bc800
EK
132 },
133 unprivileged: {
134 header: gettext('Unprivileged container'),
e7ade592 135 renderer: Proxmox.Utils.format_boolean,
a97bc800 136 defaultValue: 0
a979c78d 137 }
d6cae26a
DM
138 };
139
140 var baseurl = 'nodes/' + nodename + '/lxc/' + vmid + '/config';
141
142 var reload = function() {
143 me.rstore.load();
144 };
145
146 var sm = Ext.create('Ext.selection.RowModel', {});
147
148 var run_editor = function() {
149 var rec = sm.getSelection()[0];
150 if (!rec) {
151 return;
152 }
153
154 var rowdef = rows[rec.data.key];
155 if (!rowdef.editor) {
156 return;
157 }
158
159 var win;
160 if (Ext.isString(rowdef.editor)) {
161 win = Ext.create(rowdef.editor, {
162 pveSelNode: me.pveSelNode,
163 confid: rec.data.key,
164 url: '/api2/extjs/' + baseurl
165 });
166 } else {
167 var config = Ext.apply({
168 pveSelNode: me.pveSelNode,
169 confid: rec.data.key,
170 url: '/api2/extjs/' + baseurl
171 }, rowdef.editor);
172 win = Ext.createWidget(rowdef.editor.xtype, config);
173 win.load();
174 }
175
176 win.show();
177 win.on('destroy', reload);
178 };
179
5720fafa 180 var edit_btn = new Proxmox.button.Button({
d6cae26a
DM
181 text: gettext('Edit'),
182 disabled: true,
183 selModel: sm,
184 enableFn: function(rec) {
185 var rowdef = rows[rec.data.key];
186 return !!rowdef.editor;
187 },
188 handler: run_editor
189 });
190
f7993618 191 Ext.apply(me, {
d6cae26a
DM
192 url: "/api2/json/nodes/" + nodename + "/lxc/" + vmid + "/config",
193 selModel: sm,
d6cae26a
DM
194 tbar: [ edit_btn ],
195 rows: rows,
196 listeners: {
4b488565
EK
197 itemdblclick: run_editor,
198 activate: reload
d6cae26a
DM
199 }
200 });
201
202 me.callParent();
d6cae26a
DM
203 }
204});
205