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