James McCool commited on
Commit
0d01fa6
·
1 Parent(s): 45a70a9

Enhance app.py layout and filtering options

Browse files

- Refactored the user interface to include a two-column layout for sport and game type selection, improving usability.
- Reintroduced the filtering options within an expander for better organization, allowing users to filter by player selection while maintaining a clean interface.
- Streamlined the handling of session state for player filtering, ensuring consistent behavior during calculations.

Files changed (1) hide show
  1. app.py +24 -21
app.py CHANGED
@@ -21,7 +21,11 @@ with tab1:
21
  if st.button('Clear data', key='reset1'):
22
  st.session_state.clear()
23
  st.session_state['calc_toggle'] = False
24
- sport_select = st.selectbox("Select Sport", ['MLB', 'NBA', 'NFL'])
 
 
 
 
25
  # Add file uploaders to your app
26
  col1, col2 = st.columns(2)
27
 
@@ -98,26 +102,6 @@ with tab2:
98
  # Create a copy of the dataframe for calculations
99
  working_df = st.session_state['Contest'].copy()
100
 
101
- with st.expander("Info and filters"):
102
- if st.button('Clear data', key='reset3'):
103
- st.session_state.clear()
104
- with st.form(key='filter_form'):
105
- type_var = st.selectbox("Select Game Type", ['Classic', 'Showdown'])
106
- entry_parse_var = st.selectbox("Do you want to view a specific player(s) or a group of players?", ['All', 'Specific'])
107
- entry_names = st.multiselect("Select players", options=st.session_state['entry_list'], default=[])
108
- submitted = st.form_submit_button("Submit")
109
- if submitted:
110
- if 'player_frame' in st.session_state:
111
- del st.session_state['player_frame']
112
- if 'stack_frame' in st.session_state:
113
- del st.session_state['stack_frame']
114
- # Apply entry name filter if specific entries are selected
115
- if entry_parse_var == 'Specific' and entry_names:
116
- working_df = working_df[working_df['BaseName'].isin(entry_names)]
117
- st.session_state['calc_toggle'] = True
118
- elif entry_parse_var == 'All':
119
- st.session_state['calc_toggle'] = True
120
-
121
  if 'Contest' in st.session_state and 'projections_df' in st.session_state and st.session_state['calc_toggle']:
122
  if type_var == 'Classic':
123
  working_df['stack'] = working_df.apply(
@@ -187,6 +171,25 @@ with tab2:
187
  working_df['percentile_finish'] = working_df['index'].rank(pct=True)
188
  working_df['finish'] = working_df['index']
189
  working_df = working_df.drop(['sorted', 'index'], axis=1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
190
 
191
  # Initialize pagination in session state if not exists
192
  if 'current_page' not in st.session_state:
 
21
  if st.button('Clear data', key='reset1'):
22
  st.session_state.clear()
23
  st.session_state['calc_toggle'] = False
24
+ col1, col2 = st.columns(2)
25
+ with col1:
26
+ sport_select = st.selectbox("Select Sport", ['MLB', 'NBA', 'NFL'])
27
+ with col2:
28
+ type_var = st.selectbox("Select Game Type", ['Classic', 'Showdown'])
29
  # Add file uploaders to your app
30
  col1, col2 = st.columns(2)
31
 
 
102
  # Create a copy of the dataframe for calculations
103
  working_df = st.session_state['Contest'].copy()
104
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  if 'Contest' in st.session_state and 'projections_df' in st.session_state and st.session_state['calc_toggle']:
106
  if type_var == 'Classic':
107
  working_df['stack'] = working_df.apply(
 
171
  working_df['percentile_finish'] = working_df['index'].rank(pct=True)
172
  working_df['finish'] = working_df['index']
173
  working_df = working_df.drop(['sorted', 'index'], axis=1)
174
+
175
+ with st.expander("Info and filters"):
176
+ if st.button('Clear data', key='reset3'):
177
+ st.session_state.clear()
178
+ with st.form(key='filter_form'):
179
+ entry_parse_var = st.selectbox("Do you want to view a specific player(s) or a group of players?", ['All', 'Specific'])
180
+ entry_names = st.multiselect("Select players", options=st.session_state['entry_list'], default=[])
181
+ submitted = st.form_submit_button("Submit")
182
+ if submitted:
183
+ if 'player_frame' in st.session_state:
184
+ del st.session_state['player_frame']
185
+ if 'stack_frame' in st.session_state:
186
+ del st.session_state['stack_frame']
187
+ # Apply entry name filter if specific entries are selected
188
+ if entry_parse_var == 'Specific' and entry_names:
189
+ working_df = working_df[working_df['BaseName'].isin(entry_names)]
190
+ st.session_state['calc_toggle'] = True
191
+ elif entry_parse_var == 'All':
192
+ st.session_state['calc_toggle'] = True
193
 
194
  # Initialize pagination in session state if not exists
195
  if 'current_page' not in st.session_state: