DivYonko commited on
Commit ·
9004cb2
1
Parent(s): 003e073
Fix session state widget key conflict - use explicit widget keys
Browse files
app.py
CHANGED
|
@@ -938,17 +938,17 @@ with st.sidebar:
|
|
| 938 |
horizontal=True,
|
| 939 |
key="refresh_rate",
|
| 940 |
)
|
| 941 |
-
msg_limit = st.slider("Message window", 10, 400, 50, step=10)
|
| 942 |
-
auto_refresh = st.toggle("Live auto-refresh", value=True)
|
| 943 |
st.divider()
|
| 944 |
|
| 945 |
# -- Alert Settings --
|
| 946 |
st.markdown('<p style="font-size:0.68rem;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:0.1em;margin-bottom:8px;">Alert Settings</p>', unsafe_allow_html=True)
|
| 947 |
-
alert_enabled = st.toggle("Negative spike alerts", value=True)
|
| 948 |
-
alert_threshold = st.slider("Neg alert threshold (%)", 20, 80, 40) / 100
|
| 949 |
-
alert_window = st.slider("Alert window (msgs)", 5, 30, 15)
|
| 950 |
-
spam_alert_on = st.toggle("Spam rate alerts", value=True)
|
| 951 |
-
spam_threshold = st.slider("Spam alert threshold (%)", 10, 60, 30) / 100
|
| 952 |
st.divider()
|
| 953 |
|
| 954 |
# -- Multi-Stream Scraper Control --
|
|
@@ -1178,21 +1178,10 @@ else:
|
|
| 1178 |
|
| 1179 |
|
| 1180 |
# -- DATA LOAD -----------------------------------------------
|
| 1181 |
-
# Store
|
| 1182 |
-
# Pages do their own data loading; this block just ensures the key is available.
|
| 1183 |
-
|
| 1184 |
-
|
| 1185 |
-
|
| 1186 |
-
# -- STORE SIDEBAR VALUES INTO SESSION STATE ------------------
|
| 1187 |
-
st.session_state["msg_limit"] = msg_limit
|
| 1188 |
-
st.session_state["auto_refresh"] = auto_refresh
|
| 1189 |
-
st.session_state["refresh_rate"] = refresh_rate
|
| 1190 |
-
st.session_state["alert_enabled"] = alert_enabled
|
| 1191 |
-
st.session_state["alert_threshold"] = alert_threshold
|
| 1192 |
-
st.session_state["alert_window"] = alert_window
|
| 1193 |
-
st.session_state["spam_alert_on"] = spam_alert_on
|
| 1194 |
-
st.session_state["spam_threshold"] = spam_threshold
|
| 1195 |
st.session_state["_primary_key"] = _primary_key
|
|
|
|
|
|
|
| 1196 |
|
| 1197 |
# -- MULTI-PAGE NAVIGATION ------------------------------------
|
| 1198 |
comments_page = st.Page("pages/comments.py", title="\U0001f4ac Comments", icon="\U0001f4ac", default=True)
|
|
|
|
| 938 |
horizontal=True,
|
| 939 |
key="refresh_rate",
|
| 940 |
)
|
| 941 |
+
msg_limit = st.slider("Message window", 10, 400, 50, step=10, key="msg_limit")
|
| 942 |
+
auto_refresh = st.toggle("Live auto-refresh", value=True, key="auto_refresh")
|
| 943 |
st.divider()
|
| 944 |
|
| 945 |
# -- Alert Settings --
|
| 946 |
st.markdown('<p style="font-size:0.68rem;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:0.1em;margin-bottom:8px;">Alert Settings</p>', unsafe_allow_html=True)
|
| 947 |
+
alert_enabled = st.toggle("Negative spike alerts", value=True, key="alert_enabled")
|
| 948 |
+
alert_threshold = st.slider("Neg alert threshold (%)", 20, 80, 40, key="alert_threshold_pct") / 100
|
| 949 |
+
alert_window = st.slider("Alert window (msgs)", 5, 30, 15, key="alert_window")
|
| 950 |
+
spam_alert_on = st.toggle("Spam rate alerts", value=True, key="spam_alert_on")
|
| 951 |
+
spam_threshold = st.slider("Spam alert threshold (%)", 10, 60, 30, key="spam_threshold_pct") / 100
|
| 952 |
st.divider()
|
| 953 |
|
| 954 |
# -- Multi-Stream Scraper Control --
|
|
|
|
| 1178 |
|
| 1179 |
|
| 1180 |
# -- DATA LOAD -----------------------------------------------
|
| 1181 |
+
# Store computed values that pages need but can't read directly from widget keys
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1182 |
st.session_state["_primary_key"] = _primary_key
|
| 1183 |
+
st.session_state["alert_threshold"] = alert_threshold # computed: slider_pct / 100
|
| 1184 |
+
st.session_state["spam_threshold"] = spam_threshold # computed: slider_pct / 100
|
| 1185 |
|
| 1186 |
# -- MULTI-PAGE NAVIGATION ------------------------------------
|
| 1187 |
comments_page = st.Page("pages/comments.py", title="\U0001f4ac Comments", icon="\U0001f4ac", default=True)
|