James McCool commited on
Commit
328e4a7
·
1 Parent(s): d30a028

explicitly defined all columns

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +23 -23
src/streamlit_app.py CHANGED
@@ -313,8 +313,8 @@ def get_unique_key(prefix, base_key):
313
  st.session_state[f"{prefix}_{base_key}"] += 1
314
  return f"{prefix}_{base_key}_{st.session_state[f'{prefix}_{base_key}']}"
315
 
316
- col1, col2 = st.columns([1, 9])
317
- with col1:
318
  if st.button("Load/Reset Data", key='reset_data_button'):
319
  st.cache_data.clear()
320
  player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map = init_baselines()
@@ -322,12 +322,12 @@ with col1:
322
  fd_lineups = init_FD_lineups('Regular', 'Main')
323
  for key in st.session_state.keys():
324
  del st.session_state[key]
325
- with col2:
326
  with st.container():
327
- col1, col2 = st.columns([3, 3])
328
- with col1:
329
  view_var = st.selectbox("Select view", ["Simple", "Advanced"], key='view_selectbox')
330
- with col2:
331
  site_var = st.selectbox("What site do you want to view?", ('Draftkings', 'Fanduel'), key='site_selectbox')
332
 
333
  player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map = init_baselines()
@@ -438,8 +438,8 @@ with optimals_tab:
438
  st.header("Optimals")
439
  with st.expander("Info and Filters"):
440
  st.info("These filters will display various optimals in the table below to pick from. If you want to export the entire set of 10,000 optimals, hit the 'Prepare full data export' button. If you would like to apply the filters here to the 10,000 optimals before you export, use the 'Prepare full data export (Filter)' button.")
441
- col1, col2, col3, col4 = st.columns(4)
442
- with col1:
443
  slate_type_var3 = st.radio("Which slate type are you loading?", ('Regular', 'Showdown'), key='slate_type_var3_radio')
444
  if slate_type_var3 == 'Regular':
445
  if site_var == 'Draftkings':
@@ -462,21 +462,21 @@ with optimals_tab:
462
  dk_lineups = init_DK_lineups(slate_type_var3, slate_var3)
463
  elif site_var == 'Fanduel':
464
  fd_lineups = init_FD_lineups(slate_type_var3, slate_var3)
465
- with col2:
466
  lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1, key='lineup_num_var_input')
467
  player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1_radio')
468
  if player_var1 == 'Specific Players':
469
  player_var2 = st.multiselect('Which players do you want?', options = raw_baselines['Player'].unique(), key='player_var2_multiselect')
470
  elif player_var1 == 'Full Slate':
471
  player_var2 = raw_baselines.Player.values.tolist()
472
- with col3:
473
  if site_var == 'Draftkings':
474
  salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 50000, value = 49000, step = 100, key = 'salary_min_var_dk')
475
  salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 50000, value = 50000, step = 100, key = 'salary_max_var_dk')
476
  elif site_var == 'Fanduel':
477
  salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 60000, value = 59000, step = 100, key = 'salary_min_var_fd')
478
  salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 60000, value = 60000, step = 100, key = 'salary_max_var_fd')
479
- with col4:
480
  if site_var == 'Draftkings':
481
  min_stacks_var = st.number_input("Minimum stacks used", min_value = 0, max_value = 5, value = 1, step = 1, key = 'min_stacks_var_dk')
482
  max_stacks_var = st.number_input("Maximum stacks used", min_value = 0, max_value = 5, value = 5, step = 1, key = 'max_stacks_var_dk')
@@ -937,10 +937,10 @@ with optimals_tab:
937
  )
938
 
939
  with handbuilder_tab:
940
- col1, col2 = st.columns(2)
941
- with col1:
942
  st.header("Handbuilder")
943
- with col2:
944
  slate_var3 = st.selectbox("Slate Selection", options=['Main', 'Secondary', 'Auxiliary'], key='handbuilder_slate_selectbox')
945
  if site_var == 'Draftkings':
946
  if slate_var3 == 'Main':
@@ -995,10 +995,10 @@ with handbuilder_tab:
995
 
