Commit 12fe1577 authored by Ryo Yamashita's avatar Ryo Yamashita Committed by Yas Naoi
Browse files

Issue #3298957 by Ryo Yamashita, yas: Add the function to edit AWS Cloud image in the SPA

parent 554abfab
Loading
Loading
Loading
Loading
+55 −0
Original line number Diff line number Diff line
@@ -18,6 +18,61 @@ const AWS_CLOUD_IMAGE_TEMPLATE: EntityFormTemplate[] = [
      }
    ]
  },
  {
    cloudServiceProvider: 'aws_cloud',
    entityName: 'image',
    actionType: 'edit',
    entityRecords: [
      {
        type: 'panel',
        panelName: 'Image',
        keyValueRecords: [
          { type: 'default', labelName: 'Name', name: 'name', defaultValue: '', required: true },
          { type: 'default', labelName: 'Description', name: 'description', 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', defaultValue: 0, readOnly: true },
        ]
      },
      {
        type: 'panel',
        panelName: 'Launch Permission:',
        keyValueRecords: [
          { type: 'radio', labelName: 'Visibility', name: 'visibility', defaultValue: '0',
          value: [
            { labelName: 'Private', name: '0' },
            { labelName: 'Public', name: '1' },
          ], orientation: 'horizontal' },
          { type: 'array', labelName: 'AWS account IDs', name: 'launch_permission_account_ids', defaultValue: [''] },
        ]
      },
      {
        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 },
        ]
      },
    ]
  },
]

export default AWS_CLOUD_IMAGE_TEMPLATE;
+0 −1
Original line number Diff line number Diff line
@@ -7,7 +7,6 @@ const EntityFormLabel = ({ label, entityName, entityData }: {
  entityName: string,
  entityData?: EntityData
}) => {
  console.log({ label, entityName, entityData });
  let outputLabel = label;
  while (true) {
    const result = outputLabel.match(/{{.+?}}/);
+1 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ const EntityCreatePageImpl = ({ cloudContext, entityFormTemplate, entityName }:
  }, []);

  useEffect(() => {
    console.log('FormData:');
    console.log(formData);
  }, [formData]);

+14 −1
Original line number Diff line number Diff line
@@ -86,6 +86,10 @@ const EntityXxudPageImpl = ({ cloudContext, entityFormTemplate, entityName, enti
    // Load entity data.
    const attributes = entityData.attributes;
    const newFormData: Record<string, any> = {};
    console.log('attributes:');
    console.log(attributes);
    console.log('formInfoList:');
    console.log(formInfoList);
    for (const formInfo of formInfoList) {
      // Handling of types that are not entered in the form, such as 'cost' types.
      if (formInfo.defaultValue === undefined) {
@@ -98,7 +102,7 @@ const EntityXxudPageImpl = ({ cloudContext, entityFormTemplate, entityName, enti
        continue;
      }
      const value = attributes[formInfo.key];
      if (value === null) {
      if (value === null || (Array.isArray(value) && value.length === 0)) {
        newFormData[formInfo.key] = formInfo.defaultValue;
        continue;
      }
@@ -108,12 +112,21 @@ const EntityXxudPageImpl = ({ cloudContext, entityFormTemplate, entityName, enti
      if (formInfo.type === 'multi-select' || formInfo.type === 'array') {
        newFormData[formInfo.key] = typeof value === 'string'
          ? [value] : value;
          continue;
      }

      // Processing in 'radio' type forms.
      if (typeof value === 'boolean' && formInfo.type === 'radio') {
        newFormData[formInfo.key] = value ? '1' : '0';
        continue;
      }

      // Other type.
      newFormData[formInfo.key] = value;
    }

    console.log('newFormData:');
    console.log(newFormData);
    setFormData(newFormData);
  }

+0 −1
Original line number Diff line number Diff line
@@ -349,7 +349,6 @@ export const convertCloudContextItemList = (
        positionLabel: `${rawCloudContextItem.City}, ${rawCloudContextItem.Country}`,
      };
    });
    console.log(itemList);
    hash[hashKey].item = [...hash[hashKey].item, ...itemList];
  }
  return Object.values(hash);
Loading