James McCool commited on
Commit
1b1d1f9
·
1 Parent(s): 84af75a

adding ROI info tab

Browse files
Files changed (1) hide show
  1. app.py +61 -5
app.py CHANGED
@@ -68,8 +68,10 @@ def grab_contest_payout_info(db, sport, type, contest_date, contest_name, contes
68
  payout_info = pd.DataFrame(list(cursor)).drop('_id', axis=1)
69
  payout_info = payout_info[payout_info['Contest Date'] == contest_date]
70
  payout_info = payout_info[payout_info['Contest ID'] == contest_id_map[contest_name]]
 
 
71
 
72
- return payout_info
73
 
74
  def export_contest_file(db, sport, type, contest_date, contest_id, contest_data):
75
  if type == 'Classic':
@@ -240,7 +242,7 @@ if selected_tab == 'Data Load':
240
  st.session_state['player_info'], st.session_state['info_maps'] = grab_contest_player_info(db, sport_init, type_init, date_select, contest_name_var, contest_id_map)
241
  st.session_state['Contest_file'] = grab_contest_data(sport_init, contest_name_var, contest_id_map, date_select, date_select2)
242
  try:
243
- st.session_state['payout_info'] = grab_contest_payout_info(db, sport_init, type_init, date_select, contest_name_var, contest_id_map, contest_id_map[contest_name_var])
244
  except:
245
  st.session_state['payout_info'] = None
246
  else:
@@ -260,7 +262,7 @@ if selected_tab == 'Data Load':
260
  except:
261
  st.warning('Please upload a Contest CSV')
262
  try:
263
- st.session_state['payout_info'] = grab_contest_payout_info(db, sport_init, type_init, date_select, contest_name_var, contest_id_map, contest_id_map[contest_name_var])
264
  except:
265
  st.session_state['payout_info'] = None
266
  else:
@@ -635,7 +637,7 @@ if selected_tab == 'Contest Analysis':
635
  st.download_button(label="Download Contest Info", data=st.session_state['display_contest_info'].to_csv(index=False), file_name="contest_info.csv", mime="text/csv", key='download_contest')
636
  if 'Contest' in st.session_state:
637
  with st.container():
638
- tab1, tab2, tab3, tab4, tab5 = st.tabs(['Player Used Info', 'Stack Used Info', 'Stack Size Info', 'General Info', 'Duplication Info'])
639
  with tab1:
640
  player_pos_form_col, player_comp_form_col = st.columns(2)
641
  with player_pos_form_col:
@@ -887,4 +889,58 @@ if selected_tab == 'Contest Analysis':
887
  background_gradient(cmap='RdYlGn', subset=['uniques%', 'under_5%', 'under_10%'], axis=0).
888
  background_gradient(cmap='RdYlGn', subset=['uniques', 'under_5', 'under_10'], axis=0).
889
  format(dupe_format, precision=2), hide_index=True)
890
- st.download_button(label="Download Duplication Info", data=st.session_state['duplication_frame'].to_csv(index=False), file_name="duplication_info.csv", mime="text/csv", key='dupe_exp_comp_download')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  payout_info = pd.DataFrame(list(cursor)).drop('_id', axis=1)
69
  payout_info = payout_info[payout_info['Contest Date'] == contest_date]
70
  payout_info = payout_info[payout_info['Contest ID'] == contest_id_map[contest_name]]
71
+
72
+ entry_fee = payout_info['Entry Fee'].iloc[0]
73
 
74
+ return payout_info, entry_fee
75
 
76
  def export_contest_file(db, sport, type, contest_date, contest_id, contest_data):
77
  if type == 'Classic':
 
242
  st.session_state['player_info'], st.session_state['info_maps'] = grab_contest_player_info(db, sport_init, type_init, date_select, contest_name_var, contest_id_map)
243
  st.session_state['Contest_file'] = grab_contest_data(sport_init, contest_name_var, contest_id_map, date_select, date_select2)
244
  try:
245
+ st.session_state['payout_info'], st.session_state['entry_fee'] = grab_contest_payout_info(db, sport_init, type_init, date_select, contest_name_var, contest_id_map, contest_id_map[contest_name_var])
246
  except:
247
  st.session_state['payout_info'] = None
248
  else:
 
262
  except:
263
  st.warning('Please upload a Contest CSV')
264
  try:
265
+ st.session_state['payout_info'], st.session_state['entry_fee'] = grab_contest_payout_info(db, sport_init, type_init, date_select, contest_name_var, contest_id_map, contest_id_map[contest_name_var])
266
  except:
267
  st.session_state['payout_info'] = None
