qemu/wizard: move to declarative syntax

Use a ViewModel directly, instead of emulating its behaviour with a
ViewController.

The rest consists mostly of indentation changes, moving some
components directly inside their parent declaration.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2018-02-14 13:34:47 +01:00 committed by Dominik Csapak
parent bd2118c6ed
commit 8cdfb23faa

View File

@ -1,38 +1,21 @@
/*jslint confusion: true*/
Ext.define('PVE.qemu.CreateWizard', {
extend: 'PVE.window.Wizard',
alias: 'widget.pveQemuCreateWizard',
mixins: ['Proxmox.Mixin.CBind'],
controller: {
xclass: 'Ext.app.ViewController',
control: {
'field[name=nodename]': {
change: function(f, value) {
var me = this;
['networkpanel', 'hdpanel', 'cdpanel'].forEach(function(reference) {
me.lookup(reference).setNodename(value);
});
}
}
viewModel: {
data: {
nodename: ''
}
},
initComponent: function() {
var me = this;
cbindData: {
nodename: undefined
},
var summarystore = Ext.create('Ext.data.Store', {
model: 'KeyValue',
sorters: [
{
property : 'key',
direction: 'ASC'
}
]
});
Ext.applyIf(me, {
subject: gettext('Virtual Machine'),
items: [
{
xtype: 'inputpanel',
@ -42,8 +25,13 @@ Ext.define('PVE.qemu.CreateWizard', {
{
xtype: 'pveNodeSelector',
name: 'nodename',
selectCurNode: !me.nodename,
preferredValue: me.nodename,
cbind: {
selectCurNode: '{!nodename}',
preferredValue: '{nodename}'
},
bind: {
value: '{nodename}'
},
fieldLabel: gettext('Node'),
allowBlank: false,
onlineValidator: true
@ -95,7 +83,9 @@ Ext.define('PVE.qemu.CreateWizard', {
items: [
{
xtype: 'pveQemuCDInputPanel',
reference: 'cdpanel',
bind: {
nodename: '{nodename}'
},
confid: 'ide2',
insideWizard: true
},
@ -107,7 +97,9 @@ Ext.define('PVE.qemu.CreateWizard', {
},
{
xtype: 'pveQemuHDInputPanel',
reference: 'hdpanel',
bind: {
nodename: '{nodename}'
},
title: gettext('Hard Disk'),
isCreate: true,
insideWizard: true
@ -124,7 +116,9 @@ Ext.define('PVE.qemu.CreateWizard', {
},
{
xtype: 'pveQemuNetworkInputPanel',
reference: 'networkpanel',
bind: {
nodename: '{nodename}'
},
title: gettext('Network'),
insideWizard: true
},
@ -134,7 +128,13 @@ Ext.define('PVE.qemu.CreateWizard', {
items: [
{
xtype: 'grid',
store: summarystore,
store: {
model: 'KeyValue',
sorters: [{
property : 'key',
direction: 'ASC'
}]
},
columns: [
{header: 'Key', width: 150, dataIndex: 'key'},
{header: 'Value', flex: 1, dataIndex: 'value'}
@ -143,7 +143,7 @@ Ext.define('PVE.qemu.CreateWizard', {
],
listeners: {
show: function(panel) {
var kv = me.getValues();
var kv = this.up('window').getValues();
var data = [];
Ext.Object.each(kv, function(key, value) {
if (key === 'delete') { // ignore
@ -151,6 +151,8 @@ Ext.define('PVE.qemu.CreateWizard', {
}
data.push({ key: key, value: value });
});
var summarystore = panel.down('grid').getStore();
summarystore.suspendEvents();
summarystore.removeAll();
summarystore.add(data);
@ -161,7 +163,8 @@ Ext.define('PVE.qemu.CreateWizard', {
}
},
onSubmit: function() {
var kv = me.getValues();
var wizard = this.up('window');
var kv = wizard.getValues();
delete kv['delete'];
var nodename = kv.nodename;
@ -169,11 +172,11 @@ Ext.define('PVE.qemu.CreateWizard', {
Proxmox.Utils.API2Request({
url: '/nodes/' + nodename + '/qemu',
waitMsgTarget: me,
waitMsgTarget: wizard,
method: 'POST',
params: kv,
success: function(response){
me.close();
wizard.close();
},
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
@ -182,10 +185,6 @@ Ext.define('PVE.qemu.CreateWizard', {
}
}
]
});
me.callParent();
}
});