From e991e8e876969dc38bfae6484ed62c270a614367 Mon Sep 17 00:00:00 2001 From: cpan Date: Sun, 30 Jun 2024 14:44:23 -0700 Subject: [PATCH] Added start/stop button for autoplay --- indicators.py | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/indicators.py b/indicators.py index b170f22..94bfc73 100644 --- a/indicators.py +++ b/indicators.py @@ -845,6 +845,7 @@ if __name__ == "__main__": # App layout app.layout = [ html.Button('Refresh Data', id='button', n_clicks=0), + html.Button('Auto Play', id="start-button", n_clicks=0, disabled=True), # html.Div(children='Pick A Symbol from Dropdown List: '), # html.Hr(), # dcc.RadioItems(options=['pop', 'lifeExp', 'gdpPercap'], value='lifeExp', id='controls-and-radio-item'), @@ -860,12 +861,28 @@ if __name__ == "__main__": dcc.Interval( id='interval-component', interval=3*1000, # in milliseconds - n_intervals=0 - ) + n_intervals=0, + disabled=True, + ), ] + # start button callback + @callback(Output('interval-component', 'disabled'), + Output("start-button", "children"), + Input("start-button", "n_clicks")) + def start_cycle(n): + if n: + if n%2 == 0: + return True, "Auto Play" + else: + return False, "Pause" + return no_update + + # interval callback @callback(Output('controls-and-radio-item', 'value'), Input("interval-component", "n_intervals")) def cycle_syms(n): + # if not n: + # return no_update syms=["AMZN", "GOOGL", "AAPL", "SPY"] return syms[n % 4] @@ -874,8 +891,8 @@ if __name__ == "__main__": j_obj = intelligent_loop_plots() return j_obj - # button callback - @app.callback( + # retrieve data button callbacks + @callback( Output("button", "disabled", allow_duplicate=True), Input("button", "n_clicks"), prevent_initial_call=True, @@ -916,6 +933,7 @@ if __name__ == "__main__": @callback( Output(component_id='controls-and-radio-item', component_property='options'), Output(component_id='button', component_property='disabled'), + Output(component_id='start-button', component_property='disabled'), Input(component_id='signal', component_property='data'), ) def update_dropdown(in_data): @@ -930,7 +948,7 @@ if __name__ == "__main__": print("dropdown menu options updated") # all_plot_sym = ["SPY", "AMZN"] - return sorted(all_plot_sym), False + return sorted(all_plot_sym), False, False @callback( Output(component_id='controls-and-graph', component_property='figure'),