import * as React from 'react'; import { observer } from 'mobx-react'; import { makeObservable, observable } from 'mobx'; import autobind from 'autobind-decorator'; import { IDriverAnnotationControlsHandlers, IDriverAnnotationControlsState, buildDriverAnnotationControlsState, buildDriverAnnotationControlsHandlers, IAnnotationFilterSettings, } from '../../../shared/alterationFiltering/AnnotationFilteringSettings'; import DriverAnnotationControls from '../../../shared/components/driverAnnotations/DriverAnnotationControls'; import InfoIcon from '../../../shared/components/InfoIcon'; import styles from '../../../shared/components/driverAnnotations/styles.module.scss'; import classNames from 'classnames'; import { BoldedSpanList } from 'pages/resultsView/ResultsViewPageHelpers'; enum EVENT_KEY { hidePutativePassengers = '0', showGermlineMutations = '1', hideUnprofiledSamples = '1.1', hideAnyUnprofiledSamples = '1.2', hideTotallyUnprofiledSamples = '1.3', dataTypeSample = '2', dataTypePatient = '3', } export interface SettingsMenuProps { store: IAnnotationFilterSettings; resultsView?: boolean; disabled?: boolean; } @observer export default class SettingsMenu extends React.Component< SettingsMenuProps, {} > { public driverSettingsState: IDriverAnnotationControlsState; public driverSettingsHandlers: IDriverAnnotationControlsHandlers; constructor(props: SettingsMenuProps) { super(props); makeObservable(this, { driverSettingsState: observable, driverSettingsHandlers: observable, }); this.driverSettingsState = buildDriverAnnotationControlsState( props.store.driverAnnotationSettings, props.store.customDriverAnnotationReport.result, props.store.didOncoKbFailInOncoprint, props.store.didHotspotFailInOncoprint ); this.driverSettingsHandlers = buildDriverAnnotationControlsHandlers( props.store.driverAnnotationSettings, this.driverSettingsState ); } @autobind private onInputClick(event: React.MouseEvent) { switch ((event.target as HTMLInputElement).value) { case EVENT_KEY.hidePutativePassengers: this.props.store.driverAnnotationSettings.includeVUS = !this .props.store.driverAnnotationSettings.includeVUS; break; case EVENT_KEY.hideUnprofiledSamples: if (!this.props.store.hideUnprofiledSamples) { this.props.store.hideUnprofiledSamples = 'any'; } else { this.props.store.hideUnprofiledSamples = false; } break; case EVENT_KEY.hideAnyUnprofiledSamples: this.props.store.hideUnprofiledSamples = 'any'; break; case EVENT_KEY.hideTotallyUnprofiledSamples: this.props.store.hideUnprofiledSamples = 'totally'; break; case EVENT_KEY.showGermlineMutations: this.props.store.includeGermlineMutations = !this.props.store .includeGermlineMutations; break; } } render() { if (this.props.disabled) { return (
Filtering based on annotations is not available for this study.
Load custom driver annotations for the selected study to enable filtering.
); } return (
Annotate Data
Putative driver vs VUS setings apply to every tab except{' '} } />

Filter Data
{this.props.resultsView && (
)}
); } }