James McCool
commited on
Commit
·
1b1d1f9
1
Parent(s):
84af75a
adding ROI info tab
Browse files
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')
|