import * as React from 'react'; import { DefaultTooltip, placeArrowBottomLeft, } from 'cbioportal-frontend-commons'; import { IMutationalSignature } from '../../../shared/model/MutationalSignature'; import '../../../shared/components/simpleTable/styles.scss'; import { SampleProgressBar, getSignificantMutationalSignatures, getColorByMutationalSignatureCategory, } from '../../../shared/lib/GenericAssayUtils/MutationalSignaturesUtils'; import _ from 'lodash'; import { ProgressBar } from 'react-bootstrap'; interface ISignificantMutationalSignaturesProps { data: { [version: string]: IMutationalSignature[] }; sampleId: string; version: string; } export default class SignificantMutationalSignatures extends React.Component< ISignificantMutationalSignaturesProps, {} > { public render() { const significantMutationalSignaturesForSample: IMutationalSignature[] = getSignificantMutationalSignatures( this.props.data[this.props.version], this.props.sampleId ); if (_.isEmpty(significantMutationalSignaturesForSample)) { return null; } else { return ( {this.makeProgressBar( significantMutationalSignaturesForSample )} ); } } private makeTooltipContent( significantMutationalSignaturesForSample: IMutationalSignature[] ) { return (
{_.map( significantMutationalSignaturesForSample, significantSignature => (
{significantSignature.meta.name} : {significantSignature.meta.description}
) )}

{significantMutationalSignaturesForSample.map( significantSignature => ( ) )}
Significant Mutational Signatures Exposure
{significantSignature.meta.name}
); } private makeProgressBar( significantMutationalSignaturesForSample: IMutationalSignature[] ) { const sumByCategory: { [color: string]: number } = _.reduce( significantMutationalSignaturesForSample, (acc, significantSignature) => { const color = getColorByMutationalSignatureCategory( significantSignature.meta.category ); if (color in acc) { acc[color] += significantSignature.value; } else { acc[color] = significantSignature.value; } return acc; }, {} as { [color: string]: number } ); const stackedProgressBars = _.map(sumByCategory, (sum, color) => { return ( ); }); return ( {stackedProgressBars} ); } }