996
  # --- PLAYER FILTERS ---
997
  with st.expander("Player Filters"):
998
- col1, col2 = st.columns(2)
999
- with col1:
1000
  pos_select3 = st.multiselect("Select your position(s)", options=['QB', 'RB', 'WR', 'TE', 'UTIL', 'DST'], key='pos_select3_multiselect')
1001
- with col2:
1002
  salary_var = st.number_input("Salary Max", min_value = 0, max_value = 20000, value = 20000, step = 100, key='handbuilder_salary_max_input')
1003
 
1004
  # --- TEAM FILTER UI ---
@@ -1132,8 +1132,8 @@ with handbuilder_tab:
1132
  # player_select_df = player_select_df[player_select_df.apply(is_player_eligible, axis=1)]
1133
  print(player_select_df.head(10))
1134
 
1135
- col1, col2 = st.columns([1, 2])
1136
- with col2:
1137
  st.subheader("Player Select")
1138
  event = st.dataframe(
1139
  player_select_df.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').background_gradient(cmap='RdYlGn_r', subset=['Salary', 'Own']).format(precision=2),
@@ -1174,7 +1174,7 @@ with handbuilder_tab:
1174
  st.rerun()
1175
 
1176
 
1177
- with col1:
1178
  st.subheader("Lineup Build")
1179
 
1180
  # --- EXPLICIT LINEUP ORDER ---
@@ -1258,9 +1258,9 @@ with handbuilder_tab:
1258
  })
1259
  summary_row = summary_row[['Salary', 'Median', 'Own']].head(max_players)
1260
 
1261
- col1, col3 = st.columns([2, 3])
1262
 
1263
- with col1:
1264
  if (max_players - len(filled_lineup)) > 0:
1265
  st.markdown(f"""
1266
  <div style='text-align: left; vertical-align: top; margin-top: 0; padding-top: 0;''>
@@ -1276,7 +1276,7 @@ with handbuilder_tab:
1276
  """,
1277
  unsafe_allow_html=True)
1278
 
1279
- with col3:
1280
  if total_salary <= max_salary:
1281
  st.markdown(
1282
  f"""
 
313
  st.session_state[f"{prefix}_{base_key}"] += 1
314
  return f"{prefix}_{base_key}_{st.session_state[f'{prefix}_{base_key}']}"
315
 
316
+ app_load_reset_column, app_view_site_column = st.columns([1, 9])
317
+ with app_load_reset_column:
318
  if st.button("Load/Reset Data", key='reset_data_button'):
319
  st.cache_data.clear()
320
  player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map = init_baselines()
 
322
  fd_lineups = init_FD_lineups('Regular', 'Main')
323
  for key in st.session_state.keys():
324
  del st.session_state[key]
325
+ with app_view_site_column:
326
  with st.container():
327
+ app_view_column, app_site_column = st.columns([3, 3])
328
+ with app_view_column:
329
  view_var = st.selectbox("Select view", ["Simple", "Advanced"], key='view_selectbox')
330
+ with app_site_column:
331
  site_var = st.selectbox("What site do you want to view?", ('Draftkings', 'Fanduel'), key='site_selectbox')
332
 
333
  player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map = init_baselines()
 
438
  st.header("Optimals")
439
  with st.expander("Info and Filters"):
440
  st.info("These filters will display various optimals in the table below to pick from. If you want to export the entire set of 10,000 optimals, hit the 'Prepare full data export' button. If you would like to apply the filters here to the 10,000 optimals before you export, use the 'Prepare full data export (Filter)' button.")
441
+ optimals_site_col, optimals_macro_col, optimals_salary_col, optimals_stacks_col = st.columns(4)
442
+ with optimals_site_col:
443
  slate_type_var3 = st.radio("Which slate type are you loading?", ('Regular', 'Showdown'), key='slate_type_var3_radio')
444
  if slate_type_var3 == 'Regular':
445
  if site_var == 'Draftkings':
 
462
  dk_lineups = init_DK_lineups(slate_type_var3, slate_var3)
463
  elif site_var == 'Fanduel':
464
  fd_lineups = init_FD_lineups(slate_type_var3, slate_var3)
465
+ with optimals_macro_col:
466
  lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1, key='lineup_num_var_input')
467
  player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1_radio')
468
  if player_var1 == 'Specific Players':
469
  player_var2 = st.multiselect('Which players do you want?', options = raw_baselines['Player'].unique(), key='player_var2_multiselect')
470
  elif player_var1 == 'Full Slate':
471
  player_var2 = raw_baselines.Player.values.tolist()
472
+ with optimals_salary_col:
473
  if site_var == 'Draftkings':
474
  salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 50000, value = 49000, step = 100, key = 'salary_min_var_dk')
475
  salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 50000, value = 50000, step = 100, key = 'salary_max_var_dk')
476
  elif site_var == 'Fanduel':
477
  salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 60000, value = 59000, step = 100, key = 'salary_min_var_fd')
478
  salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 60000, value = 60000, step = 100, key = 'salary_max_var_fd')
479
+ with optimals_stacks_col:
480
  if site_var == 'Draftkings':
481
  min_stacks_var = st.number_input("Minimum stacks used", min_value = 0, max_value = 5, value = 1, step = 1, key = 'min_stacks_var_dk')
482
  max_stacks_var = st.number_input("Maximum stacks used", min_value = 0, max_value = 5, value = 5, step = 1, key = 'max_stacks_var_dk')
 
937
  )
938
 
939
  with handbuilder_tab:
940
+ handbuilder_header_column, handbuilder_slate_column = st.columns(2)
941
+ with handbuilder_header_column:
942
  st.header("Handbuilder")
943
+ with handbuilder_slate_column:
944
  slate_var3 = st.selectbox("Slate Selection", options=['Main', 'Secondary', 'Auxiliary'], key='handbuilder_slate_selectbox')
945
  if site_var == 'Draftkings':
946
  if slate_var3 == 'Main':
 
995
 
996
  # --- PLAYER FILTERS ---
997
  with st.expander("Player Filters"):
998
+ handbuilder_player_filters_column, handbuilder_player_filters_salary_column = st.columns(2)
999
+ with handbuilder_player_filters_column:
1000
  pos_select3 = st.multiselect("Select your position(s)", options=['QB', 'RB', 'WR', 'TE', 'UTIL', 'DST'], key='pos_select3_multiselect')
1001
+ with handbuilder_player_filters_salary_column:
1002
  salary_var = st.number_input("Salary Max", min_value = 0, max_value = 20000, value = 20000, step = 100, key='handbuilder_salary_max_input')
1003
 
1004
  # --- TEAM FILTER UI ---
 
1132
  # player_select_df = player_select_df[player_select_df.apply(is_player_eligible, axis=1)]
1133
  print(player_select_df.head(10))
1134
 
1135
+ handbuilder_lineup_build_column, handbuilder_player_select_column = st.columns([1, 2])
1136
+ with handbuilder_player_select_column:
1137
  st.subheader("Player Select")
1138
  event = st.dataframe(
1139
  player_select_df.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').background_gradient(cmap='RdYlGn_r', subset=['Salary', 'Own']).format(precision=2),
 
1174
  st.rerun()
1175
 
1176
 
1177
+ with handbuilder_lineup_build_column:
1178
  st.subheader("Lineup Build")
1179
 
1180
  # --- EXPLICIT LINEUP ORDER ---
 
1258
  })
1259
  summary_row = summary_row[['Salary', 'Median', 'Own']].head(max_players)
1260
 
1261
+ handbuilder_lineup_build_salary_column, handbuilder_lineup_build_median_column = st.columns([2, 3])
1262
 
1263
+ with handbuilder_lineup_build_salary_column:
1264
  if (max_players - len(filled_lineup)) > 0:
1265
  st.markdown(f"""
1266
  <div style='text-align: left; vertical-align: top; margin-top: 0; padding-top: 0;''>
 
1276
  """,
1277
  unsafe_allow_html=True)
1278
 
1279
+ with handbuilder_lineup_build_median_column:
1280
  if total_salary <= max_salary:
1281
  st.markdown(
1282
  f"""