Commit 604616e41b01c56609bf374d2364eeb966fbeacd

Authored by Goutte
1 parent 8f98558e

Misc changes from past two weeks.

  1 +## Nicolas
  2 +
  3 +- prévoir la possibilité à l'utilisateur d'afficher les paramètres (séries temporelles) en échelle log ou linéaire
  4 +- rajouter uranus et neptune comme planètes cibles
  5 +- permettre à l'utilisateur de choisir inner heliosphere (jusqu'à mars) ou outer heliosphere (jusqu'à saturne) pour la visualisation des éphémérides planétaires
  6 +- rajouter MAVEN, New Horizons, Cassini, Galileo, ExoMars comme spacecraft cible
  7 +- rajouter le titre de Heliopropa dans le bandeau du haut (déplacer Planetary Space Weather Services et la version dans le bandeau du bas si besoin)
  8 +- modifier le bandeau du bas pour faire apparaître sur une seule ligne les remerciements à la commission européenne source de financement
  9 +- prévoir la possibilité à l'utilisateur d'afficher le temps en Day Of Year
  10 +- rajouter les ticks sur l'échelle des temps en X
  11 +- quant on zoome modifier l'échelle en Y afin qu'elle s'adapte aux valeurs maximales de l'intervalle du zoom
  12 +- modifier le bandeau vertical d'affichage des choix utilisateurs pour qu'il soit plus petit (en particulier les champs paramètres)
  13 +- ajouter dans le bandeau vertical un onglet INPUT DATA avec 3 choix possibles: STEREO-A, STEREO-B, L1
  14 +- ajouter dans le bandeau vertical un onglet LAYERS avec 3 choix possibles: Jupiter Thermosphere Model, HST Jupiter Observations, HST Saturn Observations
  15 +- ajouter un bouton ALERT qui permet d'ouvrir une nouvelle page de formulaire ou l'utilisateur entrerait les données suivantes:
  16 + * email
  17 + * target (= planète, spacecraft, comet)
  18 + * submit (envoyé ensuite vers un webservice d'AMDA à construire)
  19 +- prévoir un bouton EPN-TAP ou l'on mettrait l'outil en relation avec le client VESPA développé par nathanaël
  20 +- juno/rosetta doivent aussi bouger le long de leur orbite lorsque l'on parcourt à la souris les données de la série temporelle; pour les intervalles de temps où rosetta n'existe plus (crash à la surface de la comète) il faut qu'elle disparaisse; pour les intervalles de temps où juno est en orbite autour de jupiter il faut que juno suive jupiter
  21 +
  22 +
1 ## Future ? 23 ## Future ?
2 24
3 - [ ] Optimize data aggregation (numpy vectorization?) 25 - [ ] Optimize data aggregation (numpy vectorization?)
4 -- [ ] Credit the author of the pixel art planets 26 +- [ ] Credit the author of the pixel art planets (can't find it again)
5 - [ ] Add a README to the download tarball 27 - [ ] Add a README to the download tarball
6 - [ ] Set the log level to _error_ in production (see `web/run.py`) 28 - [ ] Set the log level to _error_ in production (see `web/run.py`)
7 - [ ] CRON statements to call the cache cleanup and warmup 29 - [ ] CRON statements to call the cache cleanup and warmup
8 - [ ] Give the future data another color 30 - [ ] Give the future data another color
9 31
10 -An heliospheric propagation 1D MHD model for solar wind prediction at planets, probes and comets.  
11 32
12 33
13 ## 1.0.0-rc6 34 ## 1.0.0-rc6
14 35
15 - [ ] Rework the images of Rosetta and Juno 36 - [ ] Rework the images of Rosetta and Juno
16 - [ ] Enable p67 37 - [ ] Enable p67
  38 +- [x] Move the version to the footer
  39 +- [x] Fix various issues with spacepy and CDF generation
17 40
18 41
19 ## 1.0.0-rc5 42 ## 1.0.0-rc5
@@ -13,7 +13,8 @@ meta: @@ -13,7 +13,8 @@ meta:
13 - space 13 - space
14 - weather 14 - weather
15 # Will be shown by search engines below the title of the page. 15 # Will be shown by search engines below the title of the page.
16 - description: Space weather predictions around solar celestial bodies. 16 + # Will also be shown in the header if there's enough room
  17 + description: An heliospheric propagation 1D MHD model for solar wind prediction at planets, probes and comets.
17 18
18 # The top bar 19 # The top bar
19 header: 20 header:
@@ -161,6 +162,7 @@ targets: @@ -161,6 +162,7 @@ targets:
161 stopped_at: '2014-08-02T00:00:00' 162 stopped_at: '2014-08-02T00:00:00'
162 - slug: 'p67_orb_all' 163 - slug: 'p67_orb_all'
163 started_at: '2014-08-02T00:00:00' 164 started_at: '2014-08-02T00:00:00'
  165 + #stopped_at: '2016-09-30T11:19:00'
164 parameters: 166 parameters:
165 hee: 'XYZ_HEE' 167 hee: 'XYZ_HEE'
166 models: 168 models:
@@ -174,9 +176,9 @@ targets: @@ -174,9 +176,9 @@ targets:
174 orbit: 176 orbit:
175 models: 177 models:
176 - slug: 'juno_cruise_all' 178 - slug: 'juno_cruise_all'
177 - stopped_at: '2016-07-01T00:00:00' 179 + stopped_at: '2016-07-05T03:53:00'
178 - slug: 'jupiter_orb_all' 180 - slug: 'jupiter_orb_all'
179 - started_at: '2016-07-01T00:00:00' 181 + started_at: '2016-07-05T03:53:00'
180 models: 182 models:
181 - slug: 'tao_juno_sw' 183 - slug: 'tao_juno_sw'
182 locked: false 184 locked: false
@@ -995,6 +995,11 @@ def download_targets_cdf(targets, started_at, stopped_at): @@ -995,6 +995,11 @@ def download_targets_cdf(targets, started_at, stopped_at):
995 environ['CDF_LIB'] = CDF_LIB 995 environ['CDF_LIB'] = CDF_LIB
996 from spacepy import pycdf 996 from spacepy import pycdf
997 try: 997 try:
  998 + import spacepy.toolbox
  999 + spacepy.toolbox.update()
  1000 + except Exception as e:
  1001 + log.error("Failed to update spacepy : %s." % e)
  1002 + try:
998 cdf_handle = pycdf.CDF(cdf_path, masterpath='') 1003 cdf_handle = pycdf.CDF(cdf_path, masterpath='')
999 description = "Model and orbit data for %s." % \ 1004 description = "Model and orbit data for %s." % \
1000 ', '.join([t['name'] for t in targets_configs]) 1005 ', '.join([t['name'] for t in targets_configs])
web/static/css/main.css
@@ -24,10 +24,20 @@ @@ -24,10 +24,20 @@
24 24
25 /** TYPOGRAPHY ***************************************************************/ 25 /** TYPOGRAPHY ***************************************************************/
26 26
  27 +header *::-moz-selection {
  28 + background: #0049fc;
  29 + text-shadow: none;
  30 +}
  31 +
27 header .mdl-layout-title { 32 header .mdl-layout-title {
28 font-family: 'Baumans', cursive; 33 font-family: 'Baumans', cursive;
29 } 34 }
30 35
  36 +#header-description {
  37 + font-style: italic;
  38 + color: #e1e1e1;
  39 +}
  40 +
31 /** LAYOUT *******************************************************************/ 41 /** LAYOUT *******************************************************************/
32 42
33 body { 43 body {
web/view/home.html.jinja2
@@ -379,144 +379,144 @@ @@ -379,144 +379,144 @@
379 background-color: #c8d3e1; 379 background-color: #c8d3e1;
380 } 380 }
381 381
382 -.small-loader-container {  
383 - width: 27px;  
384 - margin: 0 auto;  
385 - background: none;  
386 - pointer-events: none;  
387 -}  
388 -  
389 -.small-loader-circle-1 {  
390 - height: 27px;  
391 - width: 27px;  
392 - background: rgba(255, 238, 195, 0.72);  
393 -}  
394 -  
395 -.small-loader-circle-2 {  
396 - height: 22px;  
397 - width: 22px;  
398 - background: none;  
399 -{# background: rgba(56, 53, 194, 0.5);#}  
400 -}  
401 -  
402 -.small-loader-circle-3 {  
403 - height: 18px;  
404 - width: 18px;  
405 - background: rgba(29, 65, 255, 0.9);  
406 -}  
407 -  
408 -.small-loader-circle-4 {  
409 - height: 13px;  
410 - width: 13px;  
411 - background: none;  
412 -{# background: rgba(98, 109, 237, 0.5);#}  
413 -}  
414 -  
415 -.small-loader-circle-5 {  
416 - height: 9px;  
417 - width: 9px;  
418 - background: rgba(238, 238, 238, 0.8);  
419 -}  
420 -  
421 -.small-loader-circle-6 {  
422 - height: 4px;  
423 - width: 4px;  
424 - background: none;  
425 -{# background: rgba(0, 0, 0, 0);#}  
426 -}  
427 -  
428 -.small-loader-circle-7 {  
429 - height: 2px;  
430 - width: 2px;  
431 - background: rgb(110, 102, 255);  
432 -}  
433 -  
434 -.small-loader-circle-1,  
435 -.small-loader-circle-2,  
436 -.small-loader-circle-3,  
437 -.small-loader-circle-4,  
438 -.small-loader-circle-5,  
439 -.small-loader-circle-6,  
440 -.small-loader-circle-7 {  
441 - border-bottom: none;  
442 - border-radius: 50%;  
443 - -o-border-radius: 50%;  
444 - -ms-border-radius: 50%;  
445 - -webkit-border-radius: 50%;  
446 - -moz-border-radius: 50%;  
447 - box-shadow: 0px 0px 0px rgba(0,0,0,0.1);  
448 - -o-box-shadow: 0px 0px 0px rgba(0,0,0,0.1);  
449 - -ms-box-shadow: 0px 0px 0px rgba(0,0,0,0.1);  
450 - -webkit-box-shadow: 0px 0px 0px rgba(0,0,0,0.1);  
451 - -moz-box-shadow: 0px 0px 0px rgba(0,0,0,0.1);  
452 - animation-name: small-loader-spin;  
453 - -o-animation-name: small-loader-spin;  
454 - -ms-animation-name: small-loader-spin;  
455 - -webkit-animation-name: small-loader-spin;  
456 - -moz-animation-name: small-loader-spin;  
457 - animation-duration: 4600ms;  
458 - -o-animation-duration: 4600ms;  
459 - -ms-animation-duration: 4600ms;  
460 - -webkit-animation-duration: 4600ms;  
461 - -moz-animation-duration: 4600ms;  
462 - animation-iteration-count: infinite;  
463 - -o-animation-iteration-count: infinite;  
464 - -ms-animation-iteration-count: infinite;  
465 - -webkit-animation-iteration-count: infinite;  
466 - -moz-animation-iteration-count: infinite;  
467 - animation-timing-function: linear;  
468 - -o-animation-timing-function: linear;  
469 - -ms-animation-timing-function: linear;  
470 - -webkit-animation-timing-function: linear;  
471 - -moz-animation-timing-function: linear;  
472 -}  
473 -  
474 -  
475 -  
476 -@keyframes small-loader-spin {  
477 - from {  
478 - transform: rotate(0deg);  
479 - }  
480 - to {  
481 - transform: rotate(360deg);  
482 - }  
483 -}  
484 -  
485 -@-o-keyframes small-loader-spin {  
486 - from {  
487 - -o-transform: rotate(0deg);  
488 - }  
489 - to {  
490 - -o-transform: rotate(360deg);  
491 - }  
492 -}  
493 -  
494 -@-ms-keyframes small-loader-spin {  
495 - from {  
496 - -ms-transform: rotate(0deg);  
497 - }  
498 - to {  
499 - -ms-transform: rotate(360deg);  
500 - }  
501 -}  
502 -  
503 -@-webkit-keyframes small-loader-spin {  
504 - from {  
505 - -webkit-transform: rotate(0deg);  
506 - }  
507 - to {  
508 - -webkit-transform: rotate(360deg);  
509 - }  
510 -}  
511 -  
512 -@-moz-keyframes small-loader-spin {  
513 - from {  
514 - -moz-transform: rotate(0deg);  
515 - }  
516 - to {  
517 - -moz-transform: rotate(360deg);  
518 - }  
519 -} 382 + .small-loader-container {
  383 + width: 27px;
  384 + margin: 0 auto;
  385 + background: none;
  386 + pointer-events: none;
  387 + }
  388 +
  389 + .small-loader-circle-1 {
  390 + height: 27px;
  391 + width: 27px;
  392 + background: rgba(255, 238, 195, 0.72);
  393 + }
  394 +
  395 + .small-loader-circle-2 {
  396 + height: 22px;
  397 + width: 22px;
  398 + background: none;
  399 + {# background: rgba(56, 53, 194, 0.5);#}
  400 + }
  401 +
  402 + .small-loader-circle-3 {
  403 + height: 18px;
  404 + width: 18px;
  405 + background: rgba(29, 65, 255, 0.9);
  406 + }
  407 +
  408 + .small-loader-circle-4 {
  409 + height: 13px;
  410 + width: 13px;
  411 + background: none;
  412 + {# background: rgba(98, 109, 237, 0.5);#}
  413 + }
  414 +
  415 + .small-loader-circle-5 {
  416 + height: 9px;
  417 + width: 9px;
  418 + background: rgba(238, 238, 238, 0.8);
  419 + }
  420 +
  421 + .small-loader-circle-6 {
  422 + height: 4px;
  423 + width: 4px;
  424 + background: none;
  425 + {# background: rgba(0, 0, 0, 0);#}
  426 + }
  427 +
  428 + .small-loader-circle-7 {
  429 + height: 2px;
  430 + width: 2px;
  431 + background: rgb(110, 102, 255);
  432 + }
  433 +
  434 + .small-loader-circle-1,
  435 + .small-loader-circle-2,
  436 + .small-loader-circle-3,
  437 + .small-loader-circle-4,
  438 + .small-loader-circle-5,
  439 + .small-loader-circle-6,
  440 + .small-loader-circle-7 {
  441 + border-bottom: none;
  442 + border-radius: 50%;
  443 + -o-border-radius: 50%;
  444 + -ms-border-radius: 50%;
  445 + -webkit-border-radius: 50%;
  446 + -moz-border-radius: 50%;
  447 + box-shadow: 0px 0px 0px rgba(0,0,0,0.1);
  448 + -o-box-shadow: 0px 0px 0px rgba(0,0,0,0.1);
  449 + -ms-box-shadow: 0px 0px 0px rgba(0,0,0,0.1);
  450 + -webkit-box-shadow: 0px 0px 0px rgba(0,0,0,0.1);
  451 + -moz-box-shadow: 0px 0px 0px rgba(0,0,0,0.1);
  452 + animation-name: small-loader-spin;
  453 + -o-animation-name: small-loader-spin;
  454 + -ms-animation-name: small-loader-spin;
  455 + -webkit-animation-name: small-loader-spin;
  456 + -moz-animation-name: small-loader-spin;
  457 + animation-duration: 4600ms;
  458 + -o-animation-duration: 4600ms;
  459 + -ms-animation-duration: 4600ms;
  460 + -webkit-animation-duration: 4600ms;
  461 + -moz-animation-duration: 4600ms;
  462 + animation-iteration-count: infinite;
  463 + -o-animation-iteration-count: infinite;
  464 + -ms-animation-iteration-count: infinite;
  465 + -webkit-animation-iteration-count: infinite;
  466 + -moz-animation-iteration-count: infinite;
  467 + animation-timing-function: linear;
  468 + -o-animation-timing-function: linear;
  469 + -ms-animation-timing-function: linear;
  470 + -webkit-animation-timing-function: linear;
  471 + -moz-animation-timing-function: linear;
  472 + }
  473 +
  474 +
  475 +
  476 + @keyframes small-loader-spin {
  477 + from {
  478 + transform: rotate(0deg);
  479 + }
  480 + to {
  481 + transform: rotate(360deg);
  482 + }
  483 + }
  484 +
  485 + @-o-keyframes small-loader-spin {
  486 + from {
  487 + -o-transform: rotate(0deg);
  488 + }
  489 + to {
  490 + -o-transform: rotate(360deg);
  491 + }
  492 + }
  493 +
  494 + @-ms-keyframes small-loader-spin {
  495 + from {
  496 + -ms-transform: rotate(0deg);
  497 + }
  498 + to {
  499 + -ms-transform: rotate(360deg);
  500 + }
  501 + }
  502 +
  503 + @-webkit-keyframes small-loader-spin {
  504 + from {
  505 + -webkit-transform: rotate(0deg);
  506 + }
  507 + to {
  508 + -webkit-transform: rotate(360deg);
  509 + }
  510 + }
  511 +
  512 + @-moz-keyframes small-loader-spin {
  513 + from {
  514 + -moz-transform: rotate(0deg);
  515 + }
  516 + to {
  517 + -moz-transform: rotate(360deg);
  518 + }
  519 + }
520 520
521 521
522 </style> 522 </style>
web/view/layout.html.jinja2
@@ -41,7 +41,7 @@ @@ -41,7 +41,7 @@
41 <div class="mdl-layout-spacer"></div> 41 <div class="mdl-layout-spacer"></div>
42 <!-- Navigation. We hide it in small screens. --> 42 <!-- Navigation. We hide it in small screens. -->
43 <nav class="mdl-navigation mdl-layout--large-screen-only"> 43 <nav class="mdl-navigation mdl-layout--large-screen-only">
44 - <a class="mdl-navigation__link" href="https://gitlab.irap.omp.eu/CDPP/SPACEWEATHERONLINE">v{{ version }}</a> 44 + <span id="header-description">{{ config.meta.description }}</span>
45 <a class="mdl-navigation__link" href="https://onlinelibrary.wiley.com/doi/10.1029/2004JA010959/abstract">Tao's Model</a> 45 <a class="mdl-navigation__link" href="https://onlinelibrary.wiley.com/doi/10.1029/2004JA010959/abstract">Tao's Model</a>
46 <a class="mdl-navigation__link" href="http://planetaryspaceweather-europlanet.irap.omp.eu">Planetary Space Weather Services</a> 46 <a class="mdl-navigation__link" href="http://planetaryspaceweather-europlanet.irap.omp.eu">Planetary Space Weather Services</a>
47 {# <a class="mdl-navigation__link" href="https://ec.europa.eu/programmes/horizon2020/">Horizon 2020</a>#} 47 {# <a class="mdl-navigation__link" href="https://ec.europa.eu/programmes/horizon2020/">Horizon 2020</a>#}
@@ -71,6 +71,8 @@ @@ -71,6 +71,8 @@
71 <footer class="mdl-mini-footer"> 71 <footer class="mdl-mini-footer">
72 <div class="mdl-mini-footer__left-section"> 72 <div class="mdl-mini-footer__left-section">
73 <p style="float: left; margin: 1.5em;"> 73 <p style="float: left; margin: 1.5em;">
  74 + <a class="mdl-mini-footer__link" href="https://gitlab.irap.omp.eu/CDPP/SPACEWEATHERONLINE">v{{ version }}</a>
  75 + <br />
74 {{ visits }} visits since 2017 76 {{ visits }} visits since 2017
75 </p> 77 </p>
76 <p class="disclaimer"> 78 <p class="disclaimer">