pve-manager/www/manager6/qemu/CreateWizard.js
Emmanuel Kasper 42902182c0 Rename Wizard Component aliases using camelCase
this is ExtJS recommended practise, follows most of our
conventions and is necessary for querying
components with Ext.ComponentQuery.query() without escaping the
dots in the component widget name.
2016-07-21 12:44:13 +02:00

180 lines
3.7 KiB
JavaScript

// fixme: howto avoid jslint type confusion?
/*jslint confusion: true */
Ext.define('PVE.qemu.CreateWizard', {
extend: 'PVE.window.Wizard',
alias: 'widget.pveQemuCreateWizard',
initComponent: function() {
var me = this;
var summarystore = Ext.create('Ext.data.Store', {
model: 'KeyValue',
sorters: [
{
property : 'key',
direction: 'ASC'
}
]
});
var cdpanel = Ext.create('PVE.qemu.CDInputPanel', {
title: gettext('CD/DVD'),
confid: 'ide2',
fieldDefaults: {
labelWidth: 160
},
insideWizard: true
});
var hdpanel = Ext.create('PVE.qemu.HDInputPanel', {
title: gettext('Hard Disk'),
create: true,
insideWizard: true
});
var networkpanel = Ext.create('PVE.qemu.NetworkInputPanel', {
title: gettext('Network'),
insideWizard: true
});
Ext.applyIf(me, {
subject: gettext('Virtual Machine'),
items: [
{
xtype: 'inputpanel',
title: gettext('General'),
onlineHelp: 'chapter-qm.html#_general_settings',
column1: [
{
xtype: 'pveNodeSelector',
name: 'nodename',
selectCurNode: true,
fieldLabel: gettext('Node'),
allowBlank: false,
onlineValidator: true,
listeners: {
change: function(f, value) {
networkpanel.setNodename(value);
hdpanel.setNodename(value);
cdpanel.setNodename(value);
}
}
},
{
xtype: 'pveVMIDSelector',
name: 'vmid',
value: '',
loadNextFreeVMID: true,
validateExists: false
},
{
xtype: 'textfield',
name: 'name',
vtype: 'DnsName',
value: '',
fieldLabel: gettext('Name'),
allowBlank: true
}
],
column2: [
{
xtype: 'pvePoolSelector',
fieldLabel: gettext('Resource Pool'),
name: 'pool',
value: '',
allowBlank: true
}
],
onGetValues: function(values) {
if (!values.name) {
delete values.name;
}
if (!values.pool) {
delete values.pool;
}
return values;
}
},
{
title: gettext('OS'),
xtype: 'pveQemuOSTypePanel'
},
cdpanel,
hdpanel,
{
xtype: 'pveQemuProcessorPanel',
title: gettext('CPU')
},
{
xtype: 'pveQemuMemoryPanel',
insideWizard: true,
title: gettext('Memory')
},
networkpanel,
{
title: gettext('Confirm'),
layout: 'fit',
items: [
{
title: gettext('Settings'),
xtype: 'grid',
store: summarystore,
columns: [
{header: 'Key', width: 150, dataIndex: 'key'},
{header: 'Value', flex: 1, dataIndex: 'value'}
]
}
],
listeners: {
show: function(panel) {
var form = me.down('form').getForm();
var kv = me.getValues();
var data = [];
Ext.Object.each(kv, function(key, value) {
if (key === 'delete') { // ignore
return;
}
var html = Ext.htmlEncode(Ext.JSON.encode(value));
data.push({ key: key, value: value });
});
summarystore.suspendEvents();
summarystore.removeAll();
summarystore.add(data);
summarystore.sort();
summarystore.resumeEvents();
summarystore.fireEvent('datachanged', summarystore);
}
},
onSubmit: function() {
var kv = me.getValues();
delete kv['delete'];
var nodename = kv.nodename;
delete kv.nodename;
PVE.Utils.API2Request({
url: '/nodes/' + nodename + '/qemu',
waitMsgTarget: me,
method: 'POST',
params: kv,
success: function(response){
me.close();
},
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
}
}
]
});
me.callParent();
}
});