@@ -10,7 +10,7 @@ import { calculateScore, displayMessage, displayScore } from "../utils";
1010import Spacer from "../../core/spacer.js" ;
1111
1212function IntervalChoice ( props ) {
13- const { uid, qid, answer, lower, upper } = props ;
13+ const { uid, qid, answer, lower, upper, step } = props ;
1414 const date_expired = new Date ( props . date_expired ) ;
1515 const [ values , setValues ] = useState (
1616 props . prediction ? props . prediction : [ lower , upper ]
@@ -28,6 +28,10 @@ function IntervalChoice(props) {
2828 event . preventDefault ( ) ;
2929 } ;
3030
31+ const parseValue = ( value ) => {
32+ return step === 1 ? parseInt ( value ) : parseFloat ( value ) ;
33+ }
34+
3135 // Updates Firebase with final values
3236 const updateFirebase = ( ) => {
3337 const updates = { } ;
@@ -42,7 +46,7 @@ function IntervalChoice(props) {
4246
4347 const validateLower = ( e ) => {
4448 const bound = Math . min ( values [ 1 ] , upper ) ;
45- let value = parseFloat ( e . target . value ) ;
49+ let value = parseValue ( e . target . value ) ;
4650 if ( value < lower || e . target . value === "" ) {
4751 value = lower ;
4852 } else if ( value > bound ) {
@@ -54,7 +58,7 @@ function IntervalChoice(props) {
5458
5559 const validateUpper = ( e ) => {
5660 const bound = Math . max ( values [ 0 ] , lower ) ;
57- let value = parseFloat ( e . target . value ) ;
61+ let value = parseValue ( e . target . value ) ;
5862 if ( value > upper || e . target . value === "" ) {
5963 value = upper ;
6064 } else if ( value < bound ) {
@@ -95,13 +99,6 @@ function IntervalChoice(props) {
9599 }
96100 }
97101
98- function update ( value , values , step ) {
99- if ( step === 1 ) {
100- setValues ( [ value && parseInt ( value ) , values [ 1 ] ] )
101- }
102- setValues ( [ value && parseFloat ( value ) , values [ 1 ] ] ) ;
103- }
104-
105102 return (
106103 < form onSubmit = { ( event ) => afterSubmission ( event ) } >
107104 < Grid mt = { 1 } mx = { 3 } gap = { 0 } columns = { [ 2 , "3fr 5fr" ] } >
@@ -159,7 +156,9 @@ function IntervalChoice(props) {
159156 max = { upper }
160157 value = { values [ 0 ] }
161158 disabled = { props . disabled }
162- onChange = { ( e ) => update ( e . target . value , values , props . step ) }
159+ onChange = { ( e ) =>
160+ setValues ( [ e . target . value && parseValue ( e . target . value ) , values [ 1 ] ] )
161+ }
163162 onBlur = { validateLower }
164163 onKeyDown = { ( e ) => {
165164 if ( e . key === "Enter" ) e . target . blur ( ) ;
@@ -177,7 +176,9 @@ function IntervalChoice(props) {
177176 max = { upper }
178177 value = { values [ 1 ] }
179178 disabled = { props . disabled }
180- onChange = { ( e ) => update ( e . target . value , values , props . step ) }
179+ onChange = { ( e ) =>
180+ setValues ( [ values [ 0 ] , e . target . value && parseValue ( e . target . value ) ] )
181+ }
181182 onBlur = { validateUpper }
182183 onKeyDown = { ( e ) => {
183184 if ( e . key === "Enter" ) e . target . blur ( ) ;
0 commit comments