]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/form/DiskStorageSelector.js
ui: fix duplicate references when using multiple disk storage selectors
[pve-manager.git] / www / manager6 / form / DiskStorageSelector.js
index 8099696bda01107ce4f8bb9a60072f417e0e48ac..860a3b3ca4410b2188479ff2ca89a9bd0d79a25f 100644 (file)
@@ -4,7 +4,7 @@ Ext.define('PVE.form.DiskStorageSelector', {
 
     layout: 'fit',
     defaults: {
-       margin: '0 0 5 0'
+       margin: '0 0 5 0',
     },
 
     // the fieldLabel for the storageselector
@@ -28,7 +28,10 @@ Ext.define('PVE.form.DiskStorageSelector', {
     // hides the size field (e.g, for the efi disk dialog)
     hideSize: false,
 
-    // sets the intial size value
+    // hides the format field (e.g. for TPM state)
+    hideFormat: false,
+
+    // sets the initial size value
     // string because else we get a type confusion
     defaultSize: '32',
 
@@ -54,17 +57,24 @@ Ext.define('PVE.form.DiskStorageSelector', {
            return;
        }
 
-       var selectformat = false;
+       let validFormats = {};
+       let selectFormat = 'raw';
        if (rec.data.format) {
-           var format = rec.data.format[0]; // 0 is the formats, 1 the default in the backend
-           delete format.subvol; // we never need subvol in the gui
-           selectformat = (Ext.Object.getSize(format) > 1);
+           validFormats = rec.data.format[0]; // 0 is the formats, 1 the default in the backend
+           delete validFormats.subvol; // we never need subvol in the gui
+           if (validFormats.qcow2) {
+               selectFormat = 'qcow2';
+           } else if (validFormats.raw) {
+               selectFormat = 'raw';
+           } else {
+               selectFormat = rec.data.format[1];
+           }
        }
 
        var select = !!rec.data.select_existing && !me.hideSelection;
 
-       formatsel.setDisabled(!selectformat);
-       formatsel.setValue(selectformat ? 'qcow2' : 'raw');
+       formatsel.setDisabled(me.hideFormat || Ext.Object.getSize(validFormats) <= 1);
+       formatsel.setValue(selectFormat);
 
        hdfilesel.setDisabled(!select);
        hdfilesel.setVisible(select);
@@ -108,7 +118,6 @@ Ext.define('PVE.form.DiskStorageSelector', {
                xtype: 'pveStorageSelector',
                itemId: 'hdstorage',
                name: 'hdstorage',
-               reference: 'hdstorage',
                fieldLabel: me.storageLabel,
                nodename: me.nodename,
                storageContent: me.storageContent,
@@ -119,24 +128,22 @@ Ext.define('PVE.form.DiskStorageSelector', {
                listeners: {
                    change: {
                        fn: me.changeStorage,
-                       scope: me
-                   }
-               }
+                       scope: me,
+                   },
+               },
            },
            {
                xtype: 'pveFileSelector',
                name: 'hdimage',
-               reference: 'hdimage',
                itemId: 'hdimage',
                fieldLabel: gettext('Disk image'),
                nodename: me.nodename,
                disabled: true,
-               hidden: true
+               hidden: true,
            },
            {
                xtype: 'numberfield',
                itemId: 'disksize',
-               reference: 'disksize',
                name: 'disksize',
                fieldLabel: gettext('Disk size') + ' (GiB)',
                hidden: me.hideSize,
@@ -145,25 +152,24 @@ Ext.define('PVE.form.DiskStorageSelector', {
                maxValue: 128*1024,
                decimalPrecision: 3,
                value: me.defaultSize,
-               allowBlank: false
+               allowBlank: false,
            },
            {
                xtype: 'pveDiskFormatSelector',
                itemId: 'diskformat',
-               reference: 'diskformat',
                name: 'diskformat',
                fieldLabel: gettext('Format'),
                nodename: me.nodename,
                disabled: true,
-               hidden: me.storageContent === 'rootdir',
+               hidden: me.hideFormat || me.storageContent === 'rootdir',
                value: 'qcow2',
-               allowBlank: false
-           }
+               allowBlank: false,
+           },
        ];
 
        // use it to disable the children but not ourself
        me.disabled = false;
 
        me.callParent();
-    }
+    },
 });