Commit 67ceca9d authored by Ryo Yamashita's avatar Ryo Yamashita Committed by Yas Naoi
Browse files

Issue #3276410 by Ryo Yamashita, yas: Add the function to edit OpenStack Image in the SPA

parent cebe9967
Loading
Loading
Loading
Loading
+48 −5
Changes for modules/cloud_dashboard/cloud_dashboard/src/constant/form_template/openstack/image.ts: 48 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -10,16 +10,59 @@ const OPENSTACK_IMAGE_TEMPLATE: EntityFormTemplate[] = [
        type: 'panel',
        panelName: 'Image',
        keyValueRecords: [
          {
            type: 'default', labelName: 'Name', name: 'name', defaultValue: ''
          { type: 'default', labelName: 'Name', name: 'name', defaultValue: '' },
          { type: 'radio', labelName: 'Visibility', name: 'visibility', defaultValue: '0',
            value: [
              { labelName: 'Private', name: '0' },
              { labelName: 'Public', name: '1' },
            ], orientation: 'horizontal' }
        ]
      }
    ]
  },
  {
            type: 'radio', labelName: 'Visibility', name: 'visibility', defaultValue: '0',
    cloudServiceProvider: 'openstack',
    entityName: 'image',
    actionType: 'edit',
    entityRecords: [
      {
        type: 'panel',
        panelName: 'Image',
        keyValueRecords: [
          { type: 'default', labelName: 'Name', name: 'name', defaultValue: '', required: true },
          { type: 'default', labelName: 'AMI Name', name: 'ami_name', defaultValue: '', readOnly: true },
          { type: 'default', labelName: 'Image ID', name: 'image_id', defaultValue: '', readOnly: true },
          { type: 'default', labelName: 'Owner', name: 'account_id', defaultValue: '', readOnly: true },
          { type: 'default', labelName: 'Source', name: 'source', defaultValue: '', readOnly: true },
          { type: 'default', labelName: 'Status', name: 'status', defaultValue: '', readOnly: true },
          { type: 'default', labelName: 'State Reason', name: 'state_reason', defaultValue: '', readOnly: true },
          { type: 'datetime', labelName: 'Created', name: 'created' },
          { type: 'radio', labelName: 'Visibility', name: 'visibility', defaultValue: '0',
            value: [
              { labelName: 'Private', name: '0' },
              { labelName: 'Public', name: '1' },
            ], orientation: 'horizontal'
          }
            ], orientation: 'horizontal' }
        ]
      },
      {
        type: 'panel',
        panelName: 'Type:',
        keyValueRecords: [
          { type: 'default', labelName: 'Platform', name: 'platform', defaultValue: '', readOnly: true },
          { type: 'default', labelName: 'Architecture', name: 'architecture', defaultValue: '', readOnly: true },
          { type: 'default', labelName: 'Visualization Type', name: 'visualization_type', defaultValue: '', readOnly: true },
          { type: 'default', labelName: 'Product Code', name: 'product_code', defaultValue: '', readOnly: true },
          { type: 'default', labelName: 'Image Type', name: 'image_type', defaultValue: '', readOnly: true },
        ]
      },
      {
        type: 'panel',
        panelName: 'Device:',
        keyValueRecords: [
          { type: 'default', labelName: 'Root Device Name', name: 'root_device_name', defaultValue: '', readOnly: true },
          { type: 'default', labelName: 'Root Device Type', name: 'root_device_type', defaultValue: '', readOnly: true },
          { type: 'default', labelName: 'Kernel ID', name: 'kernel_id', defaultValue: '', readOnly: true },
          { type: 'default', labelName: 'Ramdisk ID', name: 'ramdisk_id', defaultValue: '', readOnly: true },
        ]
      }
    ]
+4 −0
Changes for modules/cloud_dashboard/cloud_dashboard/src/model/EntityFormColumn.ts: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -52,6 +52,10 @@ type EntityFormColumn = (EntityFormColumnBase & EntityFormColumnInfo) | {
  defaultValue: [string, string],
  required?: boolean,
  readOnly?: boolean,
} | {
  type: 'datetime',
  labelName: string,
  name: string,
};

export default EntityFormColumn;
+9 −2
Changes for modules/cloud_dashboard/cloud_dashboard/src/molecules/EntityFormBlock.tsx: 9 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ import StringInputBlock from 'molecules/StringInputBlock';
import TextareaBlock from 'molecules/TextareaBlock';
import TimeSelectBlock from 'molecules/TimeSelectBlock';
import UrlSelectBlock from 'molecules/UrlSelectBlock';
import { convertDateString } from 'service/utility';

const EntityFormBlock = ({ keyValueRecord, cloudContext, formData, setFormData }: {
  keyValueRecord: EntityFormColumn,
@@ -120,12 +121,18 @@ const EntityFormBlock = ({ keyValueRecord, cloudContext, formData, setFormData }
    case 'radio':
      return <RadioSelectBlock
        label={keyValueRecord.labelName}
        value={value}
        setValue={setValue}
        value={value ? '1' : '0'}
        setValue={(s: string) => {
          setValue(s === '1');
        }}
        valueList={keyValueRecord.value}
        orientation={keyValueRecord.orientation}
        required={!!keyValueRecord.required}
        readOnly={!!keyValueRecord.readOnly} />;
    case 'datetime':
      return <LabelBlock
        name={keyValueRecord.labelName}
        value={convertDateString(value)} />;
    default:
      return <></>;
  }
+1 −1
Changes for modules/cloud_dashboard/cloud_dashboard/src/molecules/LabelBlock.tsx: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ import Form from 'bootstrap3-components/Form';
const LabelBlock = ({name, value} : {name: string, value: string}) => {
  return <Form.Group>
    <Form.Label>{name}: </Form.Label>
    {' ' + value}
    {value === null ? '' : ` ${value}`}
  </Form.Group>;
}

+2 −0
Changes for modules/cloud_dashboard/cloud_dashboard/src/pages/EntityCreatePage.tsx: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@ const EntityCreatePageImpl = ({ cloudContext, entityFormTemplate, entityName }:
          if (keyValueRecord.type === 'time') {
            newFormData[keyValueRecord.hourName] = keyValueRecord.defaultValue[0];
            newFormData[keyValueRecord.minuteName] = keyValueRecord.defaultValue[1];
          } else if (keyValueRecord.type === 'datetime') {
            // The 'datetime' type is read-only so do not include it in the form data.
          } else {
            newFormData[keyValueRecord.name] = keyValueRecord.defaultValue;
          }
Loading