Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -78,9 +78,9 @@ def generate_chart():
|
|
| 78 |
|
| 79 |
# Gradio UI
|
| 80 |
with gr.Blocks(theme=gr.themes.Soft()) as app:
|
| 81 |
-
gr.Markdown("#
|
| 82 |
|
| 83 |
-
status_text = gr.Markdown("**Status:**
|
| 84 |
|
| 85 |
with gr.Row():
|
| 86 |
with gr.Column(scale=3):
|
|
@@ -95,19 +95,19 @@ with gr.Blocks(theme=gr.themes.Soft()) as app:
|
|
| 95 |
chart_output = gr.Image(label="Detection Trends")
|
| 96 |
|
| 97 |
with gr.Row():
|
| 98 |
-
pause_btn = gr.Button("
|
| 99 |
-
resume_btn = gr.Button("
|
| 100 |
frame_slider = gr.Slider(0.2, 5, value=1, label="Frame Interval (seconds)")
|
| 101 |
|
| 102 |
def toggle_pause():
|
| 103 |
global paused
|
| 104 |
paused = True
|
| 105 |
-
return "**Status:**
|
| 106 |
|
| 107 |
def toggle_resume():
|
| 108 |
global paused
|
| 109 |
paused = False
|
| 110 |
-
return "**Status:**
|
| 111 |
|
| 112 |
def set_frame_rate(val):
|
| 113 |
global frame_rate
|
|
@@ -117,13 +117,13 @@ with gr.Blocks(theme=gr.themes.Soft()) as app:
|
|
| 117 |
resume_btn.click(toggle_resume, outputs=status_text)
|
| 118 |
frame_slider.change(set_frame_rate, inputs=[frame_slider])
|
| 119 |
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
|
| 126 |
-
app.load(streaming_loop, outputs=[video_output, metrics_output, logs_output, chart_output
|
| 127 |
|
| 128 |
if __name__ == "__main__":
|
| 129 |
app.launch(share=True)
|
|
|
|
| 78 |
|
| 79 |
# Gradio UI
|
| 80 |
with gr.Blocks(theme=gr.themes.Soft()) as app:
|
| 81 |
+
gr.Markdown("# 馃寪 Thermal Anomaly Monitoring Dashboard", elem_id="main-title")
|
| 82 |
|
| 83 |
+
status_text = gr.Markdown("**Status:** 馃煝 Running", elem_id="status-banner")
|
| 84 |
|
| 85 |
with gr.Row():
|
| 86 |
with gr.Column(scale=3):
|
|
|
|
| 95 |
chart_output = gr.Image(label="Detection Trends")
|
| 96 |
|
| 97 |
with gr.Row():
|
| 98 |
+
pause_btn = gr.Button("鈴革笍 Pause")
|
| 99 |
+
resume_btn = gr.Button("鈻讹笍 Resume")
|
| 100 |
frame_slider = gr.Slider(0.2, 5, value=1, label="Frame Interval (seconds)")
|
| 101 |
|
| 102 |
def toggle_pause():
|
| 103 |
global paused
|
| 104 |
paused = True
|
| 105 |
+
return "**Status:** 鈴革笍 Paused"
|
| 106 |
|
| 107 |
def toggle_resume():
|
| 108 |
global paused
|
| 109 |
paused = False
|
| 110 |
+
return "**Status:** 馃煝 Running"
|
| 111 |
|
| 112 |
def set_frame_rate(val):
|
| 113 |
global frame_rate
|
|
|
|
| 117 |
resume_btn.click(toggle_resume, outputs=status_text)
|
| 118 |
frame_slider.change(set_frame_rate, inputs=[frame_slider])
|
| 119 |
|
| 120 |
+
def streaming_loop():
|
| 121 |
+
while True:
|
| 122 |
+
frame, metrics, logs, chart = monitor_feed()
|
| 123 |
+
yield frame, metrics, logs, chart
|
| 124 |
+
time.sleep(frame_rate)
|
| 125 |
|
| 126 |
+
app.load(streaming_loop, outputs=[video_output, metrics_output, logs_output, chart_output])
|
| 127 |
|
| 128 |
if __name__ == "__main__":
|
| 129 |
app.launch(share=True)
|