import { useState, useEffect, useMemo, memo } from 'react'; // Router import { useNavigate } from 'react-router-dom'; // Cloudscape import { Button, ColumnLayout, Form, Header, Input, Link, Popover, Select, SpaceBetween, Spinner, } from '@cloudscape-design/components'; // Dates import dayjs from 'dayjs'; // App import SelectDatastore from '../../common/SelectDatastore'; import KeyValuePair from '../../common/KeyValuePair'; import { getImageSet } from '../../utils/AwsHealthImagingApi'; // Metadata header description. Not exported const HeaderDescription = memo(function HeaderDescription() { const navigate = useNavigate(); return ( <> Select a data store and specify and ImageSet ID or use the{' '} navigate('/search')}>search feature.
The latest metadata version can be edited. ); }); // Metadata header const MetadataViewerHeader = memo(function MetadataViewerHeader({ isSomethingLoading, handleRetrieveMetadata, editEnabled, resetEnabled, handleReset, navigate, }) { return (
} actions={ } > Metadata
); }); // Create a // When metadata is loaded (versionsLoaded = true) - popover with imageset information function ImageSetId({ selectedDatastore, isSomethingLoading, imageSetId, setImageSetId, versionsLoaded }) { const [imageSetDetails, setImageSetDetails] = useState(); useEffect(() => { async function getImageSetDetails() { if (!selectedDatastore?.value || !imageSetId) return; const imageSetDetails = await getImageSet({ datastoreId: selectedDatastore.value, imageSetId: imageSetId, }); setImageSetDetails( {imageSetDetails.data.imageSetId} {imageSetDetails.data.datastoreId} {imageSetDetails.data.imageSetState} {imageSetDetails.data.imageSetWorkflowStatus || '---'} {dayjs.unix(imageSetDetails.data.createdAt).format('YYYY-MM-DD H:mm')} {dayjs.unix(imageSetDetails.data.updatedAt).format('YYYY-MM-DD H:mm')} {imageSetDetails.data.message && ( {imageSetDetails.data.message} )} ); } if (selectedDatastore == null || !imageSetId) return; getImageSetDetails(); }, [selectedDatastore, imageSetId]); if (versionsLoaded) { return (
{imageSetId}
); } else { return ( setImageSetId(detail.value)} /> ); } } // Metadata search row const MetadataViewerSearch = memo(function MetadataViewerSearch({ selectedDatastore, setSelectedDatastore, imageSetId, setImageSetId, imageSetVersions, selectedVersion, handleChangeVersion, errorText, isSomethingLoading, }) { const versionOptions = useMemo( () => imageSetVersions.map((v) => buildVersionOption(v)).sort((a, b) => Number(b.value) - Number(a.value)), [imageSetVersions] ); return (
e.preventDefault()}> 0} />