##// END OF EJS Templates
Fix utc time handling
Juan C. Espinoza -
r44:74ffee4b5884
parent child
Show More
@@ -45,21 +45,18 class PcolorBuffer {
45 45 }
46 46 var t = values.time.map(function (x) {
47 47 var a = new Date(x * 1000);
48 // This condition is used to change from UTC to LT
49 //if (data.metadata.localtime == true){
50 a.setTime( a.getTime() + a.getTimezoneOffset()*60*1000 );
51 //}
48 if (data.metadata.localtime == 0){
49 a.setTime( a.getTime() + a.getTimezoneOffset()*60*1000 );
50 }
52 51 return a;
53 52 });
54 53
55 54 var label;
56 //if (data.metadata.localtime == true){
57 label = "[LT]";
58
59 //}
60 //else{
61 // label = "[UTC]";
62 //}
55 if (data.metadata.localtime == 1){
56 label = "[LT]";
57 }else{
58 label = "[UTC]";
59 }
63 60
64 61 for (var i = 0; i < data['data'].length; i++) {
65 62 var layout = {
@@ -104,8 +101,9 class PcolorBuffer {
104 101 if (this.metadata.zmax) { trace.zmax = this.metadata.zmax }
105 102
106 103 var tm = new Date(this.last * 1000);
107 tm.setTime( tm.getTime() + tm.getTimezoneOffset()*60*1000 );
108
104 if (data.metadata.localtime == 0){
105 tm.setTime( tm.getTime() + tm.getTimezoneOffset()*60*1000 );
106 }
109 107 if ('titles' in this.metadata){
110 108 layout.title = this.metadata.titles[i] + ' - ' + tm.toLocaleString();
111 109 }else{
@@ -217,10 +215,9 class PcolorBuffer {
217 215 cnt += 1;
218 216 this.last += this.interval;
219 217 var newt = new Date((this.last) * 1000);
220 // This condition is used to change from UTC to LT
221 // if (obj.metadata.localtime == true){
222 newt.setTime( newt.getTime() + newt.getTimezoneOffset()*60*1000 );
223 //}
218 if (obj.metadata.localtime == 0){
219 newt.setTime( newt.getTime() + newt.getTimezoneOffset()*60*1000 );
220 }
224 221 this.xbuffer.push(newt);
225 222 for (var i = 0; i < obj['data'].length; i++) {
226 223 this.zbuffer[i].push(this.empty);
@@ -232,10 +229,9 class PcolorBuffer {
232 229 // update buffers
233 230 this.last = parseFloat(obj.time[0]);
234 231 var t = new Date(obj.time[0] * 1000);
235 // This condition is used to change from UTC to LT
236 //if (obj.metadata.localtime == true){
237 t.setTime( t.getTime() + t.getTimezoneOffset()*60*1000 );
238 //}
232 if (obj.metadata.localtime == 0){
233 t.setTime( t.getTime() + t.getTimezoneOffset()*60*1000 );
234 }
239 235 this.xbuffer.push(t);
240 236 for (var i = 0; i < obj['data'].length; i++) {
241 237 this.zbuffer[i].push(obj['data'][i]);
@@ -348,9 +344,9 class Pcolor {
348 344 }
349 345
350 346 var t = new Date(data.time * 1000);
351 //if (data.metadata.localtime == true){
352 t.setTime( t.getTime() + t.getTimezoneOffset()*60*1000 );
353 //}
347 if (data.metadata.localtime == 0){
348 t.setTime( t.getTime() + t.getTimezoneOffset()*60*1000 );
349 }
354 350 if ('titles' in data.metadata){
355 351 layout.title = data.metadata.titles[i] + ' ' + t.toLocaleString();
356 352 }else{
@@ -397,10 +393,9 class Pcolor {
397 393 // add new data to plots and empty buffers
398 394 // // // console.log('Plotting...');
399 395 var t = new Date(obj.time[0] * 1000);
400 // This condition is used to change from UTC to LT
401 //if (obj.metadata.localtime == true){
402 t.setTime( t.getTime() + t.getTimezoneOffset()*60*1000 );
403 //}
396 if (obj.metadata.localtime == 0){
397 t.setTime( t.getTime() + t.getTimezoneOffset()*60*1000 );
398 }
404 399 for (var i = 0; i < this.n; i++) {
405 400 var div = document.getElementById(this.divs[i]);
406 401
@@ -485,9 +480,9 class ScatterBuffer {
485 480 var t = values.time.map(function (x) {
486 481 var a = new Date(x * 1000);
487 482 // This condition is used to change from UTC to LT
488 //if (data.metadata.localtime == true){
489 a.setTime( a.getTime() + a.getTimezoneOffset()*60*1000 );
490 //}
483 if (data.metadata.localtime == 0){
484 a.setTime( a.getTime() + a.getTimezoneOffset()*60*1000 );
485 }
491 486 return a;
492 487 });
493 488
@@ -508,7 +503,11 class ScatterBuffer {
508 503 }
509 504
510 505 var label;
511 label = "[LT]";
506 if (data.metadata.localtime == 1){
507 label = "[LT]";
508 }else{
509 label = "[UTC]";
510 }
512 511
513 512 var layout = {
514 513 height: 300,
@@ -642,10 +641,9 class ScatterBuffer {
642 641 cnt += 1;
643 642 this.last += this.interval;
644 643 var newt = new Date((this.last) * 1000);
645 // This condition is used to change from UTC to LT
646 //if (obj.metadata.localtime == true){
647 newt.setTime( newt.getTime() + newt.getTimezoneOffset()*60*1000 );
648 //}
644 if (obj.metadata.localtime == 0){
645 newt.setTime( newt.getTime() + newt.getTimezoneOffset()*60*1000 );
646 }
649 647 this.xbuffer.push(newt);
650 648 for (var i = 0; i < this.n; i++) {
651 649 this.ybuffer[i].push(null);
@@ -657,10 +655,9 class ScatterBuffer {
657 655 // update buffers
658 656 this.last = parseFloat(obj.time[0]);
659 657 var t = new Date(obj.time[0] * 1000);
660 // This condition is used to change from UTC to LT
661 //if (obj.metadata.localtime == true){
662 t.setTime( t.getTime() + t.getTimezoneOffset()*60*1000 );
663 //}
658 if (obj.metadata.localtime == 0){
659 t.setTime( t.getTime() + t.getTimezoneOffset()*60*1000 );
660 }
664 661 this.xbuffer.push(t);
665 662 for (var i = 0; i < this.n; i++) {
666 663 this.ybuffer[i].push(obj['data'][i][0]);
@@ -3,6 +3,21
3 3 {% block content %}
4 4 <p>Useful tools and data from other partners/observatories.</p>
5 5 <div class="card-columns p-2">
6
7 <div class="card text-justify">
8 <div class="card-body">
9 <h5 class="card-title">DOY Calendar</h5>
10 <p class="card-text">The day of year (DOY) is the sequential day number starting with day 1 on January 1st</p>
11 <input type="date" class="form-control tools-date" id="doy-date" placeholder="yyyy-mm-dd"
12 aria-describedby="validationTooltipSkynoiseDate" value="{% now 'Y-m-d' %}" required>
13 <div class="invalid-tooltip">
14 Please enter a valid date.
15 </div>
16 <p id="pdoy" class="card-text text-center" style="padding-top: 0.5em; font-weight:500; font-size:1.5em; color:var(--secondary);">DOY: {{doy}}</p>
17 </div>
18 </div>
19
20
6 21 <div class="card text-justify">
7 22 <img src="{% static 'images/skynoise.png' %}" class="card-img-top" alt="...">
8 23 <div class="card-body">
@@ -101,8 +116,6
101 116 </div>
102 117 </div>
103 118
104 </div>
105
106 119 <!-- Modal -->
107 120 <div class="modal fade" id="toolModal" tabindex="-1" role="dialog" aria-labelledby="toolModalTitle" aria-hidden="true">
108 121 <div class="modal-dialog modal-lg" role="document">
@@ -124,6 +137,7
124 137
125 138 {% block script %}
126 139 <script>
140
127 141 $('#toolModal').on('show.bs.modal', function (e) {
128 142
129 143 //get data attribute of the clicked element
@@ -139,5 +153,18
139 153 $(e.currentTarget).find('h5').text(title);
140 154 $(e.currentTarget).find('img').attr('src', image);
141 155 });
156
157 $('#doy-date').change(function() {
158 var old = new Date($(this).val());
159 var now = new Date(old.getTime()+old.getTimezoneOffset()*60*1000);
160 var start = new Date(now.getFullYear(), 0, 0);
161 var diff = (now - start) // + ((start.getTimezoneOffset() - now.getTimezoneOffset()) * 60 * 1000);
162 var oneDay = 1000 * 60 * 60 * 24;
163 var doy = Math.floor(diff / oneDay);
164 $('#pdoy').text("DOY: " + doy);
165 console.log(now);
166 console.log(start);
167 });
168
142 169 </script>
143 170 {% endblock script %} No newline at end of file
@@ -71,7 +71,7 class SPCSetupForm(forms.Form):
71 71 def main(request, tag=None):
72 72
73 73 kwargs = {}
74 date = request.GET.get('date', datetime.now().strftime('%d-%m-%Y'))
74 date = request.GET.get('date', datetime.utcnow().strftime('%d-%m-%Y'))
75 75 exps = ExpDetail.objects(date=datetime.strptime(date, '%d-%m-%Y'))
76 76
77 77 tmp = {}
@@ -101,31 +101,26 def main(request, tag=None):
101 101 dum['code'] = exp.experiment.code
102 102 dum['plots'] = []
103 103 dum['name'] = exp.experiment.name
104 dt = datetime.now()
105
106 t = time.mktime(dt.timetuple())
107 t -= 5*60*60
104
105 t = time.time()
108 106
109 107 if (t-exp['last_time']) > 6*exp['interval']:
110 108 status = 'Offline'
111 109 clase = 'alertas-offline'
112 110 style = 'danger'
113 lastDataDate = exp['last_time']
114 111 elif (t-exp['last_time']) > 3*exp['interval']:
115 112 status = 'Delayed'
116 113 clase = 'alertas-delayed'
117 114 style = 'warning'
118 lastDataDate = exp['last_time']
119 115 else:
120 116 status = 'Online'
121 117 clase = 'alertas-online'
122 118 style = 'success'
123 lastDataDate = exp['last_time']
124 119
125 120 dum['status'] = status
126 121 dum['class'] = clase
127 122 dum['style']= style
128 dum['date']= datetime.utcfromtimestamp(lastDataDate)
123 dum['date']= datetime.fromtimestamp(exp['last_time'])
129 124 for plot in exp.plots():
130 125 dum['plots'].append({'plot': plot.plot, 'name': plot.plot.replace('_', ' ').title(), 'id':plot.id})
131 126 experiments.append(dum)
@@ -152,7 +147,8 def tools(request):
152 147 '''
153 148 '''
154 149 kwargs = {
155 'title': 'Tools'
150 'title': 'Tools',
151 'doy': (datetime.today().date()-datetime.today().date().replace(month=1, day=1)).days + 1
156 152 }
157 153 return render(request, 'tools.html', kwargs)
158 154
@@ -171,7 +167,7 def plot(request, code=None, plot=None):
171 167 realtime = False
172 168 date = request.GET.get('date', None)
173 169 if date is None:
174 date = datetime.now().strftime('%d-%m-%Y')
170 date = datetime.utcnow().strftime('%d-%m-%Y')
175 171 realtime = True
176 172 exp = Experiment.objects.get(code=int(code))
177 173 detail = ExpDetail.objects.get(experiment=exp, date=datetime.strptime(date, '%d-%m-%Y'))
@@ -91,14 +91,11 def check_times():
91 91 for detail in exps:
92 92 code = detail.experiment.code
93 93 plot = detail.plots()[0]
94 data_time = detail['last_time']
95 t = time.mktime(dt.timetuple())
96 t -= 5*60*60
97 data_time = detail['last_time'] + 5*60*60
94 t = time.time()
98 95
99 96 message = {
100 97 'code': code,
101 'time': data_time
98 'time': detail['last_time']
102 99 }
103 100
104 101 if (t-detail['last_time']) > 6*detail['interval']:
@@ -136,9 +133,6 def main():
136 133 if not isinstance(buffer, dict):
137 134 print('Invalid data received: {}').format(str(buffer))
138 135 continue
139
140 if buffer['metadata']['localtime'] == True: # Ask which type of time is coming: LT o UTC
141 buffer['time'] -= 5*60*60
142 136
143 137 if not update(buffer):
144 138 print('Updating {} for code {}'.format(
General Comments 0
You need to be logged in to leave comments. Login now