Redesign welcome screen with step cards, feature table, and info boxes
Browse files
app.py
CHANGED
|
@@ -846,39 +846,77 @@ report: CleaningReport | None = st.session_state.cleaning_report
|
|
| 846 |
|
| 847 |
if cleaned_df is None or not y_cols:
|
| 848 |
st.title("Time Series Visualizer")
|
| 849 |
-
st.
|
| 850 |
-
|
| 851 |
-
)
|
| 852 |
|
| 853 |
-
|
| 854 |
-
|
| 855 |
-
|
|
|
|
| 856 |
st.markdown(
|
| 857 |
-
"
|
| 858 |
-
|
| 859 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 860 |
)
|
|
|
|
| 861 |
st.markdown(
|
| 862 |
-
"
|
| 863 |
-
|
| 864 |
-
"-
|
| 865 |
-
"-
|
| 866 |
-
"-
|
| 867 |
-
|
|
|
|
|
|
|
|
|
|
| 868 |
)
|
| 869 |
-
with
|
| 870 |
-
st.subheader("How to Use")
|
| 871 |
st.markdown(
|
| 872 |
-
"
|
| 873 |
-
|
| 874 |
-
"
|
| 875 |
-
"
|
| 876 |
-
"
|
| 877 |
-
|
|
|
|
|
|
|
|
|
|
| 878 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 879 |
st.markdown(
|
| 880 |
-
"
|
| 881 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 882 |
)
|
| 883 |
|
| 884 |
st.stop()
|
|
|
|
| 846 |
|
| 847 |
if cleaned_df is None or not y_cols:
|
| 848 |
st.title("Time Series Visualizer")
|
| 849 |
+
st.caption("ISA 444 · Miami University · Farmer School of Business")
|
| 850 |
+
|
| 851 |
+
st.markdown("") # spacer
|
| 852 |
|
| 853 |
+
# --- Getting started steps as visual cards ---
|
| 854 |
+
st.markdown("#### Get Started in 3 Steps")
|
| 855 |
+
c1, c2, c3 = st.columns(3)
|
| 856 |
+
with c1:
|
| 857 |
st.markdown(
|
| 858 |
+
'<div style="background:#F5F5F5; border-radius:8px; padding:1rem; '
|
| 859 |
+
'border-left:4px solid #C41230; height:100%;">'
|
| 860 |
+
'<div style="font-size:1.6rem; font-weight:700; color:#C41230;">1</div>'
|
| 861 |
+
'<div style="font-weight:600; margin:0.3rem 0 0.2rem;">Load Data</div>'
|
| 862 |
+
'<div style="font-size:0.82rem; color:#444;">'
|
| 863 |
+
'Upload a CSV from the sidebar or pick one of the built-in demo datasets.'
|
| 864 |
+
'</div></div>',
|
| 865 |
+
unsafe_allow_html=True,
|
| 866 |
)
|
| 867 |
+
with c2:
|
| 868 |
st.markdown(
|
| 869 |
+
'<div style="background:#F5F5F5; border-radius:8px; padding:1rem; '
|
| 870 |
+
'border-left:4px solid #C41230; height:100%;">'
|
| 871 |
+
'<div style="font-size:1.6rem; font-weight:700; color:#C41230;">2</div>'
|
| 872 |
+
'<div style="font-weight:600; margin:0.3rem 0 0.2rem;">Pick Columns</div>'
|
| 873 |
+
'<div style="font-size:0.82rem; color:#444;">'
|
| 874 |
+
'Select a date column and one or more numeric value columns. '
|
| 875 |
+
'The app auto-detects sensible defaults.'
|
| 876 |
+
'</div></div>',
|
| 877 |
+
unsafe_allow_html=True,
|
| 878 |
)
|
| 879 |
+
with c3:
|
|
|
|
| 880 |
st.markdown(
|
| 881 |
+
'<div style="background:#F5F5F5; border-radius:8px; padding:1rem; '
|
| 882 |
+
'border-left:4px solid #C41230; height:100%;">'
|
| 883 |
+
'<div style="font-size:1.6rem; font-weight:700; color:#C41230;">3</div>'
|
| 884 |
+
'<div style="font-weight:600; margin:0.3rem 0 0.2rem;">Explore</div>'
|
| 885 |
+
'<div style="font-size:0.82rem; color:#444;">'
|
| 886 |
+
'Choose from 9+ chart types, view summary statistics, '
|
| 887 |
+
'and get AI-powered chart interpretation.'
|
| 888 |
+
'</div></div>',
|
| 889 |
+
unsafe_allow_html=True,
|
| 890 |
)
|
| 891 |
+
|
| 892 |
+
st.markdown("") # spacer
|
| 893 |
+
|
| 894 |
+
# --- Features and privacy ---
|
| 895 |
+
f1, f2 = st.columns(2)
|
| 896 |
+
with f1:
|
| 897 |
+
st.markdown("#### Features")
|
| 898 |
st.markdown(
|
| 899 |
+
"| | |\n"
|
| 900 |
+
"|:--|:--|\n"
|
| 901 |
+
"| **Smart Import** | Auto-detect delimiters, dates, and numeric formats |\n"
|
| 902 |
+
"| **9+ Chart Types** | Line, seasonal, ACF/PACF, decomposition, lag, and more |\n"
|
| 903 |
+
"| **Multi-Series** | Panel (small multiples) and spaghetti plots |\n"
|
| 904 |
+
"| **AI Insights** | GPT vision analyzes your charts and returns structured interpretation |\n"
|
| 905 |
+
"| **QueryChat** | Natural-language data filtering powered by DuckDB |"
|
| 906 |
+
)
|
| 907 |
+
with f2:
|
| 908 |
+
st.markdown("#### Good to Know")
|
| 909 |
+
st.info(
|
| 910 |
+
"**Privacy** — All data processing happens in-memory. "
|
| 911 |
+
"No data is stored on disk. Only chart images (never raw data) "
|
| 912 |
+
"are sent to OpenAI when you click *Interpret Chart with AI*.",
|
| 913 |
+
icon="\U0001f512",
|
| 914 |
+
)
|
| 915 |
+
st.info(
|
| 916 |
+
"**Demo Datasets** — Three built-in datasets are available in the sidebar: "
|
| 917 |
+
"monthly retail sales (single series), quarterly revenue by region (wide), "
|
| 918 |
+
"and daily stock prices with 20 tickers (long).",
|
| 919 |
+
icon="\U0001f4ca",
|
| 920 |
)
|
| 921 |
|
| 922 |
st.stop()
|