import * as React from 'react'; import { observer } from 'mobx-react'; import { computed, makeObservable } from 'mobx'; import MultipleCategoryBarPlot, { IMultipleCategoryBarPlotProps, } from 'pages/groupComparison/MultipleCategoryBarPlot'; import MultipleCategoryHeatmap from 'shared/components/plots/MultipleCategoryHeatmap'; import autobind from 'autobind-decorator'; import { OncoprintJS } from 'oncoprintjs'; export type IMultipleCategoryPlotProps = IMultipleCategoryBarPlotProps & { type: CategoryPlotType; groupToColor?: { [group: string]: string }; broadcastOncoprintJsRef: (oncoprint: OncoprintJS) => void; }; export enum CategoryPlotType { Bar = 'Bar', StackedBar = 'StackedBar', PercentageStackedBar = 'PercentageStackedBar', Heatmap = 'Heatmap', } @observer export default class CategoryPlot extends React.Component< IMultipleCategoryPlotProps, {} > { constructor(props: any) { super(props); makeObservable(this); } private oncoprintJs: OncoprintJS | null = null; @autobind private oncoprintJsRef(oncoprint: OncoprintJS) { this.oncoprintJs = oncoprint; this.props.broadcastOncoprintJsRef(oncoprint); } render() { const isHeatmap = this.props.type === CategoryPlotType.Heatmap; return <>{isHeatmap ? this.heatmap : this.barchart}; } @computed get heatmap() { return ( ); } @computed get barchart() { return ( ); } }