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 (
);
}
}