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