James McCool commited on
Commit
2b816c4
·
1 Parent(s): a591260

Add handbuilder lineup export functionality in app.py by introducing a new export button. This allows users to download saved lineups as a CSV file, enhancing data management and user experience. Additionally, new column definitions for DraftKings and FanDuel handbuilder exports have been added for improved clarity.

Browse files
Files changed (1) hide show
  1. app.py +21 -2
app.py CHANGED
@@ -24,6 +24,8 @@ player_roo_format = {'Top_finish': '{:.2%}','Top_5_finish': '{:.2%}', 'Top_10_fi
24
 
25
  dk_columns = ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
26
  fd_columns = ['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
 
 
27
  dk_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
28
  fd_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
29
 
@@ -328,6 +330,11 @@ def convert_pm_df(array):
328
  array = pd.DataFrame(array)
329
  return array.to_csv().encode('utf-8')
330
 
 
 
 
 
 
331
  col1, col2 = st.columns([1, 9])
332
  with col1:
333
  if st.button("Load/Reset Data", key='reset'):
@@ -1385,7 +1392,7 @@ with tab4:
1385
  )
1386
 
1387
  # Optionally, add a button to clear the lineup
1388
- clear_col, save_col, blank_col = st.columns([2,2,8])
1389
  with clear_col:
1390
  if st.button("Clear Lineup", key='clear_lineup'):
1391
  st.session_state['handbuilder_lineup'] = pd.DataFrame(columns=['Player', 'Position', 'Team', 'Team_Total', 'Opp_Total', 'Salary', 'Median', '2x%', 'Own%', 'Slot', 'Order'])
@@ -1398,4 +1405,16 @@ with tab4:
1398
  else:
1399
  st.session_state['saved_lineups'] = [st.session_state['handbuilder_lineup']['Player'].tolist()]
1400
  print(st.session_state['saved_lineups'])
1401
- st.rerun()
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
  dk_columns = ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
26
  fd_columns = ['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
27
+ dk_hb_columns = ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3']
28
+ fd_hb_columns = ['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL']
29
  dk_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
30
  fd_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
31
 
 
330
  array = pd.DataFrame(array)
331
  return array.to_csv().encode('utf-8')
332
 
333
+ @st.cache_data
334
+ def convert_hb_df(array, column_names):
335
+ array = pd.DataFrame(array, columns=column_names)
336
+ return array.to_csv().encode('utf-8')
337
+
338
  col1, col2 = st.columns([1, 9])
339
  with col1:
340
  if st.button("Load/Reset Data", key='reset'):
 
1392
  )
1393
 
1394
  # Optionally, add a button to clear the lineup
1395
+ clear_col, save_col, export_col, blank_col = st.columns([2, 2, 2, 10])
1396
  with clear_col:
1397
  if st.button("Clear Lineup", key='clear_lineup'):
1398
  st.session_state['handbuilder_lineup'] = pd.DataFrame(columns=['Player', 'Position', 'Team', 'Team_Total', 'Opp_Total', 'Salary', 'Median', '2x%', 'Own%', 'Slot', 'Order'])
 
1405
  else:
1406
  st.session_state['saved_lineups'] = [st.session_state['handbuilder_lineup']['Player'].tolist()]
1407
  print(st.session_state['saved_lineups'])
1408
+ st.rerun()
1409
+ with export_col:
1410
+ if 'saved_lineups' in st.session_state and st.session_state['saved_lineups']:
1411
+ # Convert list of lists to numpy array
1412
+ saved_lineups_array = np.array(st.session_state['saved_lineups'])
1413
+ st.download_button(
1414
+ label="Export Handbuilds",
1415
+ data=convert_hb_df(saved_lineups_array, dk_hb_columns if site_var == 'Draftkings' else fd_hb_columns),
1416
+ file_name='handbuilds_export.csv',
1417
+ mime='text/csv',
1418
+ )
1419
+ else:
1420
+ st.write("No saved lineups to export")