@@ -14,12 +14,23 @@ async def RandomWalk():
1414 mu = idom .hooks .use_ref (0 )
1515 sigma = idom .hooks .use_ref (1 )
1616
17- mu_inputs = number_inputs ("Mean" , mu .current , mu .set , (- 1 , 1 , 0.01 ))
18- sigma_inputs = number_inputs (
19- "Standard Deviation" , sigma .current , sigma .set , (0 , 1 , 0.01 )
17+ return idom .html .div (
18+ RandomWalkGraph (mu , sigma ),
19+ idom .html .style (
20+ """
21+ .number-input-container {margin-bottom: 20px}
22+ .number-input-container input {width: 48%;float: left}
23+ .number-input-container input + input {margin-left: 4%}
24+ """
25+ ),
26+ NumberInput ("Mean" , mu .current , mu .set , (- 1 , 1 , 0.01 )),
27+ NumberInput ("Standard Deviation" , sigma .current , sigma .set , (0 , 1 , 0.01 )),
2028 )
2129
22- interval = use_interval (0.4 )
30+
31+ @idom .element
32+ async def RandomWalkGraph (mu , sigma ):
33+ interval = use_interval (0.5 )
2334 data , set_data = idom .hooks .use_state ([{"x" : 0 , "y" : 0 }] * 50 )
2435
2536 @use_async_effect
@@ -32,35 +43,22 @@ async def animate():
3243 }
3344 set_data (data [1 :] + [next_data_point ])
3445
35- style = idom .html .style (
36- [
37- """
38- .number-inputs {margin-bottom: 20px}
39- .number-inputs input {width: 48%;float: left}
40- .number-inputs input + input {margin-left: 4%}
41- """
42- ]
43- )
46+ return VictoryLine ({"data" : data , "style" : {"parent" : {"width" : "500px" }}})
4447
45- return idom .html .div (
46- VictoryLine ({"data" : data , "style" : {"parent" : {"width" : "500px" }}}),
47- style ,
48- mu_inputs ,
49- sigma_inputs ,
50- )
5148
49+ @idom .element
50+ async def NumberInput (label , value , set_value_callback , domain ):
51+ minimum , maximum , step = domain
52+ attrs = {"min" : minimum , "max" : maximum , "step" : step }
5253
53- def number_inputs (label , value , callback , domain ):
5454 value , set_value = idom .hooks .use_state (value )
5555
5656 def update_value (value ):
5757 set_value (value )
58- callback (value )
58+ set_value_callback (value )
5959
60- minimum , maximum , step = domain
61- attrs = {"min" : minimum , "max" : maximum , "step" : step }
6260 return idom .html .fieldset (
63- {"class" : "number-inputs " },
61+ {"class" : "number-input-container " },
6462 [idom .html .legend ({"style" : {"font-size" : "medium" }}, label )],
6563 Input (update_value , "number" , value , attributes = attrs , cast = float ),
6664 Input (update_value , "range" , value , attributes = attrs , cast = float ),
0 commit comments