This commit is contained in:
sam 2025-10-06 13:44:41 +08:00
parent 11f67b9fc5
commit 687db15681

View File

@ -109,33 +109,22 @@ def render_market_visualization() -> None:
end_store_key = "market_end_date_value" end_store_key = "market_end_date_value"
start_widget_key = "market_start_date_picker" start_widget_key = "market_start_date_picker"
end_widget_key = "market_end_date_picker" end_widget_key = "market_end_date_picker"
# 初始化或更新session状态
if last_ts_code != ts_code: if last_ts_code != ts_code:
session["market_selected_ts_code"] = ts_code session["market_selected_ts_code"] = ts_code
session[start_store_key] = default_start session[start_store_key] = default_start
session[end_store_key] = default_end session[end_store_key] = default_end
session[start_widget_key] = default_start
session[end_widget_key] = default_end
else:
start_state = session.get(start_store_key, default_start)
end_state = session.get(end_store_key, default_end)
if min_date:
start_state = min(max(start_state, min_date), max_date)
end_state = min(max(end_state, min_date), max_date)
if start_state > end_state:
start_state = max(min_date or start_state, max_date - timedelta(days=30))
end_state = max_date
session[start_store_key] = start_state
session[end_store_key] = end_state
if session.get(start_widget_key) != start_state:
session[start_widget_key] = start_state
if session.get(end_widget_key) != end_state:
session[end_widget_key] = end_state
# 使用columns实现横向布局
col1, col2 = st.columns(2) col1, col2 = st.columns(2)
if last_ts_code != ts_code:
# 第一次加载时直接使用默认值初始化widget
with col1: with col1:
start_date = st.date_input( start_date = st.date_input(
"开始日期", "开始日期",
value=session.get(start_store_key, default_start), value=default_start,
key=start_widget_key, key=start_widget_key,
min_value=min_date, min_value=min_date,
max_value=max_date, max_value=max_date,
@ -143,7 +132,25 @@ def render_market_visualization() -> None:
with col2: with col2:
end_date = st.date_input( end_date = st.date_input(
"结束日期", "结束日期",
value=session.get(end_store_key, default_end), value=default_end,
key=end_widget_key,
min_value=min_date,
max_value=max_date,
)
else:
# 后续加载时直接使用widget的当前值
with col1:
start_date = st.date_input(
"开始日期",
value=session.get(start_widget_key, default_start),
key=start_widget_key,
min_value=min_date,
max_value=max_date,
)
with col2:
end_date = st.date_input(
"结束日期",
value=session.get(end_widget_key, default_end),
key=end_widget_key, key=end_widget_key,
min_value=min_date, min_value=min_date,
max_value=max_date, max_value=max_date,