Dineshpopuri commited on
Commit
a086af7
·
verified ·
1 Parent(s): 4613167

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -5
app.py CHANGED
@@ -31,7 +31,7 @@ def generate_sample_data():
31
  "Log_Timestamp": current_date.strftime("%Y-%m-%d %H:%M:%S"),
32
  "Usage_Count": random.randint(0, 50),
33
  "Status": random.choice(["Operational", "Down", "Maintenance"]),
34
- "AMC_Expiry": (current_date + timedelta(days=random.randint(10, 365))).strftime("%Y-%m-%d")
35
  })
36
  current_date += timedelta(days=1)
37
 
@@ -63,12 +63,19 @@ def process_dashboard_data(lab_filter, equipment_type_filter, start_date, end_da
63
  end_date_dt = datetime.strptime(end_date, "%Y-%m-%d")
64
  if start_date_dt > end_date_dt:
65
  return "Error: Start date must be before end date.", None, None, None, "", None
66
- except ValueError as e:
 
 
 
 
 
67
  return f"Error: Invalid date format. Use YYYY-MM-DD (e.g., 2025-05-01). Received: Start={start_date}, End={end_date}", None, None, None, "", None
68
  else:
69
  start_date_dt = datetime(2025, 1, 1)
70
  end_date_dt = datetime(2025, 6, 30)
71
 
 
 
72
  # Apply filters
73
  filtered_devices = devices_df.copy()
74
  if lab_filter != "All":
@@ -85,10 +92,12 @@ def process_dashboard_data(lab_filter, equipment_type_filter, start_date, end_da
85
  (filtered_logs["Log_Date"] >= start_date_str) &
86
  (filtered_logs["Log_Date"] <= end_date_str)
87
  ]
88
- print(f"Filtered logs count: {len(filtered_logs)}") # Debug log
89
 
90
  # Device Cards
91
  device_cards = "Device Cards:\n"
 
 
92
  for _, device in filtered_devices.iterrows():
93
  device_logs = filtered_logs[filtered_logs["Device_ID"] == device["Device_ID"]]
94
  usage_count = device_logs["Usage_Count"].sum() if not device_logs.empty else 0
@@ -172,7 +181,7 @@ def process_dashboard_data(lab_filter, equipment_type_filter, start_date, end_da
172
  with gr.Blocks(title="LabOps Dashboard") as demo:
173
  gr.Markdown("# LabOps Dashboard")
174
  gr.Markdown("Monitor smart lab devices, view usage trends, uptime, anomalies, and export reports.")
175
- gr.Markdown("**Note**: Use the calendar picker to select dates or manually enter in YYYY-MM-DD format (e.g., 2025-05-01). If the calendar picker doesn't appear, enter dates manually.")
176
 
177
  # Filters
178
  gr.Markdown("## Filters")
@@ -189,7 +198,7 @@ with gr.Blocks(title="LabOps Dashboard") as demo:
189
  elem_id="end_date_picker"
190
  )
191
 
192
- # Custom JavaScript to enable browser-native date picker
193
  gr.HTML("""
194
  <script>
195
  document.addEventListener('DOMContentLoaded', function() {
@@ -198,6 +207,10 @@ with gr.Blocks(title="LabOps Dashboard") as demo:
198
  if (startPicker && endPicker) {
199
  startPicker.type = 'date';
200
  endPicker.type = 'date';
 
 
 
 
201
  } else {
202
  console.error('Date picker elements not found');
203
  }
 
31
  "Log_Timestamp": current_date.strftime("%Y-%m-%d %H:%M:%S"),
32
  "Usage_Count": random.randint(0, 50),
33
  "Status": random.choice(["Operational", "Down", "Maintenance"]),
34
+ "AMC_Expiry": (current_date + timedelta(days=random.randint(10, 90))).strftime("%Y-%m-%d")
35
  })
36
  current_date += timedelta(days=1)
37
 
 
63
  end_date_dt = datetime.strptime(end_date, "%Y-%m-%d")
64
  if start_date_dt > end_date_dt:
65
  return "Error: Start date must be before end date.", None, None, None, "", None
66
+ # Check if dates are within sample data range
67
+ data_start = datetime(2025, 1, 1)
68
+ data_end = datetime(2025, 6, 30)
69
+ if start_date_dt < data_start or end_date_dt > data_end:
70
+ return f"Error: Dates must be between 2025-01-01 and 2025-06-30. Received: Start={start_date}, End={end_date}", None, None, None, "", None
71
+ except ValueError:
72
  return f"Error: Invalid date format. Use YYYY-MM-DD (e.g., 2025-05-01). Received: Start={start_date}, End={end_date}", None, None, None, "", None
73
  else:
74
  start_date_dt = datetime(2025, 1, 1)
75
  end_date_dt = datetime(2025, 6, 30)
76
 
77
+ print(f"Input dates: Start={start_date}, End={end_date}") # Debug log
78
+
79
  # Apply filters
80
  filtered_devices = devices_df.copy()
81
  if lab_filter != "All":
 
92
  (filtered_logs["Log_Date"] >= start_date_str) &
93
  (filtered_logs["Log_Date"] <= end_date_str)
94
  ]
95
+ print(f"Filtered logs count: {len(filtered_logs)}") # Debug log
96
 
97
  # Device Cards
98
  device_cards = "Device Cards:\n"
99
+ if filtered_devices.empty:
100
+ device_cards += "No devices match the selected filters.\n"
101
  for _, device in filtered_devices.iterrows():
102
  device_logs = filtered_logs[filtered_logs["Device_ID"] == device["Device_ID"]]
103
  usage_count = device_logs["Usage_Count"].sum() if not device_logs.empty else 0
 
181
  with gr.Blocks(title="LabOps Dashboard") as demo:
182
  gr.Markdown("# LabOps Dashboard")
183
  gr.Markdown("Monitor smart lab devices, view usage trends, uptime, anomalies, and export reports.")
184
+ gr.Markdown("**Note**: Use the calendar picker to select dates in YYYY-MM-DD format (e.g., 2025-05-01 to 2025-05-30). Dates must be between 2025-01-01 and 2025-06-30. If the calendar picker doesn't appear, enter dates manually.")
185
 
186
  # Filters
187
  gr.Markdown("## Filters")
 
198
  elem_id="end_date_picker"
199
  )
200
 
201
+ # Custom JavaScript to enable browser-native date picker with constraints
202
  gr.HTML("""
203
  <script>
204
  document.addEventListener('DOMContentLoaded', function() {
 
207
  if (startPicker && endPicker) {
208
  startPicker.type = 'date';
209
  endPicker.type = 'date';
210
+ startPicker.min = '2025-01-01';
211
+ startPicker.max = '2025-06-30';
212
+ endPicker.min = '2025-01-01';
213
+ endPicker.max = '2025-06-30';
214
  } else {
215
  console.error('Date picker elements not found');
216
  }