James McCool commited on
Commit
78cc931
·
1 Parent(s): 18fb2b3

Refactor Range of Outcomes tab layout and improve data selection workflow

Browse files

Restructure the first tab's layout using a 5-column grid for more intuitive data selection. Consolidate data loading and view selection logic, simplifying the user interface while maintaining the existing functionality for NBA and NFL projections. Improve spacing and organization of selection options to enhance user experience.

Files changed (1) hide show
  1. app.py +74 -63
app.py CHANGED
@@ -115,74 +115,85 @@ def convert_df_to_csv(df):
115
  tab1, tab2 = st.tabs(['Range of Outcomes', 'Optimizer'])
116
 
117
  with tab1:
118
- col1, col2 = st.columns([1, 5])
119
- with col1:
120
- if st.button("Load/Reset Data", key='reset2'):
121
- st.cache_data.clear()
122
- nba_dk_sd_raw, nba_fd_sd_raw, nfl_dk_sd_raw, nfl_fd_sd_raw, nba_timestamp, nfl_dk_timestamp, nba_dk_id_dict, nfl_dk_id_dict, nba_fd_id_dict, nfl_fd_id_dict = init_baselines()
123
- view_var2 = st.radio("What view would you like to load?", ("Simple", "Advanced"), key='view_var2')
124
- st.info("Simple view is the default view and better for mobile devices, and Advanced view is the view that shows all the data that is available.")
125
- sport_var2 = st.radio("What sport are you loading?", ('NFL', 'NBA'), key='sport_var2')
126
- if sport_var2 == 'NBA':
127
- dk_roo_raw = nba_dk_sd_raw
128
- fd_roo_raw = nba_fd_sd_raw
129
- elif sport_var2 == 'NFL':
130
- dk_roo_raw = nfl_dk_sd_raw
131
- fd_roo_raw = nfl_fd_sd_raw
132
- slate_var2 = st.radio("Which data are you loading?", ('Paydirt (Main)', 'Paydirt (Secondary)', 'Paydirt (Auxiliary)'), key='slate_var2')
133
- site_var2 = st.radio("What table would you like to display?", ('Draftkings', 'Fanduel'), key='site_var2')
134
- if site_var2 == 'Draftkings':
135
- if slate_var2 == 'Paydirt (Main)':
136
- raw_baselines = dk_roo_raw
137
- raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #1']
138
- elif slate_var2 == 'Paydirt (Secondary)':
139
- raw_baselines = dk_roo_raw
140
- raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #2']
141
- elif slate_var2 == 'Paydirt (Auxiliary)':
142
- raw_baselines = dk_roo_raw
143
- raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #3']
144
-
145
- elif site_var2 == 'Fanduel':
146
- if slate_var2 == 'Paydirt (Main)':
147
- raw_baselines = fd_roo_raw
148
- raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #1']
149
- elif slate_var2 == 'Paydirt (Secondary)':
150
- raw_baselines = fd_roo_raw
151
- raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #2']
152
- elif slate_var2 == 'Paydirt (Auxiliary)':
153
- raw_baselines = fd_roo_raw
154
- raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #3']
155
 
156
- with col2:
157
- hold_container = st.empty()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
  if sport_var2 == 'NBA':
160
- if view_var2 == 'Simple':
161
- display_Proj = raw_baselines[['Player', 'Position', 'Salary', 'Median', 'GPP%', 'Own']]
162
- elif view_var2 == 'Advanced':
163
- display_Proj = raw_baselines[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '4x%', '5x%', '6x%', 'GPP%', 'Own', 'Small_Own', 'Large_Own', 'Cash_Own', 'CPT_Own', 'LevX', 'ValX', 'site', 'version', 'slate', 'timestamp', 'player_id']]
164
  elif sport_var2 == 'NFL':
