diff --git a/openbis_ng_ui/src/js/components/database/Database.jsx b/openbis_ng_ui/src/js/components/database/Database.jsx index 61dc4424e10073ffca65c410c68024efbc900a49..84daa8946b7f4cb5f09bbe68730fa037688a8eca 100644 --- a/openbis_ng_ui/src/js/components/database/Database.jsx +++ b/openbis_ng_ui/src/js/components/database/Database.jsx @@ -2,6 +2,7 @@ import React from 'react' import { withStyles } from '@material-ui/core/styles' import Content from '@src/js/components/common/content/Content.jsx' import DatabaseBrowser from '@src/js/components/database/browser/DatabaseBrowser.jsx' +import DatabaseTab from '@src/js/components/database/DatabaseTab.jsx' import pages from '@src/js/common/consts/pages.js' import logger from '@src/js/common/logger.js' @@ -35,8 +36,7 @@ class Database extends React.PureComponent { } renderTab(tab) { - const { object } = tab - return object.type + ': ' + object.id + return <DatabaseTab tab={tab} /> } } diff --git a/openbis_ng_ui/src/js/components/database/DatabaseTab.jsx b/openbis_ng_ui/src/js/components/database/DatabaseTab.jsx new file mode 100644 index 0000000000000000000000000000000000000000..d9a6f2140fd3975f99536cabb404f9b0a8f3af61 --- /dev/null +++ b/openbis_ng_ui/src/js/components/database/DatabaseTab.jsx @@ -0,0 +1,77 @@ +import React from 'react' +import AppController from '@src/js/components/AppController.js' +import openbis from '@src/js/services/openbis.js' +import objectType from '@src/js/common/consts/objectType.js' +import pages from '@src/js/common/consts/pages.js' +import logger from '@src/js/common/logger.js' + +class DatabaseTab extends React.PureComponent { + constructor(props) { + super(props) + this.state = { + text: '' + } + } + + async componentDidMount() { + const { tab } = this.props + const { object } = tab + + let typeText = null + let idText = null + + if (object.type === objectType.SPACE) { + typeText = 'Space' + idText = object.id + } else if (object.type === objectType.PROJECT) { + typeText = 'Project' + const projects = await openbis.getProjects( + [new openbis.ProjectPermId(object.id)], + new openbis.ProjectFetchOptions() + ) + + if (projects[object.id]) { + idText = projects[object.id].getCode() + } + } else if (object.type === objectType.COLLECTION) { + typeText = 'Collection' + const experiments = await openbis.getExperiments( + [new openbis.ExperimentPermId(object.id)], + new openbis.ExperimentFetchOptions() + ) + if (experiments[object.id]) { + idText = experiments[object.id].getCode() + } + } else if (object.type === objectType.OBJECT) { + typeText = 'Object' + const samples = await openbis.getSamples( + [new openbis.SamplePermId(object.id)], + new openbis.SampleFetchOptions() + ) + if (samples[object.id]) { + idText = samples[object.id].getCode() + } + } else if (object.type === objectType.DATA_SET) { + typeText = 'Data Set' + idText = object.id + } + + const tabWithLabel = { + ...tab, + label: (typeText || object.type) + ': ' + (idText || object.id) + } + + AppController.getInstance().replaceOpenTab( + pages.DATABASE, + tabWithLabel.id, + tabWithLabel + ) + } + + render() { + logger.log(logger.DEBUG, 'DatabaseTab.render') + return this.props.tab.label || '' + } +} + +export default DatabaseTab