import * as React from 'react'; import { observable, makeObservable } from 'mobx'; import { observer } from 'mobx-react'; import ReactSelect from 'react-select1'; export type validPercentile = 50 | 75 | 100; interface GenesetsHierarchyFilterFormProps { percentile: validPercentile; pvalueThreshold: number; scoreThreshold: number; onApply: ( percentile: validPercentile, pvalueThreshold: number, scoreThreshold: number ) => void; } @observer export default class GenesetsHierarchyFilterForm extends React.Component< GenesetsHierarchyFilterFormProps, {} > { @observable percentile = this.props.percentile; @observable pvalueThreshold = String(this.props.pvalueThreshold); @observable scoreThreshold = String(this.props.scoreThreshold); readonly percentileOptions = [ { label: '50%', value: 50 }, { label: '75%', value: 75 }, { label: '100%', value: 100 }, ]; constructor(props: GenesetsHierarchyFilterFormProps) { super(props); makeObservable(this); this.percentileChange = this.percentileChange.bind(this); this.applyFilter = this.applyFilter.bind(this); } percentileChange(val: { label: string; value: validPercentile } | null) { this.percentile = val ? val.value : 75; } applyFilter() { const pvalueThreshold = this.pvalueThreshold ? Number(this.pvalueThreshold) : NaN; const scoreThreshold = this.scoreThreshold ? Number(this.scoreThreshold) : NaN; if (!Number.isNaN(pvalueThreshold) && !Number.isNaN(scoreThreshold)) { this.props.onApply( this.percentile, pvalueThreshold, scoreThreshold ); } } render() { return (