in frontend/src/old-pages/Images/CustomImages/CustomImageDetails.tsx [65:198]
function CustomImageProperties() {
const {t} = useTranslation()
const selected = useState([...customImagesPath, 'selected'])
const image = useState(['customImages', 'index', selected])
const loadingText = t('global.loading')
const copyImageConfigUrl = useCallback(() => {
navigator.clipboard.writeText(image.imageConfiguration?.url)
}, [image.imageConfiguration?.url])
const copyAmiId = useCallback(() => {
navigator.clipboard.writeText(image.ec2AmiInfo?.amiId)
}, [image.ec2AmiInfo?.amiId])
return (
<Container
header={
<Header variant="h3">
{t('customImages.imageDetails.properties.header.title')}
</Header>
}
>
<ColumnLayout columns={3} variant="text-grid">
<SpaceBetween size="l">
<ValueWithLabel
label={t('customImages.imageDetails.properties.creationTime')}
>
{image.creationTime ? <DateView date={image.creationTime} /> : '-'}
</ValueWithLabel>
<ValueWithLabel
label={t('customImages.imageDetails.properties.architecture')}
>
{image.ec2AmiInfo && image.ec2AmiInfo.architecture}
{!image.ec2AmiInfo && loadingText}
</ValueWithLabel>
<ValueWithLabel
label={t('customImages.imageDetails.properties.state')}
>
{image.ec2AmiInfo && (
<AMIStatusIndicator state={image.ec2AmiInfo.state} />
)}
{!image.ec2AmiInfo && loadingText}
</ValueWithLabel>
</SpaceBetween>
<SpaceBetween size="l">
<ValueWithLabel
label={t(
'customImages.imageDetails.properties.configurationUrl.label',
)}
>
<Popover
size="large"
position="top"
triggerType="custom"
dismissButton={false}
content={
<StatusIndicator type="success">
{t(
'customImages.imageDetails.properties.configurationUrl.tooltiptext',
)}
</StatusIndicator>
}
>
<Button
iconName="copy"
onClick={copyImageConfigUrl}
variant="inline-icon"
/>
</Popover>
<Link href={image.imageConfiguration?.url}>
{truncate(image.imageConfiguration?.url, {
length: 100,
})}
</Link>
</ValueWithLabel>
<ValueWithLabel
label={t('customImages.imageDetails.properties.buildStatus')}
>
<CustomImageStatusIndicator buildStatus={image.imageBuildStatus} />
</ValueWithLabel>
<ValueWithLabel
label={t('customImages.imageDetails.properties.amiId.label')}
>
<SpaceBetween size="s" direction="horizontal">
{image.ec2AmiInfo && (
<span>
<Popover
size="medium"
position="top"
triggerType="custom"
dismissButton={false}
content={
<StatusIndicator type="success">
{t(
'customImages.imageDetails.properties.amiId.tooltiptext',
)}
</StatusIndicator>
}
>
<Button
iconName="copy"
onClick={copyAmiId}
variant="inline-icon"
/>
</Popover>
{image.ec2AmiInfo.amiId}
</span>
)}
{!image.ec2AmiInfo && loadingText}
</SpaceBetween>
</ValueWithLabel>
</SpaceBetween>
<SpaceBetween size="l">
<ValueWithLabel
label={t('customImages.imageDetails.properties.imageId')}
>
{image.imageId}
</ValueWithLabel>
<ValueWithLabel
label={t('customImages.imageDetails.properties.region')}
>
{image.region}
</ValueWithLabel>
<ValueWithLabel
label={t('customImages.imageDetails.properties.version')}
>
{image.version}
</ValueWithLabel>
</SpaceBetween>
</ColumnLayout>
</Container>
)
}