]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/qemu/CreateWizard.js
reduce scope of jslint warnings to the problematic statement
[pve-manager.git] / www / manager6 / qemu / CreateWizard.js
1 Ext.define('PVE.qemu.CreateWizard', {
2 extend: 'PVE.window.Wizard',
3 alias: 'widget.pveQemuCreateWizard',
4 qemuScsiController: undefined,
5
6 initComponent: function() {
7 var me = this;
8
9 var summarystore = Ext.create('Ext.data.Store', {
10 model: 'KeyValue',
11 sorters: [
12 {
13 property : 'key',
14 direction: 'ASC'
15 }
16 ]
17 });
18
19 var cdpanel = Ext.create('PVE.qemu.CDInputPanel', {
20 title: gettext('CD/DVD'),
21 confid: 'ide2',
22 fieldDefaults: {
23 labelWidth: 160
24 },
25 insideWizard: true
26 });
27
28 /*jslint confusion: true */
29 /* type confusion for 'create' between boolean and function */
30 var hdpanel = Ext.create('PVE.qemu.HDInputPanel', {
31 title: gettext('Hard Disk'),
32 create: true,
33 insideWizard: true
34 });
35 /*jslint confusion: false */
36
37 var networkpanel = Ext.create('PVE.qemu.NetworkInputPanel', {
38 title: gettext('Network'),
39 insideWizard: true
40 });
41
42 Ext.applyIf(me, {
43 subject: gettext('Virtual Machine'),
44 items: [
45 {
46 xtype: 'inputpanel',
47 title: gettext('General'),
48 onlineHelp: 'qm_general_settings',
49 column1: [
50 {
51 xtype: 'pveNodeSelector',
52 name: 'nodename',
53 selectCurNode: true,
54 fieldLabel: gettext('Node'),
55 allowBlank: false,
56 onlineValidator: true,
57 listeners: {
58 change: function(f, value) {
59 networkpanel.setNodename(value);
60 hdpanel.setNodename(value);
61 cdpanel.setNodename(value);
62 }
63 }
64 },
65 {
66 xtype: 'pveGuestIDSelector',
67 name: 'vmid',
68 guestType: 'qemu',
69 value: '',
70 loadNextFreeID: true,
71 validateExists: false
72 },
73 {
74 xtype: 'textfield',
75 name: 'name',
76 vtype: 'DnsName',
77 value: '',
78 fieldLabel: gettext('Name'),
79 allowBlank: true
80 }
81 ],
82 column2: [
83 {
84 xtype: 'pvePoolSelector',
85 fieldLabel: gettext('Resource Pool'),
86 name: 'pool',
87 value: '',
88 allowBlank: true
89 }
90 ],
91 onGetValues: function(values) {
92 if (!values.name) {
93 delete values.name;
94 }
95 if (!values.pool) {
96 delete values.pool;
97 }
98 return values;
99 }
100 },
101 {
102 title: gettext('OS'),
103 xtype: 'pveQemuOSTypePanel',
104 insideWizard: true
105 },
106 cdpanel,
107 hdpanel,
108 {
109 xtype: 'pveQemuProcessorPanel',
110 title: gettext('CPU')
111 },
112 {
113 xtype: 'pveQemuMemoryPanel',
114 insideWizard: true,
115 title: gettext('Memory')
116 },
117 networkpanel,
118 {
119 title: gettext('Confirm'),
120 layout: 'fit',
121 items: [
122 {
123 title: gettext('Settings'),
124 xtype: 'grid',
125 store: summarystore,
126 columns: [
127 {header: 'Key', width: 150, dataIndex: 'key'},
128 {header: 'Value', flex: 1, dataIndex: 'value'}
129 ]
130 }
131 ],
132 listeners: {
133 show: function(panel) {
134 var form = me.down('form').getForm();
135 var kv = me.getValues();
136 var data = [];
137 Ext.Object.each(kv, function(key, value) {
138 if (key === 'delete') { // ignore
139 return;
140 }
141 var html = Ext.htmlEncode(Ext.JSON.encode(value));
142 data.push({ key: key, value: value });
143 });
144 summarystore.suspendEvents();
145 summarystore.removeAll();
146 summarystore.add(data);
147 summarystore.sort();
148 summarystore.resumeEvents();
149 summarystore.fireEvent('refresh');
150
151 }
152 },
153 onSubmit: function() {
154 var kv = me.getValues();
155 delete kv['delete'];
156
157 var nodename = kv.nodename;
158 delete kv.nodename;
159
160 if (me.qemuScsiController) {
161 kv.scsihw = me.qemuScsiController;
162 }
163
164 PVE.Utils.API2Request({
165 url: '/nodes/' + nodename + '/qemu',
166 waitMsgTarget: me,
167 method: 'POST',
168 params: kv,
169 success: function(response){
170 me.close();
171 },
172 failure: function(response, opts) {
173 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
174 }
175 });
176 }
177 }
178 ]
179 });
180
181 me.callParent();
182 }
183 });
184
185
186
187