openhands openhands commited on
Commit
df058f7
·
1 Parent(s): 88a8840

Fix: Preserve mark_by selection during periodic data refresh

Browse files

The 60-second timer that checks for data updates was not passing the
current mark_by dropdown value, causing charts to revert to 'Company'
when data refreshed.

Changes:
- Add mark_by parameter to check_and_refresh_data()
- Add mark_by parameter to check_and_refresh_all()
- Add mark_by parameter to check_and_refresh_simple()
- Include mark_by_dropdown in timer inputs for all refresh paths
- Pass mark_by to create_cost_scatter_plot() and create_runtime_scatter_plot()

Co-authored-by: openhands <openhands@all-hands.dev>

Files changed (1) hide show
  1. ui_components.py +18 -17
ui_components.py CHANGED
@@ -907,7 +907,7 @@ def create_leaderboard_display(
907
 
908
  # Add a timer to periodically check for data updates and refresh the UI
909
  # This runs every 60 seconds to check if new data is available
910
- def check_and_refresh_data(show_incomplete, show_open_only=False):
911
  """Check if data has been refreshed and return updated data if so."""
912
  current_version = get_data_version()
913
  if current_version > initial_data_version:
@@ -937,16 +937,16 @@ def create_leaderboard_display(
937
  new_df_display_open = prepare_df_for_display(new_df_view_open)
938
  new_df_display_complete_open = prepare_df_for_display(new_df_view_complete_open)
939
 
940
- # Create new scatter plots for all combinations
941
- new_cost_scatter_complete = create_cost_scatter_plot(new_df_view_complete) if len(new_df_display_complete) > 0 else go.Figure()
942
- new_cost_scatter_all = create_cost_scatter_plot(new_df_view_full)
943
- new_cost_scatter_open = create_cost_scatter_plot(new_df_view_open) if len(new_df_view_open) > 0 else go.Figure()
944
- new_cost_scatter_complete_open = create_cost_scatter_plot(new_df_view_complete_open) if len(new_df_view_complete_open) > 0 else go.Figure()
945
 
946
- new_runtime_scatter_complete = create_runtime_scatter_plot(new_df_view_complete) if len(new_df_display_complete) > 0 else go.Figure()
947
- new_runtime_scatter_all = create_runtime_scatter_plot(new_df_view_full)
948
- new_runtime_scatter_open = create_runtime_scatter_plot(new_df_view_open) if len(new_df_view_open) > 0 else go.Figure()
949
- new_runtime_scatter_complete_open = create_runtime_scatter_plot(new_df_view_complete_open) if len(new_df_view_complete_open) > 0 else go.Figure()
950
 
951
  # Return the appropriate data based on checkbox states
952
  if show_open_only:
@@ -980,6 +980,7 @@ def create_leaderboard_display(
980
  timer_inputs = [show_incomplete_checkbox]
981
  if show_open_only_checkbox is not None:
982
  timer_inputs.append(show_open_only_checkbox)
 
983
  refresh_timer.tick(
984
  fn=check_and_refresh_data,
985
  inputs=timer_inputs,
@@ -987,7 +988,7 @@ def create_leaderboard_display(
987
  )
988
  else:
989
  # If no incomplete checkbox, always show all data (but still filter by open if needed)
990
- def check_and_refresh_all(show_open_only=False):
991
  current_version = get_data_version()
992
  if current_version > initial_data_version:
993
  print(f"[REFRESH] Data version changed, reloading...")
@@ -1000,8 +1001,8 @@ def create_leaderboard_display(
1000
  new_df_view_full = new_df_view_full[new_df_view_full['Openness'].str.lower() == 'open'].copy()
1001
 
1002
  new_df_display_all = prepare_df_for_display(new_df_view_full)
1003
- new_cost_scatter_all = create_cost_scatter_plot(new_df_view_full)
1004
- new_runtime_scatter_all = create_runtime_scatter_plot(new_df_view_full)
1005
  return new_df_display_all, new_cost_scatter_all, new_runtime_scatter_all
1006
 
1007
  if show_open_only:
@@ -1011,15 +1012,15 @@ def create_leaderboard_display(
1011
  if show_open_only_checkbox is not None:
1012
  refresh_timer.tick(
1013
  fn=check_and_refresh_all,
1014
- inputs=[show_open_only_checkbox],
1015
  outputs=[dataframe_component, cost_plot_component, runtime_plot_component]
1016
  )
1017
  else:
1018
- def check_and_refresh_simple():
1019
- return check_and_refresh_all(False)
1020
  refresh_timer.tick(
1021
  fn=check_and_refresh_simple,
1022
- inputs=[],
1023
  outputs=[dataframe_component, cost_plot_component, runtime_plot_component]
1024
  )
1025
 
 
907
 
908
  # Add a timer to periodically check for data updates and refresh the UI
909
  # This runs every 60 seconds to check if new data is available
910
+ def check_and_refresh_data(show_incomplete, show_open_only=False, mark_by=MARK_BY_DEFAULT):
911
  """Check if data has been refreshed and return updated data if so."""
912
  current_version = get_data_version()
913
  if current_version > initial_data_version:
 
937
  new_df_display_open = prepare_df_for_display(new_df_view_open)
938
  new_df_display_complete_open = prepare_df_for_display(new_df_view_complete_open)
939
 
940
+ # Create new scatter plots for all combinations (with current mark_by)
941
+ new_cost_scatter_complete = create_cost_scatter_plot(new_df_view_complete, mark_by) if len(new_df_display_complete) > 0 else go.Figure()
942
+ new_cost_scatter_all = create_cost_scatter_plot(new_df_view_full, mark_by)
943
+ new_cost_scatter_open = create_cost_scatter_plot(new_df_view_open, mark_by) if len(new_df_view_open) > 0 else go.Figure()
944
+ new_cost_scatter_complete_open = create_cost_scatter_plot(new_df_view_complete_open, mark_by) if len(new_df_view_complete_open) > 0 else go.Figure()
945
 
946
+ new_runtime_scatter_complete = create_runtime_scatter_plot(new_df_view_complete, mark_by) if len(new_df_display_complete) > 0 else go.Figure()
947
+ new_runtime_scatter_all = create_runtime_scatter_plot(new_df_view_full, mark_by)
948
+ new_runtime_scatter_open = create_runtime_scatter_plot(new_df_view_open, mark_by) if len(new_df_view_open) > 0 else go.Figure()
949
+ new_runtime_scatter_complete_open = create_runtime_scatter_plot(new_df_view_complete_open, mark_by) if len(new_df_view_complete_open) > 0 else go.Figure()
950
 
951
  # Return the appropriate data based on checkbox states
952
  if show_open_only:
 
980
  timer_inputs = [show_incomplete_checkbox]
981
  if show_open_only_checkbox is not None:
982
  timer_inputs.append(show_open_only_checkbox)
983
+ timer_inputs.append(mark_by_dropdown) # Always include mark_by
984
  refresh_timer.tick(
985
  fn=check_and_refresh_data,
986
  inputs=timer_inputs,
 
988
  )
989
  else:
990
  # If no incomplete checkbox, always show all data (but still filter by open if needed)
991
+ def check_and_refresh_all(show_open_only=False, mark_by=MARK_BY_DEFAULT):
992
  current_version = get_data_version()
993
  if current_version > initial_data_version:
994
  print(f"[REFRESH] Data version changed, reloading...")
 
1001
  new_df_view_full = new_df_view_full[new_df_view_full['Openness'].str.lower() == 'open'].copy()
1002
 
1003
  new_df_display_all = prepare_df_for_display(new_df_view_full)
1004
+ new_cost_scatter_all = create_cost_scatter_plot(new_df_view_full, mark_by)
1005
+ new_runtime_scatter_all = create_runtime_scatter_plot(new_df_view_full, mark_by)
1006
  return new_df_display_all, new_cost_scatter_all, new_runtime_scatter_all
1007
 
1008
  if show_open_only:
 
1012
  if show_open_only_checkbox is not None:
1013
  refresh_timer.tick(
1014
  fn=check_and_refresh_all,
1015
+ inputs=[show_open_only_checkbox, mark_by_dropdown],
1016
  outputs=[dataframe_component, cost_plot_component, runtime_plot_component]
1017
  )
1018
  else:
1019
+ def check_and_refresh_simple(mark_by=MARK_BY_DEFAULT):
1020
+ return check_and_refresh_all(False, mark_by)
1021
  refresh_timer.tick(
1022
  fn=check_and_refresh_simple,
1023
+ inputs=[mark_by_dropdown],
1024
  outputs=[dataframe_component, cost_plot_component, runtime_plot_component]
1025
  )
1026