Spaces:
Running
Running
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
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 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
828 |
if selected_teams:
|
829 |
-
|
830 |
-
dk_roo['Team'].isin(selected_teams)
|
831 |
-
][['Player', 'Position', 'Team', 'Salary', 'Median', 'Order', 'Hand', 'Own%']].copy()
|
832 |
else:
|
833 |
-
|
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 |
-
|
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 =
|
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:
|