diff --git a/gracedb/views.py b/gracedb/views.py index c3d75f76a4a458d674abf7d3f04bb2a82763a348..43bcea295b6ef5f860085a776ffccdddae6e6d2d 100644 --- a/gracedb/views.py +++ b/gracedb/views.py @@ -416,6 +416,30 @@ def search(request): { 'form' : form }, context_instance=RequestContext(request)) +def timeline(request): + import simplejson + from templatetags.timeutil import gpsToUtc + from django.utils import dateformat + + response = HttpResponse(mimetype='application/javascript') + events = [] + for event in Event.objects.exclude(group__name="Test").all(): + if event.gpstime: + t = dateformat.format(gpsToUtc(event.gpstime), "F j, Y h:i:s")+" UTC" + + events.append({ + 'start': t, + 'title': event.get_analysisType_display(), + 'description': + "%s<br/>%s" %(event.get_analysisType_display(),"GPS time:%s"%event.gpstime), + 'durationEvent':False, + }) + d = {'events': events} + msg = simplejson.dumps(d) + response['Content-length'] = len(msg) + response.write(msg) + return response + #----------------------------------------------------------------- # Things that aren't views and should really be elsewhere. #----------------------------------------------------------------- diff --git a/static/js/timeline.js b/static/js/timeline.js new file mode 100644 index 0000000000000000000000000000000000000000..30f530e605f3a24113f0daa933a53bc9f8ed8569 --- /dev/null +++ b/static/js/timeline.js @@ -0,0 +1,47 @@ +var tl; + +var eventSource = new Timeline.DefaultEventSource(); + +function onLoad() { + var bandInfos = [ + Timeline.createBandInfo({ + eventSource: eventSource, + //date: "Sat May 20 1961 00:00:00 GMT-0600", + width: "70%", + intervalUnit: Timeline.DateTime.HOUR, + intervalPixels: 100 + }), + Timeline.createBandInfo({ + eventSource: eventSource, + //date: "Sat May 20 1961 00:00:00 GMT-0600", + width: "15%", + intervalUnit: Timeline.DateTime.DAY, + intervalPixels: 100, + overview: true + }), + Timeline.createBandInfo({ + eventSource: eventSource, + //date: "Sat May 20 1961 00:00:00 GMT-0600", + width: "15%", + intervalUnit: Timeline.DateTime.MONTH, + intervalPixels: 200, + overview: true + }) + ]; + bandInfos[1].syncWith = 0; + bandInfos[1].highlight = true; + bandInfos[2].syncWith = 1; + bandInfos[2].highlight = true; + tl = Timeline.create(document.getElementById("tl"), bandInfos); + Timeline.loadJSON("/gracedb/events/timeline", + function(json, url) { eventSource.loadJSON(json, url); }); +} +var resizeTimerID = null; +function onResize() { + if (resizeTimerID == null) { + resizeTimerID = window.setTimeout(function() { + resizeTimerID = null; + tl.layout(); + }, 500); + } +} diff --git a/templates/base.html b/templates/base.html index 551c3140478f9089ee4b0af8d680229aa1b199c0..327c19629bc478e5dceb6b3c5a0b20cac2bd7191 100644 --- a/templates/base.html +++ b/templates/base.html @@ -17,9 +17,10 @@ function changeTime(obj, label) { } </script> <!-- END TESTING --> +{% block jscript %}{% endblock %} </head> -<body id="{% block pageid %}{% endblock %}"> +<body id="{% block pageid %}{% endblock %}"{% block bodyattrs %}{% endblock %}> <div id="header"> <!-- Header -->