"""Orders tab: order history with agent / status / date filters.""" from __future__ import annotations import streamlit as st from web.views.common import describe_symbol, query_df def render() -> None: orders = query_df( "SELECT trade_date, agent, ticker, side, qty, est_price, stop_price, take_price, " "status, alpaca_order_id, submitted_at FROM orders ORDER BY submitted_at DESC LIMIT 500" ) if orders.empty: st.info("No orders placed yet.") return c1, c2, c3 = st.columns(3) agents = ["all", *sorted(orders["agent"].dropna().unique())] dates = ["all", *sorted(orders["trade_date"].dropna().unique(), reverse=True)] agent = c1.selectbox("Agent", agents) date = c2.selectbox("Date", dates) status = c3.selectbox("Status", ["all", "ok", "errors"]) view = orders if agent != "all": view = view[view["agent"] == agent] if date != "all": view = view[view["trade_date"] == date] if status == "errors": view = view[view["status"].astype(str).str.startswith("error")] elif status == "ok": view = view[~view["status"].astype(str).str.startswith("error")] view = view.copy() view.insert(3, "instrument", view["ticker"].map(describe_symbol)) st.caption(f"{len(view)} orders") st.dataframe(view, use_container_width=True, hide_index=True)