Use a View Controller for making components react to each other

This allow to declare all the components inside the same items
array, and separate behaviour from view better.

No functional changes.
This commit is contained in:
Emmanuel Kasper 2017-07-10 16:35:03 +02:00 committed by Dietmar Maurer
parent 85806e47d1
commit 8d4f1d4d2b

View File

@ -3,6 +3,22 @@ Ext.define('PVE.qemu.CreateWizard', {
alias: 'widget.pveQemuCreateWizard',
qemuScsiController: undefined,
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);
});
}
}
}
},
initComponent: function() {
var me = this;
@ -16,26 +32,6 @@ Ext.define('PVE.qemu.CreateWizard', {
]
});
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'),
isCreate: true,
insideWizard: true
});
var networkpanel = Ext.create('PVE.qemu.NetworkInputPanel', {
title: gettext('Network'),
insideWizard: true
});
Ext.applyIf(me, {
subject: gettext('Virtual Machine'),
items: [
@ -51,14 +47,7 @@ Ext.define('PVE.qemu.CreateWizard', {
preferredValue: me.nodename,
fieldLabel: gettext('Node'),
allowBlank: false,
onlineValidator: true,
listeners: {
change: function(f, value) {
networkpanel.setNodename(value);
hdpanel.setNodename(value);
cdpanel.setNodename(value);
}
}
onlineValidator: true
},
{
xtype: 'pveGuestIDSelector',
@ -101,8 +90,23 @@ Ext.define('PVE.qemu.CreateWizard', {
xtype: 'pveQemuOSTypePanel',
insideWizard: true
},
cdpanel,
hdpanel,
{
xtype: 'pveQemuCDInputPanel',
reference: 'cdpanel',
title: gettext('CD/DVD'),
confid: 'ide2',
fieldDefaults: {
labelWidth: 160
},
insideWizard: true
},
{
xtype: 'pveQemuHDInputPanel',
reference: 'hdpanel',
title: gettext('Hard Disk'),
isCreate: true,
insideWizard: true
},
{
xtype: 'pveQemuProcessorPanel',
title: gettext('CPU')
@ -112,7 +116,12 @@ Ext.define('PVE.qemu.CreateWizard', {
insideWizard: true,
title: gettext('Memory')
},
networkpanel,
{
xtype: 'pveQemuNetworkInputPanel',
reference: 'networkpanel',
title: gettext('Network'),
insideWizard: true
},
{
title: gettext('Confirm'),
layout: 'fit',