import * as React from 'react'; import { DefaultTooltip } from 'cbioportal-frontend-commons'; import SampleManager from 'pages/patientView/SampleManager'; import { ClonalColor, getClonalCircleColor, getOptionalPattern, stripePattern, } from 'shared/components/mutationTable/column/clonal/ClonalElement'; import { ClonalValue } from 'shared/components/mutationTable/column/clonal/ClonalColumnFormatter'; export const maxBarHeight = 12; const barWidth = 5; const barSpacing = 3; export const indexToBarLeft = (n: number) => n * (barWidth + barSpacing); function getSVGWidth(numberOfSamples: number) { return numberOfSamples * barWidth + (numberOfSamples - 1) * barSpacing; } export const CancerCellFractionElementTooltip: React.FunctionComponent<{ sampleIds: string[]; sampleToCCFValue: { [key: string]: string }; sampleManager?: SampleManager | null; }> = props => { const sampleOrder = props.sampleManager ? props.sampleManager.getSampleIdsInOrder() : []; const orderedSamplesWithValues = sampleOrder.filter( (sampleId, index, array) => { return props.sampleToCCFValue[sampleId]; } ); const tooltipLines = orderedSamplesWithValues.map( (sampleId, index, array) => ( {props.sampleManager ? props.sampleManager.getComponentForSample(sampleId, 1, '') : null}{' '} {props.sampleToCCFValue[sampleId]}
) ); return {tooltipLines}; }; const CancerCellFractionBar: React.FunctionComponent<{ ccfValue: string; clonalValue: string; color: any; barX: number; }> = props => { const barHeight = (isNaN(+props.ccfValue) ? 0 : +props.ccfValue) * maxBarHeight; const barY = maxBarHeight - barHeight; return ( {getOptionalPattern(props.clonalValue)} ); }; const CancerCellFractionBarGraph: React.FunctionComponent<{ sampleIds: string[]; sampleToClonalValue: { [key: string]: string }; sampleToCCFValue: { [key: string]: string }; sampleManager?: SampleManager | null; }> = props => { const sampleOrder = props.sampleManager ? props.sampleManager.getSampleIdsInOrder() : []; const barX = sampleOrder.reduce((map, sampleId: string, i: number) => { map[sampleId] = indexToBarLeft(i); return map; }, {} as { [s: string]: number }); return ( {sampleOrder.map((sample: string) => { return ( ); })} ); }; const CancerCellFractionElement: React.FunctionComponent<{ sampleIds: string[]; sampleToClonalValue: { [key: string]: string }; sampleToCCFValue: { [key: string]: string }; sampleManager?: SampleManager | null; }> = props => { if (props.sampleManager) { return ( } > {} ); } else { return {props.sampleToCCFValue[props.sampleIds[0]]}; } }; export default CancerCellFractionElement;