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