import * as React from 'react'; import { observer } from 'mobx-react'; import { computed, action, makeObservable } from 'mobx'; import autobind from 'autobind-decorator'; import FeatureTitle from 'shared/components/featureTitle/FeatureTitle'; import { IMutationalSignature } from 'shared/model/MutationalSignature'; import ClinicalInformationMutationalSignatureTable from '../clinicalInformation/ClinicalInformationMutationalSignatureTable'; import Select from 'react-select'; import { MolecularProfile } from 'cbioportal-ts-api-client'; import { getVersionOption, getVersionOptions, } from 'shared/lib/GenericAssayUtils/MutationalSignaturesUtils'; import _ from 'lodash'; export interface IMutationalSignaturesContainerProps { data: { [version: string]: IMutationalSignature[] }; profiles: MolecularProfile[]; onVersionChange: (version: string) => void; version: string; } @observer export default class MutationalSignaturesContainer extends React.Component< IMutationalSignaturesContainerProps, {} > { constructor(props: IMutationalSignaturesContainerProps) { super(props); makeObservable(this); } @computed get availableVersions() { // mutational signatures version is stored in the profile id // split the id by "_", the last part is the version info // we know split will always have results // use uniq function to get all unique versions return _.chain(this.props.profiles) .map(profile => _.last(profile.molecularProfileId.split('_'))!) .uniq() .value(); } @computed get selectedVersion(): string { // all versions is defined in the MutationalSignaturesVersion return ( _.find( this.availableVersions, version => version === this.props.version ) || this.availableVersions[0] ); } @action.bound private onVersionChange(option: { label: string; value: string }): void { this.props.onVersionChange(option.value); } public render() { return (
Mutational Signatures Version: