Arvados-DCO-1.1-Signed-off-by: Daniel Kutyła <daniel.kutyla@contractors.roche.com>
};
Collections: {
ForwardSlashNameSubstitution: string;
};
Collections: {
ForwardSlashNameSubstitution: string;
+ ManagedProperties?: {
+ responsible_person_uuid?: {
+ Function: string,
+ }
+ }
export const ResponsiblePerson =
compose(
connect(
export const ResponsiblePerson =
compose(
connect(
- (state: RootState, props: { uuid: string }) => {
- let responsiblePersonName = '';
+ (state: RootState, props: { uuid: string, parentRef: HTMLElement | null }) => {
+ let responsiblePersonName = null;
+ let responsiblePersonUUID = null;
+ let responsiblePersonProperty = null;
+
+ if (state.auth.config.clusterConfig.Collections.ManagedProperties) {
+ if (state.auth.config.clusterConfig.Collections.ManagedProperties.responsible_person_uuid) {
+ responsiblePersonProperty = state.auth.config.clusterConfig.Collections.ManagedProperties.responsible_person_uuid.Function;
+ }
+ }
+
let resource: Resource | undefined = getResource<GroupContentsResource & UserResource>(props.uuid)(state.resources);
let resource: Resource | undefined = getResource<GroupContentsResource & UserResource>(props.uuid)(state.resources);
- while (resource && resource.kind !== ResourceKind.USER) {
- resource = getResource<GroupContentsResource & UserResource>(resource.ownerUuid)(state.resources);
+ while (resource && resource.kind !== ResourceKind.USER && resource.kind === ResourceKind.COLLECTION && responsiblePersonProperty) {
+ responsiblePersonUUID = (resource as CollectionResource).properties[responsiblePersonProperty];
+ resource = getResource<GroupContentsResource & UserResource>(responsiblePersonUUID)(state.resources);
}
if (resource && resource.kind === ResourceKind.USER) {
responsiblePersonName = getUserFullname(resource as UserResource) || (resource as GroupContentsResource).name;
}
}
if (resource && resource.kind === ResourceKind.USER) {
responsiblePersonName = getUserFullname(resource as UserResource) || (resource as GroupContentsResource).name;
}
- return { uuid: props.uuid, responsiblePersonName };
+ return { uuid: responsiblePersonUUID, responsiblePersonName, parentRef: props.parentRef };
}),
withStyles({}, { withTheme: true }))
}),
withStyles({}, { withTheme: true }))
- ((props: { uuid: string, responsiblePersonName: string, theme: ArvadosTheme }) => {
- const { uuid, responsiblePersonName, theme } = props;
+ ((props: { uuid: string | null, responsiblePersonName: string, parentRef: HTMLElement | null, theme: ArvadosTheme }) => {
+ const { uuid, responsiblePersonName, parentRef, theme } = props;
+
+ if (!uuid && parentRef) {
+ parentRef.style.display = 'none';
+ return null;
+ } else if (parentRef) {
+ parentRef.style.display = 'block';
+ }
if (responsiblePersonName === '') {
return <Typography style={{ color: theme.palette.primary.main }} inline noWrap>
if (responsiblePersonName === '') {
return <Typography style={{ color: theme.palette.primary.main }} inline noWrap>
const isOldVersion = item && item.currentVersionUuid !== item.uuid;
const mdSize = props.twoCol ? 6 : 12;
const showVersionBrowser = props.showVersionBrowser;
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}
return <Grid container>
<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>
label='Owner' linkToUuid={item.ownerUuid}
uuidEnhancer={(uuid: string) => <ResourceOwnerWithName uuid={uuid} />} />
</Grid>
- <Grid item xs={12} md={mdSize}>
- <DetailsAttribute classLabel={classes.label} classValue={classes.value}
- label='Responsible person' linkToUuid={item.ownerUuid}
- uuidEnhancer={(uuid: string) => <ResponsiblePerson uuid={item.ownerUuid} />} />
- </Grid>
+ <div ref={responsiblePersonRef}>
+ <Grid item xs={12} md={mdSize}>
+ <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'
<Grid item xs={12} md={mdSize}>
<DetailsAttribute classLabel={classes.label} classValue={classes.value}
label='Head version'