James McCool commited on
Commit
88a871a
·
1 Parent(s): a5d3c74

Refactor player selection logic in Handbuilder tab of app.py to initialize session state DataFrame for player selections, ensuring all players are included when teams change. Update filtering mechanism to improve selection accuracy and user experience.

Browse files
Files changed (1) hide show
  1. app.py +21 -8
app.py CHANGED
@@ -808,6 +808,8 @@ with tab4:
808
 
809
  if st.button("Clear Data", key='clear_handbuild'):
810
  st.session_state.handbuilder_editor_key += 1 # Change the key to force reset
 
 
811
  st.rerun()
812
 
813
  # --- TEAM FILTER UI ---
@@ -824,20 +826,28 @@ with tab4:
824
  if checked:
825
  selected_teams.append(team)
826
 
827
- # If no teams selected, show all teams
 
 
 
 
 
 
 
 
 
 
 
828
  if selected_teams:
829
- player_select_df = dk_roo[
830
- dk_roo['Team'].isin(selected_teams)
831
- ][['Player', 'Position', 'Team', 'Salary', 'Median', 'Order', 'Hand', 'Own%']].copy()
832
  else:
833
- player_select_df = dk_roo[['Player', 'Position', 'Team', 'Salary', 'Median', 'Order', 'Hand', 'Own%']].copy()
834
- player_select_df['Select'] = False # Add a checkbox column
835
 
836
  col1, col2 = st.columns([1, 2])
837
  with col2:
838
  st.subheader("Player Select")
839
  edited_df = st.data_editor(
840
- player_select_df,
841
  column_config={
842
  "Select": st.column_config.CheckboxColumn(
843
  "Select",
@@ -849,9 +859,12 @@ with tab4:
849
  hide_index=True,
850
  key=f"handbuilder_editor_{st.session_state.handbuilder_editor_key}"
851
  )
 
 
 
852
 
853
  # Filter selected players for the lineup
854
- selected_players = edited_df[edited_df['Select'] == True]
855
  select_players_disp = selected_players[['Player', 'Team', 'Salary', 'Median', 'Own%']]
856
 
857
  with col1:
 
808
 
809
  if st.button("Clear Data", key='clear_handbuild'):
810
  st.session_state.handbuilder_editor_key += 1 # Change the key to force reset
811
+ # Reset all selections
812
+ st.session_state.handbuilder_editor_df = None
813
  st.rerun()
814
 
815
  # --- TEAM FILTER UI ---
 
826
  if checked:
827
  selected_teams.append(team)
828
 
829
+ # --- PLAYER SELECTION STATE ---
830
+ # Initialize or update the session state DataFrame
831
+ if 'handbuilder_editor_df' not in st.session_state or st.session_state.handbuilder_editor_df is None:
832
+ # Start with all players, all unchecked
833
+ base_df = dk_roo[['Player', 'Position', 'Team', 'Salary', 'Median', 'Order', 'Hand', 'Own%']].copy()
834
+ base_df['Select'] = False
835
+ st.session_state.handbuilder_editor_df = base_df
836
+ else:
837
+ # Make sure all players are present (in case teams change)
838
+ base_df = st.session_state.handbuilder_editor_df
839
+
840
+ # Filter by selected teams (or all if none selected)
841
  if selected_teams:
842
+ filtered_df = base_df[base_df['Team'].isin(selected_teams)].copy()
 
 
843
  else:
844
+ filtered_df = base_df.copy()
 
845
 
846
  col1, col2 = st.columns([1, 2])
847
  with col2:
848
  st.subheader("Player Select")
849
  edited_df = st.data_editor(
850
+ filtered_df,
851
  column_config={
852
  "Select": st.column_config.CheckboxColumn(
853
  "Select",
 
859
  hide_index=True,
860
  key=f"handbuilder_editor_{st.session_state.handbuilder_editor_key}"
861
  )
862
+ # Update the session state DataFrame with the new selections
863
+ # (merge back into the full base_df)
864
+ st.session_state.handbuilder_editor_df.update(edited_df)
865
 
866
  # Filter selected players for the lineup
867
+ selected_players = st.session_state.handbuilder_editor_df[st.session_state.handbuilder_editor_df['Select'] == True]
868
  select_players_disp = selected_players[['Player', 'Team', 'Salary', 'Median', 'Own%']]
869
 
870
  with col1: