import * as React from 'react'; import { Mutation } from 'cbioportal-ts-api-client'; import styles from './validationStatus.module.scss'; import { DefaultTooltip } from 'cbioportal-frontend-commons'; /** * @author Selcuk Onur Sumer */ export default class ValidationStatusColumnFormatter { /** * Mapping between the validation status (data) values and view values. */ public static get VALIDATION_STATUS_FORMAT(): { [status: string]: { text: string; className: string; tooltip: string }; } { const UNKNOWN = { text: 'U', className: 'unknown', tooltip: 'Unknown' }; const VALID = { text: 'V', className: 'valid', tooltip: 'Valid' }; const WILDTYPE = { text: 'W', className: 'wildtype', tooltip: 'Wildtype', }; return { valid: VALID, validated: VALID, wildtype: WILDTYPE, unknown: UNKNOWN, not_tested: UNKNOWN, 'not tested': UNKNOWN, none: UNKNOWN, na: UNKNOWN, 'n/a': UNKNOWN, }; } public static getData(data: Mutation[]) { let value: string | null = null; if (data.length > 0) { value = data[0].validationStatus; } return value; } public static sortValue(data: Mutation[]) { return ValidationStatusColumnFormatter.getData(data); } public static download(data: Mutation[]) { return ValidationStatusColumnFormatter.getData(data) || ''; } public static renderFunction(data: Mutation[]) { const value = ValidationStatusColumnFormatter.getData(data); let content: JSX.Element; let needTooltip = false; if (value) { const format = ValidationStatusColumnFormatter.VALIDATION_STATUS_FORMAT[ value.toLowerCase() ]; if (format) { content = ( {format.text} ); needTooltip = true; } else { content = {value}; } } else { content = ; } if (needTooltip) { content = ( {value}} placement="right" > {content} ); } return content; } }