diff --git a/src/components/modules/WizardModule/WizardOptions/WizardOptions.tsx b/src/components/modules/WizardModule/WizardOptions/WizardOptions.tsx index ceef944d8..3a6cad632 100644 --- a/src/components/modules/WizardModule/WizardOptions/WizardOptions.tsx +++ b/src/components/modules/WizardModule/WizardOptions/WizardOptions.tsx @@ -396,7 +396,7 @@ class WizardOptions extends React.Component { let groups: Array<{ fields: FieldRender[]; name?: string }> = [{ fields }]; const workerFields = fields.filter( - f => f.field.name.indexOf("migr_") === 0, + f => f.field.name.indexOf("migr_") === 0 && !f.field.groupName, ); if (workerFields.length > 1) { groups = [ @@ -594,7 +594,7 @@ class WizardOptions extends React.Component { - {LabelDictionary.get(g.name)} + {LabelDictionary.get(g.name, this.props.dictionaryKey)} diff --git a/src/plugins/vmware_vsphere/OptionsSchemaPlugin.ts b/src/plugins/vmware_vsphere/OptionsSchemaPlugin.ts index 74aa43e8f..1a54581d3 100644 --- a/src/plugins/vmware_vsphere/OptionsSchemaPlugin.ts +++ b/src/plugins/vmware_vsphere/OptionsSchemaPlugin.ts @@ -58,6 +58,31 @@ export default class OptionsSchemaParser extends OptionsSchemaPluginBase { ]; }); + const exportMechField = fields.find( + f => f.name === "export_transfer_mechanism", + ); + if (!exportMechField?.enum) { + return fields; + } + exportMechField.subFields = []; + exportMechField.enum.forEach((exportType: any) => { + const exportTypeFieldIdx = fields.findIndex( + f => f.name === `${exportType}_options`, + ); + if (exportTypeFieldIdx === -1) { + return; + } + const subField = fields[exportTypeFieldIdx]; + if (subField.properties?.length) { + subField.properties = subField.properties.map((p: Field) => ({ + ...p, + groupName: subField.name, + })); + } + exportMechField.subFields!.push(subField); + fields.splice(exportTypeFieldIdx, 1); + }); + return fields; } @@ -68,6 +93,13 @@ export default class OptionsSchemaParser extends OptionsSchemaPluginBase { requiresWindowsImage: boolean; }) { const { field, options, requiresWindowsImage } = opts; + if (field.name === "export_transfer_mechanism" && field.subFields) { + field.subFields.forEach(sf => { + sf.properties?.forEach(f => { + super.fillFieldValues({ field: f, options, requiresWindowsImage }); + }); + }); + } const option = options.find(f => f.name === field.name); if (!option) {