165
- if view_var2 == 'Simple':
166
- display_Proj = raw_baselines[['Player', 'Position', 'Salary', 'Median', '20+%', 'Own']]
167
- elif view_var2 == 'Advanced':
168
- display_Proj = raw_baselines[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%', 'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
169
- display_Proj = display_Proj.sort_values(by='Median', ascending=False)
170
-
171
- with hold_container:
172
- hold_container = st.empty()
173
- display_Proj = display_Proj.drop_duplicates(subset=['Player'])
174
 
175
- if sport_var2 == 'NBA':
176
- st.dataframe(display_Proj.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(nba_player_roo_format, precision=2), height=1000, use_container_width = True)
177
- elif sport_var2 == 'NFL':
178
- st.dataframe(display_Proj.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(nfl_player_roo_format, precision=2), height=1000, use_container_width = True)
179
-
180
- st.download_button(
181
- label="Export Tables",
182
- data=convert_df_to_csv(raw_baselines),
183
- file_name='NFL_SD_export.csv',
184
- mime='text/csv',
185
- )
186
 
187
  with tab2:
188
  col1, col2 = st.columns([1, 5])
 
115
  tab1, tab2 = st.tabs(['Range of Outcomes', 'Optimizer'])
116
 
117
  with tab1:
118
+ if st.button("Load/Reset Data", key='reset2'):
119
+ st.cache_data.clear()
120
+ nba_dk_sd_raw, nba_fd_sd_raw, nfl_dk_sd_raw, nfl_fd_sd_raw, nba_timestamp, nfl_dk_timestamp, nba_dk_id_dict, nfl_dk_id_dict, nba_fd_id_dict, nfl_fd_id_dict = init_baselines()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
 
122
+ options_container = st.container()
123
+ with options_container:
124
+ col1, col2, col3, col4, col5 = st.columns(5)
125
+
126
+ with col1:
127
+ view_var2 = st.radio("View Type", ("Simple", "Advanced"), key='view_var2')
128
+ st.info("Simple view is better for mobile")
129
+
130
+ with col2:
131
+ sport_var2 = st.radio("Sport", ('NFL', 'NBA'), key='sport_var2')
132
+ if sport_var2 == 'NBA':
133
+ dk_roo_raw = nba_dk_sd_raw
134
+ fd_roo_raw = nba_fd_sd_raw
135
+ elif sport_var2 == 'NFL':
136
+ dk_roo_raw = nfl_dk_sd_raw
137
+ fd_roo_raw = nfl_fd_sd_raw
138
+
139
+ with col3:
140
+ slate_var2 = st.radio("Slate", ('Paydirt (Main)', 'Paydirt (Secondary)', 'Paydirt (Auxiliary)'), key='slate_var2')
141
+
142
+ with col4:
143
+ site_var2 = st.radio("Site", ('Draftkings', 'Fanduel'), key='site_var2')
144
 
145
+ with col5:
146
+ if site_var2 == 'Draftkings':
147
+ if slate_var2 == 'Paydirt (Main)':
148
+ raw_baselines = dk_roo_raw
149
+ raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #1']
150
+ elif slate_var2 == 'Paydirt (Secondary)':
151
+ raw_baselines = dk_roo_raw
152
+ raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #2']
153
+ elif slate_var2 == 'Paydirt (Auxiliary)':
154
+ raw_baselines = dk_roo_raw
155
+ raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #3']
156
+
157
+ elif site_var2 == 'Fanduel':
158
+ if slate_var2 == 'Paydirt (Main)':
159
+ raw_baselines = fd_roo_raw
160
+ raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #1']
161
+ elif slate_var2 == 'Paydirt (Secondary)':
162
+ raw_baselines = fd_roo_raw
163
+ raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #2']
164
+ elif slate_var2 == 'Paydirt (Auxiliary)':
165
+ raw_baselines = fd_roo_raw
166
+ raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #3']
167
+
168
+ hold_container = st.empty()
169
+
170
+ if sport_var2 == 'NBA':
171
+ if view_var2 == 'Simple':
172
+ display_Proj = raw_baselines[['Player', 'Position', 'Salary', 'Median', 'GPP%', 'Own']]
173
+ elif view_var2 == 'Advanced':
174
+ display_Proj = raw_baselines[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '4x%', '5x%', '6x%', 'GPP%', 'Own', 'Small_Own', 'Large_Own', 'Cash_Own', 'CPT_Own', 'LevX', 'ValX', 'site', 'version', 'slate', 'timestamp', 'player_id']]
175
+ elif sport_var2 == 'NFL':
176
+ if view_var2 == 'Simple':
177
+ display_Proj = raw_baselines[['Player', 'Position', 'Salary', 'Median', '20+%', 'Own']]
178
+ elif view_var2 == 'Advanced':
179
+ display_Proj = raw_baselines[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%', 'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
180
+ display_Proj = display_Proj.sort_values(by='Median', ascending=False)
181
+
182
+ with hold_container:
183
+ hold_container = st.empty()
184
+ display_Proj = display_Proj.drop_duplicates(subset=['Player'])
185
+
186
  if sport_var2 == 'NBA':
187
+ st.dataframe(display_Proj.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(nba_player_roo_format, precision=2), height=1000, use_container_width = True)
 
 
 
188
  elif sport_var2 == 'NFL':
189
+ st.dataframe(display_Proj.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(nfl_player_roo_format, precision=2), height=1000, use_container_width = True)
 
 
 
 
 
 
 
 
190
 
191
+ st.download_button(
192
+ label="Export Tables",
193
+ data=convert_df_to_csv(raw_baselines),
194
+ file_name='NFL_SD_export.csv',
195
+ mime='text/csv',
196
+ )
 
 
 
 
 
197
 
198
  with tab2:
199
  col1, col2 = st.columns([1, 5])