Spaces:
Sleeping
Sleeping
James McCool
commited on
Commit
·
e39607b
1
Parent(s):
0157a17
Refactor download options in app.py: comment out the previous download options logic for clarity, and implement a new selection mechanism for displaying either the portfolio or export base, enhancing user experience and functionality in data export processes.
Browse files
app.py
CHANGED
|
@@ -1002,100 +1002,115 @@ with tab2:
|
|
| 1002 |
st.session_state['export_merge'] = st.session_state['working_frame'].copy()
|
| 1003 |
|
| 1004 |
with col2:
|
| 1005 |
-
with st.expander("Download options"):
|
| 1006 |
-
|
| 1007 |
-
|
| 1008 |
-
|
| 1009 |
-
|
| 1010 |
-
|
| 1011 |
-
|
| 1012 |
-
|
| 1013 |
-
|
| 1014 |
-
|
| 1015 |
-
|
| 1016 |
-
|
| 1017 |
-
|
| 1018 |
-
|
| 1019 |
-
|
| 1020 |
-
|
| 1021 |
|
| 1022 |
-
|
| 1023 |
-
|
| 1024 |
|
| 1025 |
-
|
| 1026 |
-
|
| 1027 |
-
|
| 1028 |
|
| 1029 |
-
|
| 1030 |
-
|
| 1031 |
-
|
| 1032 |
-
|
| 1033 |
-
|
| 1034 |
-
|
| 1035 |
-
|
| 1036 |
-
|
| 1037 |
-
|
| 1038 |
-
|
| 1039 |
-
|
| 1040 |
-
|
| 1041 |
-
|
| 1042 |
-
|
| 1043 |
-
|
| 1044 |
-
|
| 1045 |
-
|
| 1046 |
-
|
| 1047 |
-
|
| 1048 |
|
| 1049 |
-
|
| 1050 |
|
| 1051 |
-
|
| 1052 |
-
|
| 1053 |
-
|
| 1054 |
-
|
| 1055 |
|
| 1056 |
-
|
| 1057 |
-
|
| 1058 |
-
|
| 1059 |
-
|
| 1060 |
-
|
| 1061 |
-
|
| 1062 |
-
|
| 1063 |
-
|
| 1064 |
-
|
| 1065 |
-
|
| 1066 |
-
|
| 1067 |
-
|
| 1068 |
|
| 1069 |
-
|
| 1070 |
-
|
| 1071 |
-
|
| 1072 |
-
|
| 1073 |
-
|
| 1074 |
-
|
| 1075 |
-
|
| 1076 |
-
|
| 1077 |
-
|
| 1078 |
-
|
| 1079 |
-
|
| 1080 |
-
|
| 1081 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1082 |
if 'export_file' in st.session_state:
|
| 1083 |
-
download_port, merge_port, blank_export_col = st.columns([1, 1, 8])
|
| 1084 |
with download_port:
|
| 1085 |
st.download_button(label="Download Portfolio", data=st.session_state['export_file'].to_csv(index=False), file_name="portfolio.csv", mime="text/csv")
|
| 1086 |
with merge_port:
|
| 1087 |
-
if st.button("Add to
|
| 1088 |
st.session_state['export_base'] = pd.concat([st.session_state['export_base'], st.session_state['export_merge']])
|
| 1089 |
st.session_state['export_base'] = st.session_state['export_base'].drop_duplicates()
|
| 1090 |
st.session_state['export_base'] = st.session_state['export_base'].reset_index(drop=True)
|
| 1091 |
-
|
| 1092 |
-
|
| 1093 |
-
|
| 1094 |
-
|
| 1095 |
-
if display_frame_source == 'Portfolio':
|
| 1096 |
-
display_frame = st.session_state['working_frame']
|
| 1097 |
-
elif display_frame_source == 'Export Base':
|
| 1098 |
-
display_frame = st.session_state['export_base']
|
| 1099 |
total_rows = len(display_frame)
|
| 1100 |
rows_per_page = 500
|
| 1101 |
total_pages = (total_rows + rows_per_page - 1) // rows_per_page # Ceiling division
|
|
|
|
| 1002 |
st.session_state['export_merge'] = st.session_state['working_frame'].copy()
|
| 1003 |
|
| 1004 |
with col2:
|
| 1005 |
+
# with st.expander("Download options"):
|
| 1006 |
+
# if stack_dict is not None:
|
| 1007 |
+
# download_type = st.selectbox("Simple or Advanced Download?", options=['Simple', 'Advanced'], key='download_choice')
|
| 1008 |
+
# if download_type == 'Simple':
|
| 1009 |
+
# st.session_state['export_file'] = st.session_state['working_frame'].copy()
|
| 1010 |
+
# for col in st.session_state['export_file'].columns:
|
| 1011 |
+
# if col not in excluded_cols:
|
| 1012 |
+
# st.session_state['export_file'][col] = st.session_state['export_file'][col].map(st.session_state['export_dict'])
|
| 1013 |
+
# else:
|
| 1014 |
+
# with st.form(key='stack_form'):
|
| 1015 |
+
# st.subheader("Stack Count Adjustments")
|
| 1016 |
+
# st.info("This allows you to fine tune the stacks that you wish to export. If you want to make sure you don't export any of a specific stack you can 0 it out.")
|
| 1017 |
+
# # Create a container for stack value inputs
|
| 1018 |
+
# sort_container = st.container()
|
| 1019 |
+
# with sort_container:
|
| 1020 |
+
# sort_var = st.selectbox("Sort export portfolio by:", options=['median', 'Lineup Edge', 'Own'])
|
| 1021 |
|
| 1022 |
+
# # Get unique stack values
|
| 1023 |
+
# unique_stacks = sorted(list(set(stack_dict.values())))
|
| 1024 |
|
| 1025 |
+
# # Create a dictionary to store stack multipliers
|
| 1026 |
+
# if 'stack_multipliers' not in st.session_state:
|
| 1027 |
+
# st.session_state.stack_multipliers = {stack: 0.0 for stack in unique_stacks}
|
| 1028 |
|
| 1029 |
+
# # Create columns for the stack inputs
|
| 1030 |
+
# num_cols = 6 # Number of columns to display
|
| 1031 |
+
# for i in range(0, len(unique_stacks), num_cols):
|
| 1032 |
+
# cols = st.columns(num_cols)
|
| 1033 |
+
# for j, stack in enumerate(unique_stacks[i:i+num_cols]):
|
| 1034 |
+
# with cols[j]:
|
| 1035 |
+
# # Create a unique key for each number input
|
| 1036 |
+
# key = f"stack_count_{stack}"
|
| 1037 |
+
# # Get the current count of this stack in the portfolio
|
| 1038 |
+
# current_stack_count = len(st.session_state['working_frame'][st.session_state['working_frame']['Stack'] == stack])
|
| 1039 |
+
# # Create number input with current value and max value based on actual count
|
| 1040 |
+
# st.session_state.stack_multipliers[stack] = st.number_input(
|
| 1041 |
+
# f"{stack} count",
|
| 1042 |
+
# min_value=0.0,
|
| 1043 |
+
# max_value=float(current_stack_count),
|
| 1044 |
+
# value=0.0,
|
| 1045 |
+
# step=1.0,
|
| 1046 |
+
# key=key
|
| 1047 |
+
# )
|
| 1048 |
|
| 1049 |
+
# portfolio_copy = st.session_state['working_frame'].copy()
|
| 1050 |
|
| 1051 |
+
# submitted = st.form_submit_button("Submit")
|
| 1052 |
+
# if submitted:
|
| 1053 |
+
# # Create a list to store selected rows
|
| 1054 |
+
# selected_rows = []
|
| 1055 |
|
| 1056 |
+
# # For each stack, select the top N rows based on the count value
|
| 1057 |
+
# for stack in unique_stacks:
|
| 1058 |
+
# if stack in st.session_state.stack_multipliers:
|
| 1059 |
+
# count = int(st.session_state.stack_multipliers[stack])
|
| 1060 |
+
# # Get rows for this stack
|
| 1061 |
+
# stack_rows = portfolio_copy[portfolio_copy['Stack'] == stack]
|
| 1062 |
+
# # Sort by median and take top N rows
|
| 1063 |
+
# top_rows = stack_rows.nlargest(count, sort_var)
|
| 1064 |
+
# selected_rows.append(top_rows)
|
| 1065 |
+
|
| 1066 |
+
# # Combine all selected rows
|
| 1067 |
+
# portfolio_concat = pd.concat(selected_rows)
|
| 1068 |
|
| 1069 |
+
# # Update export_file with filtered data
|
| 1070 |
+
# st.session_state['export_file'] = portfolio_concat.copy()
|
| 1071 |
+
# for col in st.session_state['export_file'].columns:
|
| 1072 |
+
# if col not in excluded_cols:
|
| 1073 |
+
# st.session_state['export_file'][col] = st.session_state['export_file'][col].map(st.session_state['export_dict'])
|
| 1074 |
+
# st.write('Export portfolio updated!')
|
| 1075 |
+
# else:
|
| 1076 |
+
# st.session_state['export_file'] = st.session_state['working_frame'].copy()
|
| 1077 |
+
# if 'export_base' not in st.session_state:
|
| 1078 |
+
# st.session_state['export_base'] = pd.DataFrame(columns=st.session_state['working_frame'].columns)
|
| 1079 |
+
# for col in st.session_state['export_file'].columns:
|
| 1080 |
+
# if col not in excluded_cols:
|
| 1081 |
+
# st.session_state['export_file'][col] = st.session_state['export_file'][col].map(st.session_state['export_dict'])
|
| 1082 |
+
if 'export_base' not in st.session_state:
|
| 1083 |
+
st.session_state['export_base'] = pd.DataFrame(columns=st.session_state['working_frame'].columns)
|
| 1084 |
+
|
| 1085 |
+
display_frame_source = st.selectbox("Display:", options=['Portfolio', 'Export Base'], key='display_frame_source')
|
| 1086 |
+
if display_frame_source == 'Portfolio':
|
| 1087 |
+
display_frame = st.session_state['working_frame']
|
| 1088 |
+
st.session_state['export_file'] = st.session_state['working_frame'].copy()
|
| 1089 |
+
|
| 1090 |
+
for col in st.session_state['export_file'].columns:
|
| 1091 |
+
if col not in excluded_cols:
|
| 1092 |
+
st.session_state['export_file'][col] = st.session_state['export_file'][col].map(st.session_state['export_dict'])
|
| 1093 |
+
elif display_frame_source == 'Export Base':
|
| 1094 |
+
display_frame = st.session_state['export_base']
|
| 1095 |
+
st.session_state['export_file'] = st.session_state['working_frame'].copy()
|
| 1096 |
+
|
| 1097 |
+
for col in st.session_state['export_file'].columns:
|
| 1098 |
+
if col not in excluded_cols:
|
| 1099 |
+
st.session_state['export_file'][col] = st.session_state['export_file'][col].map(st.session_state['export_dict'])
|
| 1100 |
+
|
| 1101 |
if 'export_file' in st.session_state:
|
| 1102 |
+
download_port, merge_port, clear_export, blank_export_col = st.columns([1, 1, 1, 8])
|
| 1103 |
with download_port:
|
| 1104 |
st.download_button(label="Download Portfolio", data=st.session_state['export_file'].to_csv(index=False), file_name="portfolio.csv", mime="text/csv")
|
| 1105 |
with merge_port:
|
| 1106 |
+
if st.button("Add to Custom Export"):
|
| 1107 |
st.session_state['export_base'] = pd.concat([st.session_state['export_base'], st.session_state['export_merge']])
|
| 1108 |
st.session_state['export_base'] = st.session_state['export_base'].drop_duplicates()
|
| 1109 |
st.session_state['export_base'] = st.session_state['export_base'].reset_index(drop=True)
|
| 1110 |
+
with clear_export:
|
| 1111 |
+
if st.button("Clear Custom Export"):
|
| 1112 |
+
st.session_state['export_base'] = pd.DataFrame(columns=st.session_state['working_frame'].columns)
|
| 1113 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1114 |
total_rows = len(display_frame)
|
| 1115 |
rows_per_page = 500
|
| 1116 |
total_pages = (total_rows + rows_per_page - 1) // rows_per_page # Ceiling division
|