diff --git a/frontend/src/components/DarkMaskSettings.tsx b/frontend/src/components/DarkMaskSettings.tsx index 14cab3a2..d6896998 100644 --- a/frontend/src/components/DarkMaskSettings.tsx +++ b/frontend/src/components/DarkMaskSettings.tsx @@ -17,6 +17,7 @@ type MyState = { threshold_err: boolean; frame_time_err: boolean; number_of_frames_err: boolean; + number_of_frames_old: number; max_pixel_count_err: boolean; max_frames_with_signal_err: boolean; }; @@ -39,11 +40,12 @@ class DarkMaskSettings extends Component { number_of_frames_err: false, max_pixel_count_err: false, max_frames_with_signal_err: false, + number_of_frames_old: 1000 }; getValues = () => { if (this.props.s !== undefined) { - const incoming: dark_mask_settings = this.props.s; + let incoming: dark_mask_settings = this.props.s; if (!_.isEqual(incoming, this.state.last_downloaded_s)) { this.setState((prev) => ({ s: incoming, @@ -52,8 +54,11 @@ class DarkMaskSettings extends Component { threshold_err: false, frame_time_err: false, number_of_frames_err: false, + number_of_frames_old: + incoming.number_of_frames === 0 ? prev.number_of_frames_old : incoming.number_of_frames, max_pixel_count_err: false, max_frames_with_signal_err: false, + enable: (this.props.s?.number_of_frames !== 0) })); } } @@ -91,20 +96,26 @@ class DarkMaskSettings extends Component { { - const checked = e.target.checked; - this.setState((prev) => { - const nextFrames = checked - ? 0 - : prev.s.number_of_frames === 0 - ? 1000 - : prev.s.number_of_frames; - return { - number_of_frames_err: false, // zero-mode has no error - s: { ...prev.s, number_of_frames: nextFrames }, - }; - }); + checked={this.state.s.number_of_frames !== 0} + onChange={(event) => { + if (!event.target.checked) + this.setState(prevState => ({ + download_counter: this.state.download_counter + 1, + number_of_frames_err: false, + s: { + ...prevState.s, + number_of_frames: 0 + } + })); + else + this.setState(prevState => ({ + download_counter: this.state.download_counter + 1, + number_of_frames_err: false, + s: { + ...prevState.s, + number_of_frames: this.state.number_of_frames_old + } + })); }} /> } @@ -121,6 +132,7 @@ class DarkMaskSettings extends Component { min={0.001} default={4.0} counter={this.state.download_counter} + disabled={this.state.s.number_of_frames === 0} callback={(val: number, err: boolean) => { this.setState((prev) => ({ threshold_err: err, @@ -138,6 +150,7 @@ class DarkMaskSettings extends Component { max={1000} default={10} counter={this.state.download_counter} + disabled={this.state.s.number_of_frames === 0} callback={(val: number, err: boolean) => { this.setState((prev) => ({ frame_time_err: err, @@ -149,13 +162,18 @@ class DarkMaskSettings extends Component { start_val={this.state.s.number_of_frames} label={'Number of frames'} float={false} - min={0} + min={1} default={1000} counter={this.state.download_counter} + disabled={this.state.s.number_of_frames === 0} callback={(val: number, err: boolean) => { - this.setState((prev) => ({ + let old: number = this.state.number_of_frames_old; + if (!err) + old = val; + this.setState(prevState => ({ number_of_frames_err: err, - s: { ...prev.s, number_of_frames: val }, + number_of_frames_old: old, + s: {...prevState.s, number_of_frames: val} })); }} @@ -169,6 +187,7 @@ class DarkMaskSettings extends Component { min={0} default={1} fullWidth={true} + disabled={this.state.s.number_of_frames === 0} counter={this.state.download_counter} callback={(val: number, err: boolean) => { this.setState((prev) => ({ @@ -186,6 +205,7 @@ class DarkMaskSettings extends Component { default={0} fullWidth={true} counter={this.state.download_counter} + disabled={this.state.s.number_of_frames === 0} callback={(val: number, err: boolean) => { this.setState((prev) => ({ max_frames_with_signal_err: err,