@@ -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 |
|
|
53 | 52 | }); |
|
54 | 53 | |
|
55 | 54 | var label; |
|
56 |
|
|
|
57 | label = "[LT]"; | |
|
58 | ||
|
59 | //} | |
|
60 |
|
|
|
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 |
|
|
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 |
|
|
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 |
|
|
|
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 |
|
|
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 |
|
|
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 |
|
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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. |
|
|
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 |
|
|
|
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': d |
|
|
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