]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/lxc/Options.js
Do not translate IT terms which should be used 'as is' in every language
[pve-manager.git] / www / manager6 / lxc / Options.js
1 /*jslint confusion: true */
2 Ext.define('PVE.lxc.Options', {
3 extend: 'PVE.grid.ObjectGrid',
4 alias: ['widget.pveLxcOptions'],
5
6 onlineHelp: 'pct_options',
7
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: '',
28 renderer: PVE.Utils.format_boolean,
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'] ?
46 {
47 xtype: 'pveWindowStartupEdit',
48 onlineHelp: 'pct_startup_and_shutdown'
49 } : undefined
50 },
51 ostype: {
52 header: gettext('OS Type'),
53 defaultValue: PVE.Utils.unknownText
54 },
55 arch: {
56 header: gettext('Architecture'),
57 defaultValue: PVE.Utils.unknownText
58 },
59 console: {
60 header: '/dev/console',
61 defaultValue: 1,
62 renderer: PVE.Utils.format_enabled_toggle,
63 editor: caps.vms['VM.Config.Options'] ? {
64 xtype: 'pveWindowEdit',
65 subject: '/dev/console',
66 items: {
67 xtype: 'pvecheckbox',
68 name: 'console',
69 uncheckedValue: 0,
70 defaultValue: 1,
71 deleteDefaultValue: true,
72 checked: true,
73 fieldLabel: '/dev/console'
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: {
84 xtype: 'pveIntegerField',
85 name: 'tty',
86 minValue: 0,
87 maxValue: 6,
88 value: 2,
89 fieldLabel: gettext('TTY count'),
90 allowEmpty: gettext('Default'),
91 getSubmitData: function() {
92 var me = this;
93 var val = me.getSubmitValue();
94 if (val !== null && val !== '' && val !== '2') {
95 return { tty: val };
96 } else {
97 return { 'delete' : 'tty' };
98 }
99 }
100
101 }
102 } : undefined
103 },
104 cmode: {
105 header: gettext('Console mode'),
106 defaultValue: 'tty',
107 editor: caps.vms['VM.Config.Options'] ? {
108 xtype: 'pveWindowEdit',
109 subject: gettext('Console mode'),
110 items: {
111 xtype: 'pveKVComboBox',
112 name: 'cmode',
113 deleteEmpty: true,
114 value: '__default__',
115 comboItems: [
116 ['__default__', PVE.Utils.defaultText + " (tty)"],
117 ['tty', "/dev/tty[X]"],
118 ['console', "/dev/console"],
119 ['shell', "shell"]
120 ],
121 fieldLabel: gettext('Console mode')
122 }
123 } : undefined
124 },
125 protection: {
126 header: gettext('Protection'),
127 defaultValue: false,
128 renderer: PVE.Utils.format_boolean,
129 editor: caps.vms['VM.Config.Options'] ? {
130 xtype: 'pveWindowEdit',
131 subject: gettext('Protection'),
132 items: {
133 xtype: 'pvecheckbox',
134 name: 'protection',
135 uncheckedValue: 0,
136 defaultValue: 0,
137 deleteDefaultValue: true,
138 fieldLabel: gettext('Enabled')
139 }
140 } : undefined
141 },
142 unprivileged: {
143 header: gettext('Unprivileged container'),
144 renderer: PVE.Utils.format_boolean,
145 defaultValue: 0
146 }
147 };
148
149 var baseurl = 'nodes/' + nodename + '/lxc/' + vmid + '/config';
150
151 var reload = function() {
152 me.rstore.load();
153 };
154
155 var sm = Ext.create('Ext.selection.RowModel', {});
156
157 var run_editor = function() {
158 var rec = sm.getSelection()[0];
159 if (!rec) {
160 return;
161 }
162
163 var rowdef = rows[rec.data.key];
164 if (!rowdef.editor) {
165 return;
166 }
167
168 var win;
169 if (Ext.isString(rowdef.editor)) {
170 win = Ext.create(rowdef.editor, {
171 pveSelNode: me.pveSelNode,
172 confid: rec.data.key,
173 url: '/api2/extjs/' + baseurl
174 });
175 } else {
176 var config = Ext.apply({
177 pveSelNode: me.pveSelNode,
178 confid: rec.data.key,
179 url: '/api2/extjs/' + baseurl
180 }, rowdef.editor);
181 win = Ext.createWidget(rowdef.editor.xtype, config);
182 win.load();
183 }
184
185 win.show();
186 win.on('destroy', reload);
187 };
188
189 var edit_btn = new PVE.button.Button({
190 text: gettext('Edit'),
191 disabled: true,
192 selModel: sm,
193 enableFn: function(rec) {
194 var rowdef = rows[rec.data.key];
195 return !!rowdef.editor;
196 },
197 handler: run_editor
198 });
199
200 Ext.apply(me, {
201 url: "/api2/json/nodes/" + nodename + "/lxc/" + vmid + "/config",
202 selModel: sm,
203 tbar: [ edit_btn ],
204 rows: rows,
205 listeners: {
206 itemdblclick: run_editor,
207 activate: reload
208 }
209 });
210
211 me.callParent();
212 }
213 });
214