James McCool commited on
Commit
f6b6b5b
·
1 Parent(s): f52fed3

Add slate selection functionality for DraftKings and Fanduel lineups, along with custom tab styling in Streamlit app

Browse files
Files changed (1) hide show
  1. app.py +60 -16
app.py CHANGED
@@ -34,6 +34,38 @@ fd_hb_columns = ['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']
34
  dk_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
35
  fd_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  @st.cache_resource(ttl=200)
38
  def player_stat_table():
39
  collection = db["Player_Level_ROO"]
@@ -57,12 +89,18 @@ def player_stat_table():
57
  return player_frame, line_frame, pp_frame, timestamp
58
 
59
  @st.cache_resource(ttl = 60)
60
- def init_DK_lineups(prio_var, prio_mix, lineup_num, player_var2):
61
 
62
  if prio_var == 'Mix':
63
  prio_var = None
64
 
65
- collection = db['DK_NHL_seed_frame']
 
 
 
 
 
 
66
  if prio_var == None:
67
  if player_var2 != []:
68
  player_columns = ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']
@@ -99,12 +137,18 @@ def init_DK_lineups(prio_var, prio_mix, lineup_num, player_var2):
99
  return DK_seed
100
 
101
  @st.cache_resource(ttl = 60)
102
- def init_FD_lineups(prio_var, prio_mix, lineup_num, player_var2):
103
 
104
  if prio_var == 'Mix':
105
  prio_var = None
106
 
107
- collection = db['FD_NHL_seed_frame']
 
 
 
 
 
 
108
  if prio_var == None:
109
  if player_var2 != []:
110
  player_columns = ['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']
@@ -175,8 +219,8 @@ with app_load_reset_column:
175
  fd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
176
  dk_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Draftkings']['Player'], player_frame[player_frame['Site'] == 'Draftkings']['player_id']))
177
  fd_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
178
- dk_lineups = init_DK_lineups('proj', 50, 25000, [])
179
- fd_lineups = init_FD_lineups('proj', 50, 25000, [])
180
  for key in st.session_state.keys():
181
  del st.session_state[key]
182
  with app_view_site_column:
@@ -215,8 +259,8 @@ with tab1:
215
  fd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
216
  dk_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Draftkings']['Player'], player_frame[player_frame['Site'] == 'Draftkings']['player_id']))
217
  fd_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
218
- dk_lineups = init_DK_lineups('proj', 50, 25000, [])
219
- fd_lineups = init_FD_lineups('proj', 50, 25000, [])
220
  t_stamp = f"Last Update: " + str(timestamp) + f" CST"
221
  split_var1 = st.radio("Would you like to view the whole slate or just specific games?", ('Full Slate Run', 'Specific Games'), key='split_var1')
222
  if split_var1 == 'Specific Games':
@@ -294,8 +338,8 @@ with tab2:
294
  fd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
295
  dk_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Draftkings']['Player'], player_frame[player_frame['Site'] == 'Draftkings']['player_id']))
296
  fd_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
297
- dk_lineups = init_DK_lineups('proj', 50, 25000, [])
298
- fd_lineups = init_FD_lineups('proj', 50, 25000, [])
299
  t_stamp = f"Last Update: " + str(timestamp) + f" CST"
300
  sal_var2 = st.slider("Is there a certain price range you want to view?", 5000, 40000, (5000, 40000), key='sal_var2')
301
 
@@ -334,8 +378,8 @@ with tab3:
334
  fd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
335
  dk_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Draftkings']['Player'], player_frame[player_frame['Site'] == 'Draftkings']['player_id']))
336
  fd_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
337
- dk_lineups = init_DK_lineups('proj', 50, 25000, [])
338
- fd_lineups = init_FD_lineups('proj', 50, 25000, [])
339
  t_stamp = f"Last Update: " + str(timestamp) + f" CST"
340
  sal_var3 = st.slider("Is there a certain price range you want to view?", 5000, 40000, (5000, 40000), key='sal_var3')
341
 
@@ -404,14 +448,14 @@ with tab4:
404
 
405
  if type_var == 'Regular':
406
  if site_var == 'Draftkings':
407
- dk_lineups = init_DK_lineups(prio_var, prio_mix, lineup_num, player_var2)
408
  elif site_var == 'Fanduel':
409
- fd_lineups = init_FD_lineups(prio_var, prio_mix, lineup_num, player_var2)
410
  elif type_var == 'Showdown':
411
  if site_var == 'Draftkings':
412
- dk_lineups = init_DK_lineups(prio_var, prio_mix, lineup_num, player_var2)
413
  elif site_var == 'Fanduel':
414
- fd_lineups = init_FD_lineups(prio_var, prio_mix, lineup_num, player_var2)
415
 
416
  with optimals_salary_col:
417
  if site_var == 'Draftkings':
 
34
  dk_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
35
  fd_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
36
 
37
+ st.markdown("""
38
+ <style>
39
+ /* Tab styling */
40
+ .stTabs [data-baseweb="tab-list"] {
41
+ gap: 8px;
42
+ padding: 4px;
43
+ }
44
+
45
+ .stTabs [data-baseweb="tab"] {
46
+ height: 50px;
47
+ white-space: pre-wrap;
48
+ background-color: #68B1E7;
49
+ color: white;
50
+ border-radius: 10px;
51
+ gap: 1px;
52
+ padding: 10px 20px;
53
+ font-weight: bold;
54
+ transition: all 0.3s ease;
55
+ }
56
+
57
+ .stTabs [aria-selected="true"] {
58
+ background-color: #68B1E7;
59
+ border: 3px solid #4FB286;
60
+ color: white;
61
+ }
62
+
63
+ .stTabs [data-baseweb="tab"]:hover {
64
+ background-color: #4FB286;
65
+ cursor: pointer;
66
+ }
67
+ </style>""", unsafe_allow_html=True)
68
+
69
  @st.cache_resource(ttl=200)
