Commit 4816cef4f64959d2d95fd094fd1b2389bd09879c
1 parent
c69afa1c
Exists in
master
and in
3 other branches
Refactor some more.
Showing
4 changed files
with
57 additions
and
47 deletions
Show diff stats
web/run.py
... | ... | @@ -271,8 +271,6 @@ def get_orbiter_csv(source): |
271 | 271 | except: |
272 | 272 | abort(400, "Invalid stopped_at parameter : '%s'." % stopped_at) |
273 | 273 | |
274 | - | |
275 | - source_config = get_source_config(orbiter) | |
276 | 274 | # todo: iterate on models when there are many |
277 | 275 | try: |
278 | 276 | model_slug = source_config['models'][0]['slug'] | ... | ... |
web/static/js/swapp.js
... | ... | @@ -75,6 +75,38 @@ |
75 | 75 | }); |
76 | 76 | return promise; |
77 | 77 | }; |
78 | + SpaceWeather.prototype.createTimeSeries = function(data){ | |
79 | + var timeSeries; | |
80 | + timeSeries = []; | |
81 | + this.configuration['parameters'].forEach(function(parameter){ | |
82 | + var container, id, title; | |
83 | + container = this.configuration['time_series_container']; | |
84 | + id = parameter['id']; | |
85 | + title = parameter['title']; | |
86 | + if (!(id in data)) { | |
87 | + console.error("No data for id '" + id + "'.", data); | |
88 | + } | |
89 | + return timeSeries.push(new TimeSeries(id, title, data[id], container)); | |
90 | + }); | |
91 | + return timeSeries.forEach(function(ts){ | |
92 | + ts.options['onMouseOver'] = function(){ | |
93 | + return timeSeries.forEach(function(ts2){ | |
94 | + return ts2.showCursor(); | |
95 | + }); | |
96 | + }; | |
97 | + ts.options['onMouseOut'] = function(){ | |
98 | + return timeSeries.forEach(function(ts2){ | |
99 | + return ts2.hideCursor(); | |
100 | + }); | |
101 | + }; | |
102 | + return ts.options['onMouseMove'] = function(t){ | |
103 | + timeSeries.forEach(function(ts2){ | |
104 | + return ts2.moveCursor(t); | |
105 | + }); | |
106 | + return typeof orbits != 'undefined' && orbits !== null ? orbits.moveToDate(t) : void 8; | |
107 | + }; | |
108 | + }); | |
109 | + }; | |
78 | 110 | return SpaceWeather; |
79 | 111 | }()); |
80 | 112 | Source = (function(){ | ... | ... |
web/static/js/swapp.ls
... | ... | @@ -57,6 +57,25 @@ export class SpaceWeather |
57 | 57 | ) |
58 | 58 | promise |
59 | 59 | |
60 | + createTimeSeries: (data) -> | |
61 | + timeSeries = [] | |
62 | + @configuration['parameters'].forEach((parameter) -> | |
63 | + container = @configuration['time_series_container'] | |
64 | + id = parameter['id'] ; title = parameter['title'] | |
65 | + if id not of data then console.error("No data for id '#{id}'.", data) | |
66 | + timeSeries.push(new TimeSeries(id, title, data[id], container)) | |
67 | + ) | |
68 | + timeSeries.forEach((ts) -> | |
69 | + ts.options['onMouseOver'] = -> | |
70 | + timeSeries.forEach((ts2) -> ts2.showCursor()) | |
71 | + ts.options['onMouseOut'] = -> | |
72 | + timeSeries.forEach((ts2) -> ts2.hideCursor()) | |
73 | + ts.options['onMouseMove'] = (t) -> | |
74 | + timeSeries.forEach((ts2) -> ts2.moveCursor(t)) | |
75 | + orbits?.moveToDate(t) | |
76 | + ) | |
77 | + | |
78 | + | |
60 | 79 | |
61 | 80 | |
62 | 81 | class Source | ... | ... |
web/view/home.html.jinja2
... | ... | @@ -213,53 +213,14 @@ jQuery().ready(function($){ |
213 | 213 | |
214 | 214 | var sw = new SpaceWeather(configuration); |
215 | 215 | sw.loadData('jupiter', '2016-01-01T00:00:00', '2023-01-01T00:00:00').then( |
216 | - function (data) { console.log('OK', data); }, | |
217 | - function (data) { console.log('Failed', data); } | |
216 | + function (data) { | |
217 | + console.log('OK', data); | |
218 | + sw.createTimeSeries(data); | |
219 | + orbits = new Orbits(configuration.sources, data['hci'], configuration.orbits_container); | |
220 | + }, | |
221 | + function (data) { console.error('Failed to load SW data.', data); } | |
218 | 222 | ); |
219 | 223 | |
220 | - d3.csv('{{ url_for('get_orbiter_csv', source='jupiter', started_at='2016-03-19T00:00:00', stopped_at='2022-01-01T00:00:00') }}', function(csv){ | |
221 | - var timeFormat = d3.timeParse('%Y-%m-%dT%H:%M:%S%Z'); | |
222 | - var data = {'hci': []}; | |
223 | - configuration['parameters'].forEach(function(parameter){ | |
224 | - data[parameter['id']] = []; | |
225 | - }); | |
226 | - csv.forEach(function (d) { | |
227 | - var dtime = timeFormat(d['time']); | |
228 | - configuration['parameters'].forEach(function(parameter){ | |
229 | - var id = parameter['id']; | |
230 | - data[id].push({x: dtime, y: parseFloat(d[id])}); | |
231 | - }); | |
232 | - if (d['xhci'] && d['yhci']) { | |
233 | - data['hci'].push({t: dtime, x: parseFloat(d['xhci']), y: parseFloat(d['yhci'])}); | |
234 | - } | |
235 | - }); | |
236 | - | |
237 | - var container = '#time_series'; | |
238 | - | |
239 | - configuration['parameters'].forEach(function(parameter){ | |
240 | - var id = parameter['id']; | |
241 | - var title = parameter['title']; | |
242 | - timeSeries.push(new TimeSeries(id, title, data[id], container)); | |
243 | - }); | |
244 | - // move outside (after promises) | |
245 | - timeSeries.forEach(function(ts){ | |
246 | - ts.options['onMouseOver'] = function() { | |
247 | - timeSeries.forEach(function(ts2){ ts2.showCursor(); }); | |
248 | - }; | |
249 | - ts.options['onMouseOut'] = function() { | |
250 | - timeSeries.forEach(function(ts2){ ts2.hideCursor(); }); | |
251 | - }; | |
252 | - ts.options['onMouseMove'] = function(t) { | |
253 | - timeSeries.forEach(function(ts2){ ts2.moveCursor(t); }); | |
254 | - if (orbits != null) orbits.moveToDate(t); | |
255 | - }; | |
256 | - }); | |
257 | - | |
258 | - | |
259 | - orbits = new Orbits(configuration.sources, data['hci'], configuration.orbits_container); | |
260 | - | |
261 | - }); | |
262 | - | |
263 | 224 | var toggleTimeSeries = function(slug) { |
264 | 225 | $('#time_series .'+slug).toggleClass('hidden'); |
265 | 226 | }; | ... | ... |