+
+interface CollectionDetailsProps {
+ item: CollectionResource;
+ classes?: any;
+ twoCol?: boolean;
+ showVersionBrowser?: () => void;
+}
+
+export const CollectionDetailsAttributes = (props: CollectionDetailsProps) => {
+ const item = props.item;
+ const classes = props.classes || { label: '', value: '', button: '', tag: '' };
+ const isOldVersion = item && item.currentVersionUuid !== item.uuid;
+ const mdSize = props.twoCol ? 6 : 12;
+ const showVersionBrowser = props.showVersionBrowser;
+ const responsiblePersonRef = React.useRef(null);
+ return <Grid container>
+ <Grid item xs={12} md={mdSize}>
+ <DetailsAttribute classLabel={classes.label} classValue={classes.value}
+ label={isOldVersion ? "This version's UUID" : "Collection UUID"}
+ linkToUuid={item.uuid} />
+ </Grid>
+ <Grid item xs={12} md={mdSize}>
+ <DetailsAttribute classLabel={classes.label} classValue={classes.value}
+ label={isOldVersion ? "This version's PDH" : "Portable data hash"}
+ linkToUuid={item.portableDataHash} />
+ </Grid>
+ <Grid item xs={12} md={mdSize}>
+ <DetailsAttribute classLabel={classes.label} classValue={classes.value}
+ label='Owner' linkToUuid={item.ownerUuid}
+ uuidEnhancer={(uuid: string) => <ResourceOwnerWithName uuid={uuid} />} />
+ </Grid>
+ <div data-cy="responsible-person-wrapper" ref={responsiblePersonRef}>
+ <Grid item xs={12} md={12}>
+ <DetailsAttribute classLabel={classes.label} classValue={classes.value}
+ label='Responsible person' linkToUuid={item.ownerUuid}
+ uuidEnhancer={(uuid: string) => <ResponsiblePerson uuid={item.uuid} parentRef={responsiblePersonRef.current} />} />
+ </Grid>
+ </div>
+ <Grid item xs={12} md={mdSize}>
+ <DetailsAttribute classLabel={classes.label} classValue={classes.value}
+ label='Head version'
+ value={isOldVersion ? undefined : 'this one'}
+ linkToUuid={isOldVersion ? item.currentVersionUuid : undefined} />
+ </Grid>
+ <Grid item xs={12} md={mdSize}>
+ <DetailsAttribute
+ classLabel={classes.label} classValue={classes.value}
+ label='Version number'
+ value={showVersionBrowser !== undefined
+ ? <Tooltip title="Open version browser"><ButtonLink underline='none' className={classes.button} onClick={() => showVersionBrowser()}>
+ {<span data-cy='collection-version-number'>{item.version}</span>}
+ </ButtonLink></Tooltip>
+ : item.version
+ }
+ />
+ </Grid>
+ <Grid item xs={12} md={mdSize}>
+ <DetailsAttribute label='Created at' value={formatDate(item.createdAt)} />
+ </Grid>
+ <Grid item xs={12} md={mdSize}>
+ <DetailsAttribute label='Last modified' value={formatDate(item.modifiedAt)} />
+ </Grid>
+ <Grid item xs={12} md={mdSize}>
+ <DetailsAttribute classLabel={classes.label} classValue={classes.value}
+ label='Number of files' value={item.fileCount} />
+ </Grid>
+ <Grid item xs={12} md={mdSize}>
+ <DetailsAttribute classLabel={classes.label} classValue={classes.value}
+ label='Content size' value={formatFileSize(item.fileSizeTotal)} />
+ </Grid>
+ <Grid item xs={12} md={mdSize}>
+ <DetailsAttribute classLabel={classes.label} classValue={classes.value}
+ label='Storage classes' value={item.storageClassesDesired.join(', ')} />
+ </Grid>
+ <Grid item xs={12} md={mdSize}>
+ <DetailsAttribute classLabel={classes.label} classValue={classes.value}
+ label='Properties' />
+ { Object.keys(item.properties).length > 0
+ ? Object.keys(item.properties).map(k =>
+ Array.isArray(item.properties[k])
+ ? item.properties[k].map((v: string) =>
+ getPropertyChip(k, v, undefined, classes.tag))
+ : getPropertyChip(k, item.properties[k], undefined, classes.tag))
+ : <div className={classes.value}>No properties</div> }
+ </Grid>
+ </Grid>;
+};