James McCool commited on
Commit
1599cba
·
1 Parent(s): fd1c071

Enhance player selection and removal functionality in app.py

Browse files

- Added a new option to remove specific players from the contest information, improving user control over displayed data.
- Updated the filtering form to include a new column for player removal, enhancing the user interface and experience.
- Ensured that the application correctly updates the displayed contest information based on user selections for both viewing and removing players.

Files changed (1) hide show
  1. app.py +8 -3
app.py CHANGED
@@ -260,6 +260,8 @@ with tab2:
260
  st.session_state['field_player_frame'] = create_player_exposures(working_df, st.session_state['player_columns'])
261
  st.session_state['field_stack_frame'] = create_stack_exposures(working_df)
262
  st.session_state['display_contest_info'] = working_df.copy()
 
 
263
 
264
  if 'display_contest_info' in st.session_state:
265
  with st.expander("Info and filters"):
@@ -268,7 +270,7 @@ with tab2:
268
  st.session_state.clear()
269
 
270
  with st.form(key='filter_form'):
271
- users_var, entries_var, stack_var, stack_size_var, player_var = st.columns(5)
272
  with users_var:
273
  st.session_state['entry_parse_var'] = st.selectbox("Do you want to view a specific user(s)?", ['All', 'Specific'])
274
  st.session_state['entry_names'] = st.multiselect("Select players", options=st.session_state['entry_list'], default=[])
@@ -282,10 +284,11 @@ with tab2:
282
  st.session_state['stack_size_parse_var'] = st.selectbox("Do you want to view a specific stack size(s)?", ['All', 'Specific'])
283
  st.session_state['stack_size_names'] = st.multiselect("Select stack sizes", options=st.session_state['display_contest_info']['stack_size'].unique(), default=[])
284
  with player_var:
285
- st.session_state['unique_players'] = pd.unique(st.session_state['display_contest_info'][st.session_state['player_columns']].values.ravel('K'))
286
- st.session_state['unique_players'] = [p for p in st.session_state['unique_players'] if p != 'nan'] # Remove any NaN values
287
  st.session_state['player_parse_var'] = st.selectbox("Do you want to view lineups with specific player(s)?", ['All', 'Specific'])
288
  st.session_state['player_names'] = st.multiselect("Select players", options=st.session_state['unique_players'], default=[])
 
 
 
289
  submitted = st.form_submit_button("Submit")
290
  if submitted:
291
  if 'player_frame' in st.session_state:
@@ -302,6 +305,8 @@ with tab2:
302
  if st.session_state['player_parse_var'] == 'Specific' and st.session_state['player_names']:
303
  mask = st.session_state['display_contest_info'][st.session_state['player_columns']].apply(lambda row: all(player in row.values for player in st.session_state['player_names']), axis=1)
304
  st.session_state['display_contest_info'] = st.session_state['display_contest_info'][mask]
 
 
305
  if st.session_state['low_entries_var'] and st.session_state['high_entries_var']:
306
  st.session_state['display_contest_info'] = st.session_state['display_contest_info'][st.session_state['display_contest_info']['EntryCount'].between(st.session_state['low_entries_var'], st.session_state['high_entries_var'])]
307
 
 
260
  st.session_state['field_player_frame'] = create_player_exposures(working_df, st.session_state['player_columns'])
261
  st.session_state['field_stack_frame'] = create_stack_exposures(working_df)
262
  st.session_state['display_contest_info'] = working_df.copy()
263
+ st.session_state['unique_players'] = pd.unique(st.session_state['display_contest_info'][st.session_state['player_columns']].values.ravel('K'))
264
+ st.session_state['unique_players'] = [p for p in st.session_state['unique_players'] if p != 'nan'] # Remove any NaN values
265
 
266
  if 'display_contest_info' in st.session_state:
267
  with st.expander("Info and filters"):
 
270
  st.session_state.clear()
271
 
272
  with st.form(key='filter_form'):
273
+ users_var, entries_var, stack_var, stack_size_var, player_var, remove_var = st.columns(6)
274
  with users_var:
275
  st.session_state['entry_parse_var'] = st.selectbox("Do you want to view a specific user(s)?", ['All', 'Specific'])
276
  st.session_state['entry_names'] = st.multiselect("Select players", options=st.session_state['entry_list'], default=[])
 
284
  st.session_state['stack_size_parse_var'] = st.selectbox("Do you want to view a specific stack size(s)?", ['All', 'Specific'])
285
  st.session_state['stack_size_names'] = st.multiselect("Select stack sizes", options=st.session_state['display_contest_info']['stack_size'].unique(), default=[])
286
  with player_var:
 
 
287
  st.session_state['player_parse_var'] = st.selectbox("Do you want to view lineups with specific player(s)?", ['All', 'Specific'])
288
  st.session_state['player_names'] = st.multiselect("Select players", options=st.session_state['unique_players'], default=[])
289
+ with remove_var:
290
+ st.session_state['remove_var'] = st.selectbox("Do you want to remove a specific player(s)?", ['No', 'Yes'])
291
+ st.session_state['remove_names'] = st.multiselect("Select players", options=st.session_state['unique_players'], default=[])
292
  submitted = st.form_submit_button("Submit")
293
  if submitted:
294
  if 'player_frame' in st.session_state:
 
305
  if st.session_state['player_parse_var'] == 'Specific' and st.session_state['player_names']:
306
  mask = st.session_state['display_contest_info'][st.session_state['player_columns']].apply(lambda row: all(player in row.values for player in st.session_state['player_names']), axis=1)
307
  st.session_state['display_contest_info'] = st.session_state['display_contest_info'][mask]
308
+ if st.session_state['remove_var'] == 'Yes' and st.session_state['remove_names']:
309
+ st.session_state['display_contest_info'] = st.session_state['display_contest_info'][~st.session_state['display_contest_info']['BaseName'].isin(st.session_state['remove_names'])]
310
  if st.session_state['low_entries_var'] and st.session_state['high_entries_var']:
311
  st.session_state['display_contest_info'] = st.session_state['display_contest_info'][st.session_state['display_contest_info']['EntryCount'].between(st.session_state['low_entries_var'], st.session_state['high_entries_var'])]
312