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