}
},
+ 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
'field[name=osbase]': {
change: 'onOSBaseChange',
},
+ 'panel[reference=summaryTab]': {
+ activate: 'calculateConfig',
+ },
},
},
};
delete data.enable;
delete data.id;
+ delete data.size;
if (!data.file) {
data.file = defaultStorage;
data.format = defaultFormat;
],
columnB: [
+ {
+ xtype: 'proxmoxcheckbox',
+ fieldLabel: gettext('Live Import'),
+ reference: 'liveimport',
+ isFormField: false,
+ boxLabel: gettext('Experimental'),
+ },
{
xtype: 'displayfield',
fieldLabel: gettext('Warnings'),
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',
},
],
},
+ {
+ 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' },
+ ],
+ },
+ ],
+ },
],
},
],
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);
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"),
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',
});
}