James McCool commited on
Commit
55d145d
·
1 Parent(s): 57b18cb

Add Conditional Manager to app.py for lineup filtering options

Browse files

Implemented a new Conditional Manager section that allows users to filter lineups based on player and stack criteria. Users can remove or include specific players or stacks from their lineups, with separate buttons for applying changes to the overall portfolio or exporting custom lineups. This enhances user control over lineup management and improves the overall functionality of the application.

Files changed (1) hide show
  1. app.py +53 -0
app.py CHANGED
@@ -1295,6 +1295,59 @@ with tab2:
1295
  parsed_frame = parsed_frame[parsed_frame['Size'].isin(size_include)]
1296
  st.session_state['export_base'] = parsed_frame.sort_values(by='median', ascending=False).reset_index(drop=True)
1297
  st.session_state['export_merge'] = st.session_state['export_base'].copy()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1298
 
1299
  with st.expander('Trimming Options'):
1300
  with st.form(key='trim_form'):
 
1295
  parsed_frame = parsed_frame[parsed_frame['Size'].isin(size_include)]
1296
  st.session_state['export_base'] = parsed_frame.sort_values(by='median', ascending=False).reset_index(drop=True)
1297
  st.session_state['export_merge'] = st.session_state['export_base'].copy()
1298
+
1299
+ with st.expander('Conditional Manager'):
1300
+ with st.form(key='conditional_manager_form'):
1301
+ player_names = set()
1302
+ for col in st.session_state['working_frame'].columns:
1303
+ if col not in excluded_cols:
1304
+ player_names.update(st.session_state['working_frame'][col].unique())
1305
+ st.write(st.multiselect("Remove: ", options=['Players', 'Stacks'], default=[], key='conditional_var_1'), "if lineup ", st.multiselect("contains: ", options=['Players', 'Stacks'], default=[], key='conditional_var_2'))
1306
+ if st.session_state['conditional_var_1'] == 'Players':
1307
+ conditional_remove = st.multiselect("Remove lineups containing players:", options=sorted(list(player_names)), default=[])
1308
+ elif st.session_state['conditional_var_1'] == 'Stacks':
1309
+ conditional_remove = st.multiselect("Remove lineups containing stacks:", options=sorted(list(set(st.session_state['stack_dict'].values()))), default=[])
1310
+ if st.session_state['conditional_var_2'] == 'Players':
1311
+ conditional_include = st.multiselect("Where lineups contain players:", options=sorted(list(player_names)), default=[])
1312
+ elif st.session_state['conditional_var_2'] == 'Stacks':
1313
+ conditional_include = st.multiselect("Where lineups contain stack:", options=sorted(list(set(st.session_state['stack_dict'].values()))), default=[])
1314
+
1315
+ submitted_col, export_col = st.columns(2)
1316
+ st.info("Portfolio Button applies to your overall Portfolio, Export button applies to your Custom Export")
1317
+ with submitted_col:
1318
+ reg_submitted = st.form_submit_button("Portfolio")
1319
+ with export_col:
1320
+ exp_submitted = st.form_submit_button("Export")
1321
+ if reg_submitted:
1322
+ st.session_state['settings_base'] = False
1323
+ parsed_frame = st.session_state['working_frame'].copy()
1324
+ if st.session_state['conditional_var_1'] == 'Players':
1325
+ if st.session_state['conditional_var_2'] == 'Players':
1326
+ parsed_frame = parsed_frame[~parsed_frame['player_names'].isin(conditional_remove)] & parsed_frame[parsed_frame['player_names'].isin(conditional_include)]
1327
+ elif st.session_state['conditional_var_2'] == 'Stacks':
1328
+ parsed_frame = parsed_frame[~parsed_frame['Stack'].isin(conditional_remove)] & parsed_frame[parsed_frame['Stack'].isin(conditional_include)]
1329
+ elif st.session_state['conditional_var_1'] == 'Stacks':
1330
+ if st.session_state['conditional_var_2'] == 'Players':
1331
+ parsed_frame = parsed_frame[parsed_frame['player_names'].isin(conditional_include)] & parsed_frame[~parsed_frame['player_names'].isin(conditional_remove)]
1332
+ elif st.session_state['conditional_var_2'] == 'Stacks':
1333
+ parsed_frame = parsed_frame[parsed_frame['Stack'].isin(conditional_include)] & parsed_frame[~parsed_frame['Stack'].isin(conditional_remove)]
1334
+ st.session_state['working_frame'] = parsed_frame.sort_values(by='median', ascending=False).reset_index(drop=True)
1335
+ st.session_state['export_merge'] = st.session_state['working_frame'].copy()
1336
+ elif exp_submitted:
1337
+ st.session_state['settings_base'] = False
1338
+ parsed_frame = st.session_state['export_base'].copy()
1339
+ if st.session_state['conditional_var_1'] == 'Players':
1340
+ if st.session_state['conditional_var_2'] == 'Players':
1341
+ parsed_frame = parsed_frame[~parsed_frame['player_names'].isin(conditional_remove)] & parsed_frame[parsed_frame['player_names'].isin(conditional_include)]
1342
+ elif st.session_state['conditional_var_2'] == 'Stacks':
1343
+ parsed_frame = parsed_frame[~parsed_frame['Stack'].isin(conditional_remove)] & parsed_frame[parsed_frame['Stack'].isin(conditional_include)]
1344
+ elif st.session_state['conditional_var_1'] == 'Stacks':
1345
+ if st.session_state['conditional_var_2'] == 'Players':
1346
+ parsed_frame = parsed_frame[parsed_frame['player_names'].isin(conditional_include)] & parsed_frame[~parsed_frame['player_names'].isin(conditional_remove)]
1347
+ elif st.session_state['conditional_var_2'] == 'Stacks':
1348
+ parsed_frame = parsed_frame[parsed_frame['Stack'].isin(conditional_include)] & parsed_frame[~parsed_frame['Stack'].isin(conditional_remove)]
1349
+ st.session_state['export_base'] = parsed_frame.sort_values(by='median', ascending=False).reset_index(drop=True)
1350
+ st.session_state['export_merge'] = st.session_state['export_base'].copy()
1351
 
1352
  with st.expander('Trimming Options'):
1353
  with st.form(key='trim_form'):