import { observer } from 'mobx-react'; import * as React from 'react'; import { getNCBIlink } from 'cbioportal-frontend-commons'; import { Mutation, RemoteData } from 'cbioportal-utils'; import { EnsemblTranscript, VariantAnnotation, } from 'genome-nexus-ts-api-client'; import { getUrl } from '../../util/DataFetcherUtils'; import TranscriptDropdown from './TranscriptDropdown'; import styles from './geneSummary.module.scss'; export type GeneSummaryProps = { hugoGeneSymbol: string; uniprotId?: string; transcriptSummaryUrlTemplate?: string; showDropDown: boolean; showOnlyAnnotatedTranscriptsInDropdown: boolean; compactStyle?: boolean; // compactStyle = false: "RefSeq: NM_000546 Ensembl: ENST00000269305...", compactStyle = true: "NM_000546 | ENST00000269305..." transcriptsByTranscriptId: { [transcriptId: string]: EnsemblTranscript }; activeTranscript?: string; canonicalTranscript: RemoteData; transcriptsWithProteinLength: RemoteData; transcriptsWithAnnotations: RemoteData; indexedVariantAnnotations: RemoteData< { [genomicLocation: string]: VariantAnnotation } | undefined >; mutationsByTranscriptId?: { [transcriptId: string]: Mutation[] }; onTranscriptChange: (transcriptId: string) => void; loadingIndicator?: JSX.Element; }; const GeneSummaryInfo: React.FunctionComponent = ({ uniprotId, showDropDown, canonicalTranscript, compactStyle, activeTranscript, transcriptsByTranscriptId, transcriptSummaryUrlTemplate, }) => { const canonicalTranscriptId = canonicalTranscript.result && canonicalTranscript.result.transcriptId; const transcript = activeTranscript && activeTranscript === canonicalTranscriptId ? (canonicalTranscript.result as EnsemblTranscript) : transcriptsByTranscriptId[activeTranscript!]; const refseqMrnaId = transcript && transcript.refseqMrnaId; const ccdsId = transcript && transcript.ccdsId; const refSeq = refseqMrnaId ? ( {refseqMrnaId} ) : ( '-' ); const ensembl = showDropDown ? activeTranscript && ( {activeTranscript} ) : canonicalTranscriptId && ( // down't show drop down, only the canonical transcript {canonicalTranscriptId} ); const ccds = ccdsId ? ( {ccdsId} ) : ( '-' ); const uniprot = uniprotId ? ( {uniprotId} ) : ( '-' ); const compactGeneSummaryInfo = (
{refSeq} {` | `} {ensembl}
{ccds} {` | `} {uniprot}
); const geneSummaryInfo = (
{'RefSeq: '} {refSeq}
Ensembl: {ensembl}
{'CCDS: '} {ccds}
{'UniProt: '} {uniprot}
); return compactStyle ? compactGeneSummaryInfo : geneSummaryInfo; }; @observer export default class GeneSummary extends React.Component { public static defaultProps: Partial = { transcriptSummaryUrlTemplate: 'http://grch37.ensembl.org/homo_sapiens/Transcript/Summary?t=<%= transcriptId %>', compactStyle: false, }; public render() { const { hugoGeneSymbol, showDropDown, showOnlyAnnotatedTranscriptsInDropdown, canonicalTranscript, activeTranscript, transcriptsByTranscriptId, transcriptsWithAnnotations, transcriptsWithProteinLength, indexedVariantAnnotations, mutationsByTranscriptId, onTranscriptChange, loadingIndicator, } = this.props; return (
{!this.props.compactStyle && (

{hugoGeneSymbol}

)}
); } }