@@ -301,8 +301,8 @@ def device_dashboard_view(request):
301
301
selected_resource_type = None
302
302
graph_data = None
303
303
304
- percentile_25 = None
305
- percentile_75 = None
304
+ timestamps = []
305
+ values = []
306
306
307
307
# Handle endpoint selection
308
308
if 'endpoint' in request .GET :
@@ -339,13 +339,32 @@ def device_dashboard_view(request):
339
339
selected_endpoint .battery_voltage = battery_voltage .int_value if battery_voltage else None
340
340
341
341
if 'resource_type' in request .GET :
342
- selected_resource_type = get_object_or_404 (ResourceType , id = request .GET ['resource_type' ])
343
- last_seven_days = timezone .now () - timedelta (days = 30 )
344
- resources = Resource .objects .filter (
345
- endpoint = selected_endpoint ,
346
- resource_type = selected_resource_type ,
347
- timestamp_created__gte = last_seven_days
348
- ).order_by ('timestamp_created' )
342
+ if 'event_type' in request .GET and request .GET ['event_type' ] is not '' :
343
+ selected_resource_type = get_object_or_404 (ResourceType ,
344
+ id = request .GET ['resource_type' ])
345
+ last_event = Event .objects .filter (
346
+ endpoint = selected_endpoint ,
347
+ event_type = request .GET ['event_type' ]
348
+ ).order_by ('-time' ).first ()
349
+
350
+ evt_resources = EventResource .objects .filter (
351
+ event = last_event
352
+ ).order_by ('resource__timestamp_created' )
353
+
354
+ resources = []
355
+ for evt_resource in evt_resources :
356
+ if evt_resource .resource .resource_type == selected_resource_type :
357
+ resources .append (evt_resource .resource )
358
+
359
+ else :
360
+ selected_resource_type = get_object_or_404 (ResourceType ,
361
+ id = request .GET ['resource_type' ])
362
+ last_seven_days = timezone .now () - timedelta (days = 30 )
363
+ resources = Resource .objects .filter (
364
+ endpoint = selected_endpoint ,
365
+ resource_type = selected_resource_type ,
366
+ timestamp_created__gte = last_seven_days
367
+ ).order_by ('timestamp_created' )
349
368
350
369
timestamps = [resource .timestamp_created .strftime ('%Y-%m-%d %H:%M:%S' ) for resource in resources ]
351
370
values = [
@@ -354,57 +373,28 @@ def device_dashboard_view(request):
354
373
else resource .int_value if selected_resource_type .data_type == 'TIME'
355
374
else None for resource in resources
356
375
]
357
-
358
- if values :
359
- percentile_25 = np .percentile (values , 25 )
360
- percentile_75 = np .percentile (values , 75 )
361
-
362
376
graph_data = {
363
377
'timestamps' : timestamps ,
364
378
'values' : values
365
379
}
366
380
367
-
368
381
resource_types = ResourceType .objects .filter (data_type__in = ['INTEGER' , 'FLOAT' , 'TIME' ])
382
+ event_types = Event .objects .values_list ('event_type' , flat = True ).distinct ()
369
383
370
384
if request .headers .get ('X-Requested-With' ) == 'XMLHttpRequest' :
371
- if 'endpoint' in request .GET and 'resource_type' in request .GET :
372
- selected_endpoint = get_object_or_404 (Endpoint , endpoint = request .GET ['endpoint' ])
373
- selected_resource_type = get_object_or_404 (ResourceType , id = request .GET ['resource_type' ])
374
- last_thirty_days = timezone .now () - timedelta (days = 30 )
375
- resources = Resource .objects .filter (
376
- endpoint = selected_endpoint ,
377
- resource_type = selected_resource_type ,
378
- timestamp_created__gte = last_thirty_days
379
- ).order_by ('timestamp_created' )
380
- timestamps = [resource .timestamp_created .strftime ('%Y-%m-%d %H:%M:%S' ) for resource in resources ]
381
- values = [
382
- resource .int_value if selected_resource_type .data_type == 'INTEGER'
383
- else resource .float_value if selected_resource_type .data_type == 'FLOAT'
384
- else resource .int_value if selected_resource_type .data_type == 'TIME'
385
- else None for resource in resources
386
- ]
387
-
388
- if values :
389
- percentile_25 = np .percentile (values , 25 )
390
- percentile_75 = np .percentile (values , 75 )
391
-
392
- return JsonResponse ({
385
+ return JsonResponse ({
393
386
'timestamps' : timestamps ,
394
387
'values' : values ,
395
388
'resource_name' : selected_resource_type .name ,
396
- 'percentile_25' : percentile_25 ,
397
- 'percentile_75' : percentile_75
398
389
})
399
390
400
391
context = {
401
392
'endpoints' : endpoints ,
402
393
'selected_endpoint' : selected_endpoint ,
403
394
'resource_types' : resource_types ,
395
+ 'event_types' : event_types ,
404
396
'selected_resource_type' : selected_resource_type ,
405
397
'graph_data' : graph_data ,
406
- 'percentile_25' : percentile_25 ,
407
- 'percentile_75' : percentile_75 ,
408
398
}
409
399
410
400
return render (request , 'device_dashboard.html' , context )
0 commit comments