Commit a79c5268a07736cbee9331479e6a27b252f9c40e
1 parent
11662eed
Exists in
master
and in
3 other branches
Add probes and comets. (still locked)
Showing
4 changed files
with
143 additions
and
24 deletions
Show diff stats
config.yml
... | ... | @@ -35,6 +35,68 @@ authors: |
35 | 35 | role: Project Coordinator |
36 | 36 | mail: vincent.genot@irap.omp.eu |
37 | 37 | |
38 | +# `slug` used internally, and should match [a-z0-9]+ | |
39 | +# `name` is displayed | |
40 | +# `title` appears on mouse hover | |
41 | +# `locked` is for sources that are "coming soon" | |
42 | +# `default` sources are shown to incoming visitors, others need user activation | |
43 | +sources: | |
44 | + - type: 'planet' | |
45 | + slug: 'mercury' | |
46 | + name: 'Mercury' | |
47 | + title: 'Mercury (coming soon)' | |
48 | + locked: true | |
49 | + default: true | |
50 | + - type: 'planet' | |
51 | + slug: 'venus' | |
52 | + name: 'Venus' | |
53 | + title: 'Venus (coming soon)' | |
54 | + locked: true | |
55 | + default: true | |
56 | + - type: 'planet' | |
57 | + slug: 'earth' | |
58 | + name: 'Earth' | |
59 | + title: 'Earth (coming soon)' | |
60 | + locked: true | |
61 | + default: true | |
62 | + - type: 'planet' | |
63 | + slug: 'mars' | |
64 | + name: 'Mars' | |
65 | + title: 'Mars (coming soon)' | |
66 | + locked: true | |
67 | + default: true | |
68 | + - type: 'planet' | |
69 | + slug: 'jupiter' | |
70 | + name: 'Jupiter' | |
71 | + title: 'Jupiter' | |
72 | + locked: false | |
73 | + default: true | |
74 | + - type: 'planet' | |
75 | + slug: 'saturn' | |
76 | + name: 'Saturn' | |
77 | + title: 'Saturn (coming soon)' | |
78 | + locked: true | |
79 | + default: true | |
80 | + - type: 'probe' | |
81 | + slug: 'rosetta' | |
82 | + name: 'Rosetta' | |
83 | + title: 'Rosetta (coming soon)' | |
84 | + locked: true | |
85 | + default: false | |
86 | + - type: 'probe' | |
87 | + slug: 'juno' | |
88 | + name: 'Juno' | |
89 | + title: 'Juno (coming soon)' | |
90 | + locked: true | |
91 | + default: false | |
92 | + - type: 'comet' | |
93 | + slug: 'tchouri' | |
94 | + name: 'Tchouri' | |
95 | + title: 'Tchouri (coming soon)' | |
96 | + locked: true | |
97 | + default: false | |
98 | + | |
99 | + | |
38 | 100 | # Tao Model OMNI_input |
39 | 101 | #Rosetta tao_ros_sw 2014-01-01T00:00 2017-01-21T00:00 |
40 | 102 | #Juno cruise tao_juno_sw 2012-01-01T00:00 2016-11-02T22:00 | ... | ... |
web/run.py
... | ... | @@ -157,7 +157,12 @@ def favicon(): |
157 | 157 | @app.route("/home.html") |
158 | 158 | @app.route("/index.html") |
159 | 159 | def home(): |
160 | - return render_view('home.html.jinja2', {}) | |
160 | + return render_view('home.html.jinja2', { | |
161 | + 'sources': config['sources'], | |
162 | + 'planets': [s for s in config['sources'] if s['type'] == 'planet'], | |
163 | + 'probes': [s for s in config['sources'] if s['type'] == 'probe'], | |
164 | + 'comets': [s for s in config['sources'] if s['type'] == 'comet'], | |
165 | + }) | |
161 | 166 | |
162 | 167 | |
163 | 168 | @app.route("/inspect") |
... | ... | @@ -194,19 +199,23 @@ def get_csv(): |
194 | 199 | times = cdf_handle.variables['Time'] |
195 | 200 | data_v = cdf_handle.variables['V'] |
196 | 201 | data_b = cdf_handle.variables['B'] |
202 | + data_t = cdf_handle.variables['T'] | |
203 | + data_n = cdf_handle.variables['N'] | |
197 | 204 | data_p = cdf_handle.variables['P_dyn'] |
205 | + data_a = cdf_handle.variables['Delta_angle'] | |
198 | 206 | cw.writerow(( |
199 | 207 | 'time', |
200 | 208 | 'vrad', 'vtan', 'vlen', |
201 | - 'magn', 'pdyn' | |
209 | + 'magn', 'temp', 'pdyn', 'dens', 'angl' | |
202 | 210 | )) |
203 | - for time, datum_v, datum_b, datum_p in zip(times, data_v, data_b, data_p): | |
211 | + for time, datum_v, datum_b, datum_t, datum_p, datum_n, datum_a in \ | |
212 | + zip(times, data_v, data_b, data_t, data_n, data_p, data_a): | |
204 | 213 | vrad = datum_v[0] |
205 | 214 | vtan = datum_v[1] |
206 | 215 | cw.writerow(( |
207 | 216 | datetime_from_list(time).strftime("%Y-%m-%dT%H:%M:%S+00:00"), |
208 | 217 | vrad, vtan, sqrt(vrad * vrad + vtan * vtan), |
209 | - datum_b, datum_p | |
218 | + datum_b, datum_t, datum_n, datum_p, datum_a | |
210 | 219 | )) |
211 | 220 | cdf_handle.close() |
212 | 221 | |
... | ... | @@ -232,6 +241,7 @@ def get_orbiter_csv(orbiter): |
232 | 241 | abort(400, "Invalid stopped_at parameter : '%s'." % stopped_at) |
233 | 242 | |
234 | 243 | # Grab the list of netCDF files from Myriam's API todo |
244 | + # | |
235 | 245 | |
236 | 246 | si = StringIO.StringIO() |
237 | 247 | cw = csv_writer(si) | ... | ... |
web/view/home.html.jinja2
... | ... | @@ -11,10 +11,33 @@ |
11 | 11 | <span class="mdl-layout-title">Planets</span> |
12 | 12 | |
13 | 13 | <section id="orbiters_filters"> |
14 | - <img title="Jupiter" src="{{ static('img/planet/jupiter_128.png') }}" width="64px" height="64px" alt="Jupiter"> | |
15 | - <img title="Earth (coming soon)" src="{{ static('img/planet/earth_128.png') }}" width="64px" height="64px" alt="Earth (locked)" class="locked"> | |
16 | - <img title="Mars (coming soon)" src="{{ static('img/planet/mars_128.png') }}" width="64px" height="64px" alt="Mars (locked)" class="locked"> | |
14 | +{% for planet in planets %} | |
15 | + <img title="{{ planet.title }}" src="{{ static('img/planet/'~planet.slug~'_128.png') }}" width="64px" height="64px" alt="{{ planet.name }}" class="{{ 'locked' if planet.locked }}"> | |
16 | +{% endfor %} | |
17 | 17 | </section> |
18 | + | |
19 | + <br> | |
20 | + <hr class="clear"> | |
21 | + | |
22 | + <span class="mdl-layout-title">Probes</span> | |
23 | + | |
24 | + <section id="orbiters_filters"> | |
25 | +{% for probe in probes %} | |
26 | + <img title="{{ probe.title }}" src="{{ static('img/probe/'~probe.slug~'_128.png') }}" width="64px" height="64px" alt="{{ probe.name }}" class="{{ 'locked' if probe.locked }}"> | |
27 | +{% endfor %} | |
28 | + </section> | |
29 | + | |
30 | + <br> | |
31 | + <hr class="clear"> | |
32 | + | |
33 | + <span class="mdl-layout-title">Comets</span> | |
34 | + | |
35 | + <section id="orbiters_filters"> | |
36 | +{% for comet in comets %} | |
37 | + <img title="{{ comet.title }}" src="{{ static('img/comet/'~comet.slug~'_128.png') }}" width="64px" height="64px" alt="{{ comet.name }}" class="{{ 'locked' if comet.locked }}"> | |
38 | +{% endfor %} | |
39 | + </section> | |
40 | + | |
18 | 41 | <br> |
19 | 42 | <hr class="clear"> |
20 | 43 | |
... | ... | @@ -22,16 +45,13 @@ |
22 | 45 | |
23 | 46 | <nav id="parameters" class="mdl-navigation"> |
24 | 47 | <a class="mdl-navigation__link parameter active" data-ts-slug="pdyn" href="">Dynamic Pressure</a> |
25 | - <a class="mdl-navigation__link parameter active" data-ts-slug="magn" href="">Magnetism</a> | |
48 | + <a class="mdl-navigation__link parameter active" data-ts-slug="magn" href="">B Tangential</a> | |
26 | 49 | <a class="mdl-navigation__link parameter active" data-ts-slug="vlen" href="">Velocity</a> |
50 | + <a class="mdl-navigation__link parameter active" data-ts-slug="temp" href="">Temperature</a> | |
51 | + <a class="mdl-navigation__link parameter active" data-ts-slug="dens" href="">Density</a> | |
52 | + <a class="mdl-navigation__link parameter active" data-ts-slug="angl" href="">Angle Source-Sun-Earth</a> | |
27 | 53 | </nav> |
28 | 54 | |
29 | - <span class="mdl-layout-title">Options</span> | |
30 | - | |
31 | - <nav class="mdl-navigation"> | |
32 | - <a class="mdl-navigation__link" href="">How is this done?</a> | |
33 | - <a class="mdl-navigation__link" href="">More...</a> | |
34 | - </nav> | |
35 | 55 | </div> |
36 | 56 | <main class="mdl-layout__content"> |
37 | 57 | |
... | ... | @@ -99,6 +119,9 @@ |
99 | 119 | stroke-width: 1px; |
100 | 120 | stroke-dasharray: 5px; |
101 | 121 | } |
122 | + #orbiters_filters { | |
123 | + padding-left: 17px; | |
124 | + } | |
102 | 125 | #orbiters_filters img { |
103 | 126 | float: left; |
104 | 127 | } |
... | ... | @@ -155,11 +178,14 @@ jQuery().ready(function($){ |
155 | 178 | |
156 | 179 | d3.csv('{{ url_for('get_csv') }}', function(csv){ |
157 | 180 | var timeFormat = d3.timeParse('%Y-%m-%dT%H:%M:%S%Z'); |
158 | - var data = {'pdyn': [], 'magn': [], 'vlen': []}; | |
181 | + var data = {'pdyn': [], 'magn': [], 'vlen': [], 'temp': [], 'dens': [], 'angl': []}; | |
159 | 182 | csv.forEach(function (d) { |
160 | 183 | data['pdyn'].push({x: timeFormat(d['time']), y: parseFloat(d['pdyn'])}); |
161 | 184 | data['magn'].push({x: timeFormat(d['time']), y: parseFloat(d['magn'])}); |
162 | 185 | data['vlen'].push({x: timeFormat(d['time']), y: parseFloat(d['vlen'])}); |
186 | + data['temp'].push({x: timeFormat(d['time']), y: parseFloat(d['temp'])}); | |
187 | + data['dens'].push({x: timeFormat(d['time']), y: parseFloat(d['dens'])}); | |
188 | + data['angl'].push({x: timeFormat(d['time']), y: parseFloat(d['angl'])}); | |
163 | 189 | }); |
164 | 190 | |
165 | 191 | var container = '#time_series'; |
... | ... | @@ -172,7 +198,15 @@ jQuery().ready(function($){ |
172 | 198 | timeSeries.push(new TimeSeries( |
173 | 199 | 'vlen', 'Velocity (km/s)', data['vlen'], container |
174 | 200 | )); |
175 | - | |
201 | + timeSeries.push(new TimeSeries( | |
202 | + 'temp', 'Temperature (K)', data['temp'], container | |
203 | + )); | |
204 | + timeSeries.push(new TimeSeries( | |
205 | + 'dens', 'Density N (cm⁻³)', data['dens'], container | |
206 | + )); | |
207 | + timeSeries.push(new TimeSeries( | |
208 | + 'angl', 'Angle T-S-E (deg)', data['angl'], container | |
209 | + )); | |
176 | 210 | // move outside after promises |
177 | 211 | timeSeries.forEach(function(ts){ |
178 | 212 | ts.options['onMouseOver'] = function() { | ... | ... |
web/view/layout.html.jinja2
... | ... | @@ -32,7 +32,7 @@ |
32 | 32 | |
33 | 33 | <header class="mdl-layout__header"> |
34 | 34 | <div class="mdl-layout__header-row"> |
35 | - <span class="mdl-layout-title">CDPP / Space Weather Online</span> | |
35 | + <span class="mdl-layout-title">CDPP / Solar Wind Prediction @ Planets</span> | |
36 | 36 | <!-- Add spacer, to align navigation to the right --> |
37 | 37 | <div class="mdl-layout-spacer"></div> |
38 | 38 | <!-- Navigation. We hide it in small screens. --> |
... | ... | @@ -67,14 +67,27 @@ |
67 | 67 | |
68 | 68 | <footer class="mdl-mini-footer"> |
69 | 69 | <div class="mdl-mini-footer__left-section"> |
70 | - <div class="mdl-logo">v{{ version }}</div> | |
70 | +{# <div class="mdl-logo">v{{ version }}</div>#} | |
71 | + | |
72 | + <p class="disclaimer"> | |
73 | + The <a href="http://www.europlanet-2020-ri.eu/">Europlanet 2020 Research Infrastructure</a> project has received funding | |
74 | + <br> | |
75 | + from the <a href="https://ec.europa.eu/programmes/horizon2020/">European Union's Horizon 2020</a> research and innovation programme | |
76 | + under grant agreement N° 654208. | |
77 | + </p> | |
78 | + | |
71 | 79 | {# <img class="logo" src="{{ static('img/logo/logo_cnrs.png') }}" alt="CNRS" id="logo-cnrs" />#} |
72 | - <ul class="mdl-mini-footer__link-list"> | |
73 | - <li><a href="#">Help</a></li> | |
74 | - <li><a href="#">Sources</a></li> | |
75 | - <li><a href="#">Authors</a></li> | |
76 | - <li><a href="#">Privacy & Terms</a></li> | |
77 | - </ul> | |
80 | +{# <ul class="mdl-mini-footer__link-list">#} | |
81 | +{# <li><a href="#">Help?</a></li>#} | |
82 | +{# <li><a href="#">Sources</a></li>#} | |
83 | +{# <li><a href="#">Authors</a></li>#} | |
84 | +{# <li><a href="#">License</a></li>#} | |
85 | +{# </ul>#} | |
86 | + </div> | |
87 | + <div class="mdl-mini-footer__right-section"> | |
88 | + <img class="logo" src="{{ static('img/logo/logo_cdpp.png') }}" alt="CDPP" id="logo_cdpp" /> | |
89 | + | |
90 | + <img class="logo" src="{{ static('img/logo/logo_europlanet.png') }}" alt="Europlanet" id="logo_europlanet" /> | |
78 | 91 | </div> |
79 | 92 | </footer> |
80 | 93 | ... | ... |