"""Run: streamlit run app/ui/dashboard.py"""
import pandas as pd
import plotly.graph_objects as go
import streamlit as st
from sqlalchemy import text
from app.db.database import engine
from app.indicators.registry import INDICATORS

st.set_page_config(page_title="NIFTY Gap Lab", layout="wide")
st.title("NIFTY Next-Day Gap Lab")
symbol = st.selectbox("Instrument", ["NIFTY 50", "GIFT NIFTY", "INDIA VIX", "USDINR", "EURINR", "GBPINR", "JPYINR", "USDJPY"])
selected = st.multiselect("Indicators", list(INDICATORS))
frame = pd.read_sql(text("SELECT observed_at, ltp FROM market_ticks WHERE symbol = :symbol ORDER BY observed_at"), engine, params={"symbol": symbol})
if frame.empty:
    st.info("No data yet. Configure .env then run app.jobs.collect_snapshot.")
else:
    frame["observed_at"] = pd.to_datetime(frame["observed_at"])
    figure = go.Figure(go.Scatter(x=frame.observed_at, y=frame.ltp, name="LTP"))
    for name in selected:
        figure.add_trace(go.Scatter(x=frame.observed_at, y=INDICATORS[name](frame.ltp), name=name))
    st.plotly_chart(figure, use_container_width=True)
