Skip to content
Snippets Groups Projects
DatabaseTab.jsx 2.25 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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() {
    
        try {
          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
          )
        } catch (error) {
          AppController.getInstance().errorChange(error)
    
        }
      }
    
      render() {
        logger.log(logger.DEBUG, 'DatabaseTab.render')
        return this.props.tab.label || ''
      }
    }
    
    export default DatabaseTab