]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/qemu/CreateWizard.js
ui: efi/tpm: propagate disabled to child items
[pve-manager.git] / www / manager6 / qemu / CreateWizard.js
CommitLineData
9bbc1e4d
DM
1Ext.define('PVE.qemu.CreateWizard', {
2 extend: 'PVE.window.Wizard',
42902182 3 alias: 'widget.pveQemuCreateWizard',
8cdfb23f 4 mixins: ['Proxmox.Mixin.CBind'],
9bbc1e4d 5
8cdfb23f
TL
6 viewModel: {
7 data: {
471d03aa
DC
8 nodename: '',
9 current: {
f6710aac
TL
10 scsihw: '',
11 },
12 },
8d4f1d4d
EK
13 },
14
8cdfb23f 15 cbindData: {
f6710aac 16 nodename: undefined,
8cdfb23f 17 },
9bbc1e4d 18
8cdfb23f 19 subject: gettext('Virtual Machine'),
9bbc1e4d 20
8cdfb23f
TL
21 items: [
22 {
23 xtype: 'inputpanel',
24 title: gettext('General'),
25 onlineHelp: 'qm_general_settings',
26 column1: [
9bbc1e4d 27 {
8cdfb23f
TL
28 xtype: 'pveNodeSelector',
29 name: 'nodename',
30 cbind: {
31 selectCurNode: '{!nodename}',
f6710aac 32 preferredValue: '{nodename}',
8d4f1d4d 33 },
8cdfb23f 34 bind: {
f6710aac 35 value: '{nodename}',
8cdfb23f
TL
36 },
37 fieldLabel: gettext('Node'),
38 allowBlank: false,
f6710aac 39 onlineValidator: true,
7da4966d 40 },
8d4f1d4d 41 {
8cdfb23f
TL
42 xtype: 'pveGuestIDSelector',
43 name: 'vmid',
44 guestType: 'qemu',
45 value: '',
46 loadNextFreeID: true,
f6710aac 47 validateExists: false,
8d4f1d4d 48 },
9bbc1e4d 49 {
8cdfb23f
TL
50 xtype: 'textfield',
51 name: 'name',
52 vtype: 'DnsName',
53 value: '',
54 fieldLabel: gettext('Name'),
f6710aac
TL
55 allowBlank: true,
56 },
8cdfb23f
TL
57 ],
58 column2: [
9bbc1e4d 59 {
8cdfb23f
TL
60 xtype: 'pvePoolSelector',
61 fieldLabel: gettext('Resource Pool'),
62 name: 'pool',
63 value: '',
f6710aac
TL
64 allowBlank: true,
65 },
8cdfb23f 66 ],
29e19e95
DC
67 advancedColumn1: [
68 {
69 xtype: 'proxmoxcheckbox',
70 name: 'onboot',
71 uncheckedValue: 0,
72 defaultValue: 0,
73 deleteDefaultValue: true,
f6710aac
TL
74 fieldLabel: gettext('Start at boot'),
75 },
29e19e95
DC
76 ],
77 advancedColumn2: [
78 {
79 xtype: 'textfield',
80 name: 'order',
81 defaultValue: '',
82 emptyText: 'any',
83 labelWidth: 120,
f6710aac 84 fieldLabel: gettext('Start/Shutdown order'),
29e19e95
DC
85 },
86 {
87 xtype: 'textfield',
88 name: 'up',
89 defaultValue: '',
90 emptyText: 'default',
91 labelWidth: 120,
f6710aac 92 fieldLabel: gettext('Startup delay'),
29e19e95
DC
93 },
94 {
95 xtype: 'textfield',
96 name: 'down',
97 defaultValue: '',
98 emptyText: 'default',
99 labelWidth: 120,
f6710aac
TL
100 fieldLabel: gettext('Shutdown timeout'),
101 },
29e19e95
DC
102 ],
103 onGetValues: function(values) {
29e19e95
DC
104 ['name', 'pool', 'onboot', 'agent'].forEach(function(field) {
105 if (!values[field]) {
106 delete values[field];
107 }
108 });
109
110 var res = PVE.Parser.printStartup({
111 order: values.order,
112 up: values.up,
f6710aac 113 down: values.down,
29e19e95
DC
114 });
115
116 if (res) {
117 values.startup = res;
8cdfb23f 118 }
29e19e95
DC
119
120 delete values.order;
121 delete values.up;
122 delete values.down;
123
8cdfb23f 124 return values;
f6710aac 125 },
8cdfb23f
TL
126 },
127 {
128 xtype: 'container',
129 layout: 'hbox',
130 defaults: {
131 flex: 1,
f6710aac 132 padding: '0 10',
8cdfb23f
TL
133 },
134 title: gettext('OS'),
135 items: [
8d4f1d4d 136 {
8cdfb23f
TL
137 xtype: 'pveQemuCDInputPanel',
138 bind: {
f6710aac 139 nodename: '{nodename}',
8cdfb23f
TL
140 },
141 confid: 'ide2',
f6710aac 142 insideWizard: true,
8d4f1d4d 143 },
9bbc1e4d 144 {
8cdfb23f 145 xtype: 'pveQemuOSTypePanel',
f6710aac
TL
146 insideWizard: true,
147 },
148 ],
8cdfb23f 149 },
471d03aa
DC
150 {
151 xtype: 'pveQemuSystemPanel',
152 title: gettext('System'),
153 isCreate: true,
f6710aac 154 insideWizard: true,
471d03aa 155 },
8cdfb23f
TL
156 {
157 xtype: 'pveQemuHDInputPanel',
74c0b9a9 158 padding: 0,
8cdfb23f 159 bind: {
f6710aac 160 nodename: '{nodename}',
8cdfb23f
TL
161 },
162 title: gettext('Hard Disk'),
163 isCreate: true,
f6710aac 164 insideWizard: true,
8cdfb23f
TL
165 },
166 {
167 xtype: 'pveQemuProcessorPanel',
168 insideWizard: true,
f6710aac 169 title: gettext('CPU'),
8cdfb23f
TL
170 },
171 {
172 xtype: 'pveQemuMemoryPanel',
173 insideWizard: true,
f6710aac 174 title: gettext('Memory'),
8cdfb23f
TL
175 },
176 {
177 xtype: 'pveQemuNetworkInputPanel',
178 bind: {
f6710aac 179 nodename: '{nodename}',
8cdfb23f
TL
180 },
181 title: gettext('Network'),
f6710aac 182 insideWizard: true,
8cdfb23f
TL
183 },
184 {
185 title: gettext('Confirm'),
186 layout: 'fit',
187 items: [
188 {
189 xtype: 'grid',
190 store: {
191 model: 'KeyValue',
192 sorters: [{
8058410f 193 property: 'key',
f6710aac
TL
194 direction: 'ASC',
195 }],
9bbc1e4d 196 },
8cdfb23f 197 columns: [
8058410f
TL
198 { header: 'Key', width: 150, dataIndex: 'key' },
199 { header: 'Value', flex: 1, dataIndex: 'value' },
f6710aac
TL
200 ],
201 },
8cdfb23f 202 ],
d8e2ae99
TL
203 dockedItems: [
204 {
205 xtype: 'proxmoxcheckbox',
206 name: 'start',
207 dock: 'bottom',
208 margin: '5 0 0 0',
f6710aac
TL
209 boxLabel: gettext('Start after created'),
210 },
d8e2ae99 211 ],
8cdfb23f
TL
212 listeners: {
213 show: function(panel) {
214 var kv = this.up('window').getValues();
215 var data = [];
216 Ext.Object.each(kv, function(key, value) {
217 if (key === 'delete') { // ignore
218 return;
219 }
220 data.push({ key: key, value: value });
221 });
9bbc1e4d 222
8cdfb23f
TL
223 var summarystore = panel.down('grid').getStore();
224 summarystore.suspendEvents();
225 summarystore.removeAll();
226 summarystore.add(data);
227 summarystore.sort();
228 summarystore.resumeEvents();
229 summarystore.fireEvent('refresh');
f6710aac 230 },
8cdfb23f
TL
231 },
232 onSubmit: function() {
233 var wizard = this.up('window');
234 var kv = wizard.getValues();
399ffa76 235 delete kv.delete;
8cdfb23f
TL
236
237 var nodename = kv.nodename;
238 delete kv.nodename;
9bbc1e4d 239
8cdfb23f
TL
240 Proxmox.Utils.API2Request({
241 url: '/nodes/' + nodename + '/qemu',
242 waitMsgTarget: wizard,
243 method: 'POST',
244 params: kv,
8058410f 245 success: function(response) {
8cdfb23f
TL
246 wizard.close();
247 },
248 failure: function(response, opts) {
249 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
f6710aac 250 },
8cdfb23f 251 });
f6710aac
TL
252 },
253 },
254 ],
9bbc1e4d
DM
255});
256
257