X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/672c78666bdf0009b51a2be1d84413339aed1acb..edcdf0ae72c56bf4aa05f93ed2877faa3a5e75c4:/services/workbench2/src/views-components/details-panel/details-panel.tsx diff --git a/services/workbench2/src/views-components/details-panel/details-panel.tsx b/services/workbench2/src/views-components/details-panel/details-panel.tsx index 8a05f11969..eb6e65d645 100644 --- a/services/workbench2/src/views-components/details-panel/details-panel.tsx +++ b/services/workbench2/src/views-components/details-panel/details-panel.tsx @@ -15,6 +15,7 @@ import { EmptyResource } from 'models/empty'; import { Dispatch } from "redux"; import { ResourceKind } from "models/resource"; import { ProjectDetails } from "./project-details"; +import { RootProjectDetails } from './root-project-details'; import { CollectionDetails } from "./collection-details"; import { ProcessDetails } from "./process-details"; import { EmptyDetails } from "./empty-details"; @@ -65,7 +66,7 @@ const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ const EMPTY_RESOURCE: EmptyResource = { kind: undefined, name: 'Projects' }; -const getItem = (res: DetailsResource): DetailsData => { +const getItem = (res: DetailsResource, pathName: string): DetailsData => { if ('kind' in res) { switch (res.kind) { case ResourceKind.PROJECT: @@ -76,15 +77,20 @@ const getItem = (res: DetailsResource): DetailsData => { return new ProcessDetails(res); case ResourceKind.WORKFLOW: return new WorkflowDetails(res); + case ResourceKind.USER: + if(pathName.includes('projects')) { + return new RootProjectDetails(res); + } + return new EmptyDetails(EMPTY_RESOURCE); default: - return new EmptyDetails(res); + return new EmptyDetails(res as EmptyResource); } } else { return new FileDetails(res); } }; -const mapStateToProps = ({ auth, detailsPanel, resources, collectionPanelFiles, selectedResourceUuid, properties }: RootState) => { +const mapStateToProps = ({ auth, detailsPanel, resources, collectionPanelFiles, selectedResourceUuid, properties, router }: RootState) => { const resource = getResource(selectedResourceUuid ?? properties.currentRouteUuid)(resources) as DetailsResource | undefined; const file = resource ? undefined @@ -101,6 +107,7 @@ const mapStateToProps = ({ auth, detailsPanel, resources, collectionPanelFiles, isOpened: detailsPanel.isOpened, tabNr: detailsPanel.tabNr, res: resource || (file && file.value) || EMPTY_RESOURCE, + pathname: router.location ? router.location.pathname : "", }; }; @@ -121,6 +128,7 @@ export interface DetailsPanelDataProps { tabNr: number; res: DetailsResource; isFrozen: boolean; + pathname: string; } type DetailsPanelProps = DetailsPanelDataProps & WithStyles; @@ -160,8 +168,7 @@ export const DetailsPanel = withStyles(styles)( } renderContent() { - const { classes, onCloseDrawer, res, tabNr, authConfig } = this.props; - + const { classes, onCloseDrawer, res, tabNr, authConfig, pathname } = this.props; let shouldShowInlinePreview = false; if (!('kind' in res)) { shouldShowInlinePreview = isInlineFileUrlSafe( @@ -171,7 +178,7 @@ export const DetailsPanel = withStyles(styles)( ) || authConfig.clusterConfig.Collections.TrustAllContent; } - const item = getItem(res); + const item = getItem(res, pathname); return