Spaces:
Running
Running
Commit
·
6663675
1
Parent(s):
ed6729a
docs: update copilot instructions and project plan for improved workflow and user experience
Browse files- app.py +33 -3
- changelog.md +10 -4
app.py
CHANGED
|
@@ -861,6 +861,29 @@ def on_event_select(event_name):
|
|
| 861 |
return None
|
| 862 |
|
| 863 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 864 |
def create_input_station_map(selected_stations, epicenter_lat, epicenter_lon):
|
| 865 |
"""創建輸入測站分布地圖:顯示所有測站 + 突顯被選中的 25 個"""
|
| 866 |
import folium
|
|
@@ -1225,9 +1248,9 @@ with gr.Blocks(title="TTSAM 震度預測系統") as demo:
|
|
| 1225 |
|
| 1226 |
# 綁定事件
|
| 1227 |
event_dropdown.change(
|
| 1228 |
-
fn=
|
| 1229 |
-
inputs=[event_dropdown],
|
| 1230 |
-
outputs=[observed_intensity_image]
|
| 1231 |
)
|
| 1232 |
|
| 1233 |
load_waveform_btn.click(
|
|
@@ -1242,4 +1265,11 @@ with gr.Blocks(title="TTSAM 震度預測系統") as demo:
|
|
| 1242 |
outputs=[observed_intensity_image, predicted_intensity_map, stats_output]
|
| 1243 |
)
|
| 1244 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1245 |
demo.launch()
|
|
|
|
| 861 |
return None
|
| 862 |
|
| 863 |
|
| 864 |
+
def on_event_change(event_name, start_time, duration, epicenter_lon, epicenter_lat):
|
| 865 |
+
"""
|
| 866 |
+
當選擇事件時,同時更新波形地圖、波形圖、實際觀測圖
|
| 867 |
+
|
| 868 |
+
Returns:
|
| 869 |
+
(station_map_html, waveform_plot, info_text, observed_intensity_path)
|
| 870 |
+
"""
|
| 871 |
+
try:
|
| 872 |
+
# 同時更新波形地圖
|
| 873 |
+
station_map_html, waveform_plot, info_text, _ = load_and_display_waveform(
|
| 874 |
+
event_name, start_time, duration, epicenter_lon, epicenter_lat
|
| 875 |
+
)
|
| 876 |
+
|
| 877 |
+
# 同時更新實際觀測圖
|
| 878 |
+
observed_intensity_path = load_observed_intensity_image(event_name)
|
| 879 |
+
|
| 880 |
+
return station_map_html, waveform_plot, info_text, observed_intensity_path
|
| 881 |
+
|
| 882 |
+
except Exception as e:
|
| 883 |
+
logger.error(f"事件切換時發生錯誤: {e}")
|
| 884 |
+
return None, None, f"錯誤: {str(e)}", None
|
| 885 |
+
|
| 886 |
+
|
| 887 |
def create_input_station_map(selected_stations, epicenter_lat, epicenter_lon):
|
| 888 |
"""創建輸入測站分布地圖:顯示所有測站 + 突顯被選中的 25 個"""
|
| 889 |
import folium
|
|
|
|
| 1248 |
|
| 1249 |
# 綁定事件
|
| 1250 |
event_dropdown.change(
|
| 1251 |
+
fn=on_event_change,
|
| 1252 |
+
inputs=[event_dropdown, start_slider, duration_slider, epicenter_lon_input, epicenter_lat_input],
|
| 1253 |
+
outputs=[input_station_map, waveform_plot, info_output, observed_intensity_image]
|
| 1254 |
)
|
| 1255 |
|
| 1256 |
load_waveform_btn.click(
|
|
|
|
| 1265 |
outputs=[observed_intensity_image, predicted_intensity_map, stats_output]
|
| 1266 |
)
|
| 1267 |
|
| 1268 |
+
# 應用啟動時自動載入預設地震事件的波形
|
| 1269 |
+
demo.load(
|
| 1270 |
+
fn=on_event_change,
|
| 1271 |
+
inputs=[event_dropdown, start_slider, duration_slider, epicenter_lon_input, epicenter_lat_input],
|
| 1272 |
+
outputs=[input_station_map, waveform_plot, info_output, observed_intensity_image]
|
| 1273 |
+
)
|
| 1274 |
+
|
| 1275 |
demo.launch()
|
changelog.md
CHANGED
|
@@ -4,6 +4,13 @@
|
|
| 4 |
|
| 5 |
## [Unreleased]
|
| 6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
### Changed
|
| 8 |
- **規格理念調整**:從「穩定可靠系統」改為「互動式教育展示 Demo」
|
| 9 |
- 強調預裝化設計:所有資源(模型、Vs30、波形、測站表)預裝於 HF Space,無需運行時下載
|
|
@@ -24,10 +31,9 @@
|
|
| 24 |
- 更新「快速參考」與「進一步閱讀」指向新的模塊化規格
|
| 25 |
- 更新「專案結構」說明 spec 資料夾的模塊化檔案
|
| 26 |
|
| 27 |
-
|
| 28 |
-
-
|
| 29 |
-
-
|
| 30 |
-
- 完整的錯誤處理策略文檔(`spec/03-error-handling.md`)
|
| 31 |
|
| 32 |
### Fixed
|
| 33 |
- (待填)
|
|
|
|
| 4 |
|
| 5 |
## [Unreleased]
|
| 6 |
|
| 7 |
+
### Added
|
| 8 |
+
- **UI 流程自動化**(2025-10-26)
|
| 9 |
+
- 應用啟動時自動載入預設地震事件的波形地圖(測站分布 + 波形圖)
|
| 10 |
+
- 地震事件切換時同步自動更新波形地圖與實際觀測圖
|
| 11 |
+
- 新增 `on_event_change()` callback 協調多個 UI 組件的聯動更新
|
| 12 |
+
- 新增 `demo.load` 事件綁定,實現應用啟動自動初始化
|
| 13 |
+
|
| 14 |
### Changed
|
| 15 |
- **規格理念調整**:從「穩定可靠系統」改為「互動式教育展示 Demo」
|
| 16 |
- 強調預裝化設計:所有資源(模型、Vs30、波形、測站表)預裝於 HF Space,無需運行時下載
|
|
|
|
| 31 |
- 更新「快速參考」與「進一步閱讀」指向新的模塊化規格
|
| 32 |
- 更新「專案結構」說明 spec 資料夾的模塊化檔案
|
| 33 |
|
| 34 |
+
- **Gradio 事件綁定優化**
|
| 35 |
+
- `event_dropdown.change` 現使用 `on_event_change()` 而非 `on_event_select()`
|
| 36 |
+
- 一次事件切換可同時更新波形地圖、波形圖、實際觀測圖
|
|
|
|
| 37 |
|
| 38 |
### Fixed
|
| 39 |
- (待填)
|