import * as React from 'react'; import { DefaultTooltip, TableCellStatus, TableCellStatusIndicator, } from 'cbioportal-frontend-commons'; import { Mutation } from 'cbioportal-ts-api-client'; export function getFormattedFrequencyValue(frequency: number) { return frequency < 0.01 ? frequency.toFixed(4) : frequency.toFixed(2); } export default class TumorAlleleFreqColumnFormatter { public static mainContent( frequency: number, altReads: number, refReads: number ) { const overlay = ( {altReads} variant reads out of{' '} {altReads + refReads} total ); return ( } destroyTooltipOnHide={true} > {getFormattedFrequencyValue(frequency)} ); } public static renderFunction(mutations: Mutation[]) { const frequency = TumorAlleleFreqColumnFormatter.getSortValue( mutations ); if (frequency) { const altReads = mutations[0].tumorAltCount; const refReads = mutations[0].tumorRefCount; return TumorAlleleFreqColumnFormatter.mainContent( frequency, altReads, refReads ); } else { return ; } } public static getTextValue(mutations: Mutation[]): string { const frequency = TumorAlleleFreqColumnFormatter.getSortValue( mutations ); if (frequency) { return getFormattedFrequencyValue(frequency); } return ''; } public static getSortValue(mutations: Mutation[]) { const mutation = mutations[0]; if (!mutation) { return null; } const altReads = mutation.tumorAltCount; const refReads = mutation.tumorRefCount; if (altReads < 0 || refReads < 0) { return null; } return altReads / (altReads + refReads); } public static isVisible(allMutations?: Mutation[][]): boolean { if (allMutations) { for (const rowMutations of allMutations) { const frequency = this.getSortValue(rowMutations); if (frequency) { return true; } } } return false; } }