70
  def player_stat_table():
71
  collection = db["Player_Level_ROO"]
 
89
  return player_frame, line_frame, pp_frame, timestamp
90
 
91
  @st.cache_resource(ttl = 60)
92
+ def init_DK_lineups(prio_var, prio_mix, lineup_num, player_var2, slate_var):
93
 
94
  if prio_var == 'Mix':
95
  prio_var = None
96
 
97
+ if slate_var == 'Main Slate':
98
+ collection = db['DK_NHL_seed_frame_Main Slate']
99
+ elif slate_var == 'Secondary Slate':
100
+ collection = db['DK_NHL_seed_frame_Secondary Slate']
101
+ elif slate_var == 'Auxiliary Slate':
102
+ collection = db['DK_NHL_seed_frame_Auxiliary Slate']
103
+
104
  if prio_var == None:
105
  if player_var2 != []:
106
  player_columns = ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']
 
137
  return DK_seed
138
 
139
  @st.cache_resource(ttl = 60)
140
+ def init_FD_lineups(prio_var, prio_mix, lineup_num, player_var2, slate_var):
141
 
142
  if prio_var == 'Mix':
143
  prio_var = None
144
 
145
+ if slate_var == 'Main Slate':
146
+ collection = db['FD_NHL_seed_frame_Main Slate']
147
+ elif slate_var == 'Secondary Slate':
148
+ collection = db['FD_NHL_seed_frame_Secondary Slate']
149
+ elif slate_var == 'Auxiliary Slate':
150
+ collection = db['FD_NHL_seed_frame_Auxiliary Slate']
151
+
152
  if prio_var == None:
153
  if player_var2 != []:
154
  player_columns = ['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']
 
219
  fd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
220
  dk_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Draftkings']['Player'], player_frame[player_frame['Site'] == 'Draftkings']['player_id']))
221
  fd_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
222
+ dk_lineups = init_DK_lineups('proj', 50, 25000, [], 'Main Slate')
223
+ fd_lineups = init_FD_lineups('proj', 50, 25000, [], 'Main Slate')
224
  for key in st.session_state.keys():
225
  del st.session_state[key]
226
  with app_view_site_column:
 
259
  fd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
260
  dk_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Draftkings']['Player'], player_frame[player_frame['Site'] == 'Draftkings']['player_id']))
261
  fd_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
262
+ dk_lineups = init_DK_lineups('proj', 50, 25000, [], 'Main Slate')
263
+ fd_lineups = init_FD_lineups('proj', 50, 25000, [], 'Main Slate')
264
  t_stamp = f"Last Update: " + str(timestamp) + f" CST"
265
  split_var1 = st.radio("Would you like to view the whole slate or just specific games?", ('Full Slate Run', 'Specific Games'), key='split_var1')
266
  if split_var1 == 'Specific Games':
 
338
  fd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
339
  dk_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Draftkings']['Player'], player_frame[player_frame['Site'] == 'Draftkings']['player_id']))
340
  fd_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
341
+ dk_lineups = init_DK_lineups('proj', 50, 25000, [], 'Main Slate')
342
+ fd_lineups = init_FD_lineups('proj', 50, 25000, [], 'Main Slate')
343
  t_stamp = f"Last Update: " + str(timestamp) + f" CST"
344
  sal_var2 = st.slider("Is there a certain price range you want to view?", 5000, 40000, (5000, 40000), key='sal_var2')
345
 
 
378
  fd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
379
  dk_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Draftkings']['Player'], player_frame[player_frame['Site'] == 'Draftkings']['player_id']))
380
  fd_sd_id_map = dict(zip(player_frame[player_frame['Site'] == 'Fanduel']['Player'], player_frame[player_frame['Site'] == 'Fanduel']['player_id']))
381
+ dk_lineups = init_DK_lineups('proj', 50, 25000, [], 'Main Slate')
382
+ fd_lineups = init_FD_lineups('proj', 50, 25000, [], 'Main Slate')
383
  t_stamp = f"Last Update: " + str(timestamp) + f" CST"
384
  sal_var3 = st.slider("Is there a certain price range you want to view?", 5000, 40000, (5000, 40000), key='sal_var3')
385
 
 
448
 
449
  if type_var == 'Regular':
450
  if site_var == 'Draftkings':
451
+ dk_lineups = init_DK_lineups(prio_var, prio_mix, lineup_num, player_var2, slate_var3)
452
  elif site_var == 'Fanduel':
453
+ fd_lineups = init_FD_lineups(prio_var, prio_mix, lineup_num, player_var2, slate_var3)
454
  elif type_var == 'Showdown':
455
  if site_var == 'Draftkings':
456
+ dk_lineups = init_DK_lineups(prio_var, prio_mix, lineup_num, player_var2, slate_var3)
457
  elif site_var == 'Fanduel':
458
+ fd_lineups = init_FD_lineups(prio_var, prio_mix, lineup_num, player_var2, slate_var3)
459
 
460
  with optimals_salary_col:
461
  if site_var == 'Draftkings':