Better histogram direct input

pull/1484/head
Piero Toffanin 2024-04-04 10:09:45 -04:00
rodzic ed6a43699f
commit 02b4132daa
1 zmienionych plików z 22 dodań i 8 usunięć

Wyświetl plik

@ -290,28 +290,42 @@ export default class Histogram extends React.Component {
handleChangeMax = (e) => { handleChangeMax = (e) => {
this.setState({maxInput: e.target.value}); this.setState({maxInput: e.target.value});
const val = parseFloat(e.target.value); }
if (val >= this.state.min && val <= this.rangeX[1]){ handleMaxBlur = (e) => {
this.setState({max: val}); let val = parseFloat(e.target.value);
if (!isNaN(val)){
val = Math.max(this.state.min, Math.min(this.rangeX[1], val));
this.setState({max: val, maxInput: val.toFixed(3)});
} }
} }
handleMaxKeyDown = (e) => {
if (e.key === 'Enter') this.handleMaxBlur(e);
}
handleChangeMin = (e) => { handleChangeMin = (e) => {
this.setState({minInput: e.target.value}); this.setState({minInput: e.target.value});
const val = parseFloat(e.target.value); }
if (val <= this.state.max && val >= this.rangeX[0]){ handleMinBlur = (e) => {
this.setState({min: val}); let val = parseFloat(e.target.value);
if (!isNaN(val)){
val = Math.max(this.rangeX[0], Math.min(this.state.max, val));
this.setState({min: val, minInput: val.toFixed(3)});
} }
};
handleMinKeyDown = (e) => {
if (e.key === 'Enter') this.handleMinBlur(e);
} }
render(){ render(){
return (<div className={"histogram " + (this.props.loading ? "disabled" : "")}> return (<div className={"histogram " + (this.props.loading ? "disabled" : "")}>
<div ref={(domNode) => { this.hgContainer = domNode; }}> <div ref={(domNode) => { this.hgContainer = domNode; }}>
</div> </div>
<label>{_("Min:")}</label> <input onChange={this.handleChangeMin} type="number" className="form-control min-max" size={5} value={this.state.minInput} /> <label>{_("Min:")}</label> <input onKeyDown={this.handleMinKeyDown} onBlur={this.handleMinBlur} onChange={this.handleChangeMin} type="number" className="form-control min-max" size={5} value={this.state.minInput} />
<label>{_("Max:")}</label> <input onChange={this.handleChangeMax} type="number" className="form-control min-max" size={5} value={this.state.maxInput} /> <label>{_("Max:")}</label> <input onKeyDown={this.handleMaxKeyDown} onBlur={this.handleMaxBlur} onChange={this.handleChangeMax} type="number" className="form-control min-max" size={5} value={this.state.maxInput} />
</div>); </div>);
} }
} }