import * as React from 'react'; import _ from 'lodash'; import { ICivicVariantSummary } from 'cbioportal-utils'; import civicTextLogo from '../../images/civic_text_logo.png'; import './civicCard.scss'; export interface ICivicCardProps { title: string; geneName: string; geneDescription: string; geneUrl: string; variants: { [name: string]: ICivicVariantSummary }; } export default class CivicCard extends React.Component { /** * Generate variants * @param variantMap * @returns {JSX.Element[]} */ public generateVariants(variantMap: { [name: string]: ICivicVariantSummary; }) { const list: JSX.Element[] = []; if (_.isEmpty(variantMap)) { list.push(this.variantItem('_naVariant_')); } else { for (let name in variantMap) { let variant = variantMap[name]; let entryTypes: string = ''; for (let evidenceType in variant.evidenceCounts) { entryTypes += evidenceType.toLowerCase() + ': ' + variant.evidenceCounts[evidenceType] + ', '; } entryTypes = entryTypes.slice(0, -2) + '.'; list.push( this.variantItem( name, variant.url, variant.name, entryTypes, variant.description ) ); } } return list; } /** * Get variant item * @param url * @param name * @param entryTypes * @param description * @returns {any} */ public variantItem( key: string, url?: string, name?: string, entryTypes?: string, description?: string ) { let result; if (url || name || entryTypes || description) { result = (
{name} {' '} Entries: {entryTypes}
{description}
); } else { result = (
Information about the oncogenic activity of this alteration is not yet available in CIViC.
); } return result; } /** * Render civic card component * @returns {any} */ public render() { return (
{this.props.title}

{this.props.geneName} {' '} - {this.props.geneDescription}

    {this.generateVariants(this.props.variants)}
Disclaimer: This resource is intended for purely research purposes. It should not be used for emergencies or medical or professional advice.
CIViC
); } }