shrijayan commited on
Commit
cb429aa
·
verified ·
1 Parent(s): 10f0173

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -6
app.py CHANGED
@@ -207,6 +207,9 @@ threading.Thread(target=background_updates, daemon=True).start()
207
  with gr.Blocks(title="Website Status Monitor") as demo:
208
  gr.Markdown("# 🚦 Website Status Monitor")
209
 
 
 
 
210
  def update_ui():
211
  data = monitor.load_data()
212
  metrics = monitor.get_metrics(data)
@@ -217,31 +220,41 @@ with gr.Blocks(title="Website Status Monitor") as demo:
217
  with gr.Row():
218
  with gr.Column(scale=1):
219
  status_color = "#4CAF50" if metric['current_status'] == 'UP' else "#F44336"
220
- gr.Markdown(f"### {name}\n"
221
  f"**Status:** <span style='color: {status_color}'>"
222
  f"{metric['current_status']}</span>\n"
223
  f"**Last Response:** {np.mean(metric['response_times'][-5:]):.2f}s\n"
224
  f"**24h Uptime:** {metric['uptime']*100:.1f}%")
 
225
 
226
  with gr.Column(scale=2):
227
- gr.Plot(plots[f"{name}_response"], label="Response Times")
 
228
 
229
  with gr.Column(scale=1):
230
- gr.Plot(plots[f"{name}_uptime"], label="Uptime")
 
231
 
232
  with gr.Accordion("Incident History", open=False):
233
  if not metric['incidents']:
234
- gr.Markdown("No incidents in past 24 hours")
 
235
  else:
236
  for incident in metric['incidents'][-5:]:
237
  duration = incident['duration'] or "Ongoing"
238
- gr.Markdown(f"**Start:** {incident['start']}\n"
239
  f"**End:** {incident['end'] or 'Still down'}\n"
240
  f"**Duration:** {duration}s\n")
 
241
 
242
  return elements
243
 
244
- demo.load(update_ui, outputs=gr.get_all_components())
 
 
 
 
 
245
 
246
  if __name__ == "__main__":
247
  demo.launch(server_name="0.0.0.0", server_port=int(os.getenv("PORT", 7860)))
 
207
  with gr.Blocks(title="Website Status Monitor") as demo:
208
  gr.Markdown("# 🚦 Website Status Monitor")
209
 
210
+ # Create placeholders for dynamic components
211
+ status_components = []
212
+
213
  def update_ui():
214
  data = monitor.load_data()
215
  metrics = monitor.get_metrics(data)
 
220
  with gr.Row():
221
  with gr.Column(scale=1):
222
  status_color = "#4CAF50" if metric['current_status'] == 'UP' else "#F44336"
223
+ status_markdown = gr.Markdown(f"### {name}\n"
224
  f"**Status:** <span style='color: {status_color}'>"
225
  f"{metric['current_status']}</span>\n"
226
  f"**Last Response:** {np.mean(metric['response_times'][-5:]):.2f}s\n"
227
  f"**24h Uptime:** {metric['uptime']*100:.1f}%")
228
+ elements.append(status_markdown)
229
 
230
  with gr.Column(scale=2):
231
+ response_plot = gr.Plot(plots[f"{name}_response"], label="Response Times")
232
+ elements.append(response_plot)
233
 
234
  with gr.Column(scale=1):
235
+ uptime_plot = gr.Plot(plots[f"{name}_uptime"], label="Uptime")
236
+ elements.append(uptime_plot)
237
 
238
  with gr.Accordion("Incident History", open=False):
239
  if not metric['incidents']:
240
+ incident_markdown = gr.Markdown("No incidents in past 24 hours")
241
+ elements.append(incident_markdown)
242
  else:
243
  for incident in metric['incidents'][-5:]:
244
  duration = incident['duration'] or "Ongoing"
245
+ incident_markdown = gr.Markdown(f"**Start:** {incident['start']}\n"
246
  f"**End:** {incident['end'] or 'Still down'}\n"
247
  f"**Duration:** {duration}s\n")
248
+ elements.append(incident_markdown)
249
 
250
  return elements
251
 
252
+ # Initialize the UI with placeholders
253
+ initial_elements = update_ui()
254
+ status_components.extend(initial_elements)
255
+
256
+ # Load the UI with the specified components
257
+ demo.load(update_ui, outputs=status_components)
258
 
259
  if __name__ == "__main__":
260
  demo.launch(server_name="0.0.0.0", server_port=int(os.getenv("PORT", 7860)))