import * as React from 'react'; import { GenePanel } from 'cbioportal-ts-api-client'; import { observer } from 'mobx-react'; import MobxPromiseCache from 'shared/lib/MobxPromiseCache'; import GenePanelModal from 'shared/components/GenePanelModal/GenePanelModal'; interface IStudyViewGeneModalProps { genePanelCache: MobxPromiseCache<{ genePanelId: string }, GenePanel>; panelName: string; show: boolean; onHide: () => void; } interface IGenePanelTooltipProps { genePanelIds: string[]; toggleModal: (panelId: string) => void; } export const GenePanelList: React.FunctionComponent = ({ genePanelIds, toggleModal, }) => { if (genePanelIds.length > 0) { return ( Gene panels:{' '} {genePanelIds.map((genePanelId, i) => [ i > 0 && ', ', { toggleModal(genePanelId); }} > {genePanelId} , ])} ); } else { return ; } }; @observer export class StudyViewGenePanelModal extends React.Component< IStudyViewGeneModalProps, {} > { getGenesList = (result: GenePanel | undefined) => { if (result && result.genes) { return result.genes.map(gene => (

{gene.hugoGeneSymbol}

)); } return null; }; render() { const mobxPromise = this.props.genePanelCache.get({ genePanelId: this.props.panelName, }); return ( {mobxPromise.isComplete && this.getGenesList(mobxPromise.result)} ); } }