]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/window/GuestImport.js
ui: guest import: update text for cdrom-image-ignored warning
[pve-manager.git] / www / manager6 / window / GuestImport.js
index 1a9952d4a188f4d0f957752071e39703844410c8..633af903cd03837073c13cb095104ad3f6ecdff2 100644 (file)
@@ -84,6 +84,14 @@ Ext.define('PVE.window.GuestImport', {
            }
        },
 
+       calculateConfig: function() {
+           let me = this;
+           let inputPanel = me.lookup('mainInputPanel');
+           let summaryGrid = me.lookup('summaryGrid');
+           let values = inputPanel.getValues();
+           summaryGrid.getStore().setData(Object.entries(values).map(([key, value]) => ({ key, value })));
+       },
+
        control: {
            'grid field': {
                // update records from widgetcolumns
@@ -102,6 +110,9 @@ Ext.define('PVE.window.GuestImport', {
            'field[name=osbase]': {
                change: 'onOSBaseChange',
            },
+           'panel[reference=summaryTab]': {
+               activate: 'calculateConfig',
+           },
        },
     },
 
@@ -163,6 +174,7 @@ Ext.define('PVE.window.GuestImport', {
                            };
                            delete data.enable;
                            delete data.id;
+                           delete data.size;
                            if (!data.file) {
                                data.file = defaultStorage;
                                data.format = defaultFormat;
@@ -327,6 +339,13 @@ Ext.define('PVE.window.GuestImport', {
                    ],
 
                    columnB: [
+                       {
+                           xtype: 'proxmoxcheckbox',
+                           fieldLabel: gettext('Live Import'),
+                           reference: 'liveimport',
+                           isFormField: false,
+                           boxLabel: gettext('Experimental'),
+                       },
                        {
                            xtype: 'displayfield',
                            fieldLabel: gettext('Warnings'),
@@ -392,6 +411,16 @@ Ext.define('PVE.window.GuestImport', {
                                        return value.replace(/^.*\//, '');
                                    },
                                },
+                               {
+                                   text: gettext('Size'),
+                                   dataIndex: 'size',
+                                   renderer: (value) => {
+                                       if (Ext.isNumeric(value)) {
+                                           return Proxmox.Utils.render_size(value);
+                                       }
+                                       return value ?? Proxmox.Utils.unknownText;
+                                   },
+                               },
                                {
                                    text: gettext('Storage'),
                                    dataIndex: 'file',
@@ -556,6 +585,29 @@ Ext.define('PVE.window.GuestImport', {
                        },
                    ],
                },
+               {
+                   title: gettext('Resulting Config'),
+                   reference: 'summaryTab',
+                   items: [
+                       {
+                           xtype: 'grid',
+                           reference: 'summaryGrid',
+                           maxHeight: 400,
+                           scrollable: true,
+                           store: {
+                               model: 'KeyValue',
+                               sorters: [{
+                                   property: 'key',
+                                   direction: 'ASC',
+                               }],
+                           },
+                           columns: [
+                               { header: 'Key', width: 150, dataIndex: 'key' },
+                               { header: 'Value', flex: 1, dataIndex: 'value' },
+                           ],
+                       },
+                   ],
+               },
            ],
        },
     ],
@@ -577,13 +629,6 @@ Ext.define('PVE.window.GuestImport', {
 
        me.callParent();
 
-       me.query('toolbar')?.[0]?.insert(0, {
-           xtype: 'proxmoxcheckbox',
-           reference: 'liveimport',
-           boxLabelAlign: 'before',
-           boxLabel: gettext('Live Import'),
-       });
-
        me.setTitle(Ext.String.format(gettext('Import Guest - {0}'), `${me.storage}:${me.volumeName}`));
 
        me.lookup('defaultStorage').setNodename(me.nodename);
@@ -591,7 +636,7 @@ Ext.define('PVE.window.GuestImport', {
 
        let renderWarning = w => {
            const warningsCatalogue = {
-               'cdrom-image-ignored': gettext("CD-ROM images cannot get imported, please reconfigure the '{0}' drive after the import"),
+               'cdrom-image-ignored': gettext("CD-ROM images cannot get imported, if required you can reconfigure the '{0}' drive in the 'Advanced' tab."),
                'nvme-unsupported': gettext("NVMe disks are currently not supported, '{0}' will get attaced as SCSI"),
                'ovmf-with-lsi-unsupported': gettext("OVMF is built without LSI drivers, scsi hardware was set to '{1}'"),
                'serial-port-socket-only': gettext("Serial socket '{0}' will be mapped to a socket"),
@@ -610,10 +655,17 @@ Ext.define('PVE.window.GuestImport', {
 
                let disks = [];
                for (const [id, value] of Object.entries(data.disks ?? {})) {
+                   let volid = Ext.htmlEncode('<none>');
+                   let size = 'auto';
+                   if (Ext.isObject(value)) {
+                       volid = value.volid;
+                       size = value.size;
+                   }
                    disks.push({
                        id,
                        enable: true,
-                       'import-from': id === 'efidisk0' ? Ext.htmlEncode('<none>') : value,
+                       size,
+                       'import-from': volid,
                        format: 'raw',
                    });
                }