renderForm()

in components/vam-ui/packages/vam-ui/src/parts/appstream-images/CreateAppstreamImage.js [107:210]


  renderForm() {
    const model = this.getModel();
    let applicationsValue = [];
    let imageName = '';
    if (model) {
      applicationsValue = model.applications.map(a => a.infoPath);
      imageName = `${model.name}-Copy`;
    }

    const imageBuilderIDs = this.props.appstreamImageBuildersStore.dropdownOptions;
    imageBuilderIDs.unshift({
      key: '',
      value: '',
      text: '',
    });

    const baseImageArns = this.props.appstreamImagesStore.dropdownOptionsWithArn;
    baseImageArns.unshift({
      key: '',
      value: '',
      text: '',
    });

    const form = getCreateAppstreamImageForm({ imageName }, { imageBuilderIDs, baseImageArns });
    const applications = this.props.appstreamApplicationsStore.list;

    return (
      <Form form={form} onSuccess={this.handleFormSubmission} onCancel={this.handleCancel}>
        {({ processing, _onSubmit, _onCancel }) => {
          return (
            <>
              <Input field={form.$('imageName')} data-testid="image-name" />
              <DropDown field={form.$('instanceType')} fluid selection data-testid="instance-type" />
              <CustomInput field={form.$('applications')}>
                <SelectableTable
                  defaultValue={applicationsValue}
                  rowData={applications}
                  data-testid="applications"
                  headerRenderer={() => {
                    return [i18n(keys.ICON), i18n(keys.NAME)];
                  }}
                  rowRenderer={row => {
                    return [<Image src={row.iconUrl} width="20" height="20" />, row.displayName];
                  }}
                  valueMethod={row => {
                    return row.id;
                  }}
                />
              </CustomInput>
              {adJoined && (
                <div className="mb2">
                  <Checkbox
                    toggle
                    defaultChecked={this.componentStore.dapEnabled}
                    label={i18n(keys.DAP_ENABLED)}
                    field={form.$('dapEnabled')}
                    data-testid="dap-enabled"
                    onClick={this.handleToggleChange('dapEnabled')}
                  />
                </div>
              )}
              <Header as="h3">{i18n(keys.ADVANCED_SETTINGS)}</Header>
              <DropDown field={form.$('baseImageArn')} fluid selection data-testid="base-image-arn" />
              <DropDown field={form.$('imageBuilderID')} fluid selection data-testid="image-builder-id" />
              <div className="m2">
                <Checkbox
                  toggle
                  defaultChecked={this.componentStore.snapshotImage}
                  label={i18n(keys.SNAPSHOT_IMAGE)}
                  field={form.$('snapshotImage')}
                  data-testid="snapshot-enabled"
                  onClick={this.handleToggleChange('snapshotImage')}
                />
              </div>
              <div className="m2">
                <Checkbox
                  toggle
                  defaultChecked={this.componentStore.deleteImageBuilder}
                  label={i18n(keys.DELETE_IMAGE_BUILDER)}
                  field={form.$('deleteImageBuilder')}
                  data-testid="delete-image-builder-enabled"
                  onClick={this.handleToggleChange('deleteImageBuilder')}
                />
              </div>
              <Button
                className="ml2 mb3"
                floated="right"
                color="blue"
                icon
                disabled={processing}
                type="submit"
                data-testid="create-image-button"
              >
                {i18n(keys.CREATE_IMAGE)}
              </Button>
              <Button className="mb3" floated="right" disabled={processing} onClick={this.handleCancel}>
                {i18n(baseKeys.CANCEL)}
              </Button>
            </>
          );
        }}
      </Form>
    );
  }