[pve-devel] [PATCH manager 2/3] Use a View Controller for making components react to each other

Dominik Csapak d.csapak at proxmox.com
Mon Jul 10 11:10:54 CEST 2017


looks good, one comment inline

On 07/06/2017 02:09 PM, Emmanuel Kasper wrote:
> This allow to declare all the components inside the same items
> array, and separate behaviour from view better.
>
> No functional changes.
> ---
>  www/manager6/qemu/CreateWizard.js | 71 ++++++++++++++++++++++-----------------
>  1 file changed, 40 insertions(+), 31 deletions(-)
>
> diff --git a/www/manager6/qemu/CreateWizard.js b/www/manager6/qemu/CreateWizard.js
> index 42de6ce0..abda17c4 100644
> --- a/www/manager6/qemu/CreateWizard.js
> +++ b/www/manager6/qemu/CreateWizard.js
> @@ -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.getView().lookup(reference).setNodename(value);

the getView() here is not necessary

> +		    });
> +		}
> +	    }
> +	}
> +    },
> +
>      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',
>





More information about the pve-devel mailing list