From b1e129bff08076fcd7dfe3ef9c3a98c8f1712a26 Mon Sep 17 00:00:00 2001 From: Openclaw Date: Sun, 29 Mar 2026 01:33:07 -0700 Subject: Improve UX and disable DCF for financials --- app.py | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) (limited to 'app.py') diff --git a/app.py b/app.py index 78b503f..6db7f0a 100644 --- a/app.py +++ b/app.py @@ -63,6 +63,10 @@ from components.news import render_news from services.data_service import get_company_info, search_tickers +if "ticker" not in st.session_state: + st.session_state["ticker"] = "AAPL" + + # ── Sidebar ────────────────────────────────────────────────────────────────── with st.sidebar: @@ -70,34 +74,40 @@ with st.sidebar: st.caption("Financial Analysis Dashboard") st.divider() - # Search input - query = st.text_input( - "Search company or ticker", - placeholder="e.g. Apple, AAPL, MSFT…", - key="search_query", - ).strip() - - # Autocomplete: show results if query looks like a search term (not a bare ticker) - selected_symbol = None - if query: - results = search_tickers(query) + with st.form("ticker_search_form", clear_on_submit=False): + query = st.text_input( + "Search company or ticker", + placeholder="e.g. Apple, AAPL, MSFT…", + key="search_query", + ).strip() + + results = search_tickers(query) if query else [] + selected_symbol = None + if results: options = {f"{r['symbol']} — {r['name']} ({r['exchange']})": r["symbol"] for r in results} choice = st.selectbox( - "Select", + "Matches", options=list(options.keys()), label_visibility="collapsed", ) selected_symbol = options[choice] - else: - # Treat the raw input as a direct ticker + elif query: selected_symbol = query.upper() - if st.button("Analyze", use_container_width=True, type="primary"): - if selected_symbol: - st.session_state["ticker"] = selected_symbol + submitted = st.form_submit_button("Open", use_container_width=True, type="primary") + + if submitted and selected_symbol: + st.session_state["ticker"] = selected_symbol + + st.caption(f"Currently viewing: **{st.session_state['ticker']}**") + + quick_cols = st.columns(4) + for col, symbol in zip(quick_cols, ["AAPL", "MSFT", "NVDA", "JPM"]): + if col.button(symbol, use_container_width=True): + st.session_state["ticker"] = symbol - ticker = st.session_state.get("ticker", "AAPL") + ticker = st.session_state["ticker"] # Quick company info in sidebar st.divider() -- cgit v1.3-2-g0d8e