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