268
  else:
 
637
  st.download_button(label="Download Contest Info", data=st.session_state['display_contest_info'].to_csv(index=False), file_name="contest_info.csv", mime="text/csv", key='download_contest')
638
  if 'Contest' in st.session_state:
639
  with st.container():
640
+ tab1, tab2, tab3, tab4, tab5, tab6 = st.tabs(['Player Used Info', 'Stack Used Info', 'Stack Size Info', 'General Info', 'Duplication Info', 'ROI Info'])
641
  with tab1:
642
  player_pos_form_col, player_comp_form_col = st.columns(2)
643
  with player_pos_form_col:
 
889
  background_gradient(cmap='RdYlGn', subset=['uniques%', 'under_5%', 'under_10%'], axis=0).
890
  background_gradient(cmap='RdYlGn', subset=['uniques', 'under_5', 'under_10'], axis=0).
891
  format(dupe_format, precision=2), hide_index=True)
892
+ st.download_button(label="Download Duplication Info", data=st.session_state['duplication_frame'].to_csv(index=False), file_name="duplication_info.csv", mime="text/csv", key='dupe_exp_comp_download')
893
+
894
+ with tab6:
895
+ if st.session_state['payout_info'] is not None:
896
+ with st.form(key='ROI_form'):
897
+ col1, col2 = st.columns(2)
898
+ with col1:
899
+ user_ROI_var = st.selectbox("Which user(s) would you like to view?", ['All', 'Specific'], key='user_ROI_var')
900
+ with col2:
901
+ user_ROI_select = st.multiselect("Select your user(s)", st.session_state['display_contest_info']['BaseName'].sort_values().unique(), key='user_ROI_select')
902
+ submitted = st.form_submit_button("Submit")
903
+ if submitted:
904
+ if user_ROI_var == 'Specific':
905
+ user_ROI_select = user_ROI_select
906
+ else:
907
+ user_ROI_select = None
908
+ if 'ROI_frame' not in st.session_state:
909
+ dupe_frame = st.session_state['display_contest_info'][['BaseName', 'EntryCount', 'finish', 'payout']]
910
+ dupe_frame['Total Fees'] = dupe_frame['EntryCount'] * st.session_state['entry_fee']
911
+ dupe_frame['Total Payout'] = dupe_frame['payout'].sum()
912
+ dupe_frame['ROI'] = (dupe_frame['Total Payout'] / dupe_frame['Total Fees'])
913
+ dupe_frame = dupe_frame[['BaseName', 'EntryCount', 'finish', 'payout', 'ROI']].drop_duplicates(subset='BaseName', keep='first')
914
+ st.session_state['ROI_frame'] = dupe_frame.sort_values(by='ROI', ascending=False)
915
+ if user_ROI_var == 'Specific':
916
+ st.session_state['ROI_frame'] = st.session_state['ROI_frame'][st.session_state['ROI_frame']['BaseName'].isin(user_ROI_select)]
917
+
918
+ # Initialize pagination in session state if not exists
919
+ if 'ROI_page' not in st.session_state:
920
+ st.session_state.ROI_page = 1
921
+
922
+ # Calculate total pages
923
+ rows_per_page = 50
924
+ total_rows = len(st.session_state['ROI_frame'])
925
+ total_pages = (total_rows + rows_per_page - 1) // rows_per_page
926
+
927
+ # Create pagination controls in a single row
928
+ pagination_cols = st.columns([4, 1, 1, 1, 4])
929
+ with pagination_cols[1]:
930
+ if st.button(f"Previous ROI Page"):
931
+ if st.session_state['ROI_page'] > 1:
932
+ st.session_state.ROI_page -= 1
933
+
934
+ with pagination_cols[3]:
935
+ if st.button(f"Next ROI Page"):
936
+ st.session_state.ROI_page += 1
937
+
938
+ # Calculate start and end indices for current page
939
+ start_ROI_idx = (st.session_state.ROI_page - 1) * rows_per_page
940
+ end_ROI_idx = min((st.session_state.ROI_page) * rows_per_page, total_rows)
941
+
942
+ st.dataframe(st.session_state['ROI_frame'].iloc[start_ROI_idx:end_ROI_idx].style.
943
+ background_gradient(cmap='RdYlGn', subset=['ROI'], axis=0), hide_index=True)
944
+ st.download_button(label="Download ROI Info", data=st.session_state['ROI_frame'].to_csv(index=False), file_name="ROI_info.csv", mime="text/csv", key='ROI_exp_comp_download')
945
+ else:
946
+ st.write('No ROI info available')