From 9e1cccd3b60143a31ede5b1325e1ffbeaf6c83ea Mon Sep 17 00:00:00 2001 From: "Bobby (aider)" Date: Mon, 10 Feb 2025 22:49:09 -0800 Subject: [PATCH] feat: Add unique keys to selectboxes to resolve duplicate element ID error --- src/streamlit_app.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/streamlit_app.py b/src/streamlit_app.py index 75d7407..f7bbdd0 100644 --- a/src/streamlit_app.py +++ b/src/streamlit_app.py @@ -161,7 +161,8 @@ def trading_journal_page(): if add_to_existing: position_id = st.selectbox( "Select Position ID", - options=[pos['position_id'] for pos in existing_positions] + options=[pos['position_id'] for pos in existing_positions], + key="position_select" ) else: position_id = generate_position_id(ticker) @@ -177,7 +178,7 @@ def trading_journal_page(): with col2: stop_loss = st.number_input("Stop Loss", min_value=0.01, step=0.01) strategy = st.text_input("Strategy") - order_type = st.selectbox("Order Type", ["Market", "Limit"]) + order_type = st.selectbox("Order Type", ["Market", "Limit"], key="add_trade_order_type") entry_date = st.date_input("Entry Date") entry_time = st.time_input("Entry Time") @@ -220,7 +221,8 @@ def trading_journal_page(): trade_id = st.selectbox( "Select Trade to Update", options=[t['id'] for t in open_trades], - format_func=lambda x: f"{next(t['ticker'] for t in open_trades if t['id'] == x)} - {x}" + format_func=lambda x: f"{next(t['ticker'] for t in open_trades if t['id'] == x)} - {x}", + key="trade_select" ) trade = next(t for t in open_trades if t['id'] == trade_id) @@ -235,7 +237,8 @@ def trading_journal_page(): new_stop = st.number_input("Stop Loss", value=float(trade['stop_loss'])) new_strategy = st.text_input("Strategy", value=trade['strategy']) new_order_type = st.selectbox("Order Type", ["Market", "Limit"], - index=0 if trade['order_type'] == "Market" else 1) + index=0 if trade['order_type'] == "Market" else 1, + key="update_trade_order_type") new_notes = st.text_area("Notes", value=trade['notes'] if trade['notes'] else "") @@ -300,7 +303,8 @@ def technical_scanner_page(): with scanner_tab: scanner_type = st.selectbox( "Select Scanner", - ["SunnyBands", "ATR-EMA", "ATR-EMA v2"] + ["SunnyBands", "ATR-EMA", "ATR-EMA v2"], + key="tech_scanner_type" ) col1, col2 = st.columns(2) @@ -343,7 +347,8 @@ def technical_scanner_page(): selected_report = st.selectbox( "Select Report", options=reports, - format_func=lambda x: f"{x['name']} ({x['created'].strftime('%Y-%m-%d %H:%M')})" + format_func=lambda x: f"{x['name']} ({x['created'].strftime('%Y-%m-%d %H:%M')})", + key="tech_scanner_report" ) if selected_report: @@ -452,7 +457,8 @@ def canslim_screener_page(): selected_report = st.selectbox( "Select Report", options=reports, - format_func=lambda x: f"{x['name']} ({x['created'].strftime('%Y-%m-%d %H:%M')})" + format_func=lambda x: f"{x['name']} ({x['created'].strftime('%Y-%m-%d %H:%M')})", + key="canslim_scanner_report" ) if selected_report: