diff --git a/CHANGELOG.md b/CHANGELOG.md index 4277816..06e076b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,19 +1,42 @@ +## Nicolas + +- prévoir la possibilité à l'utilisateur d'afficher les paramètres (séries temporelles) en échelle log ou linéaire +- rajouter uranus et neptune comme planètes cibles +- permettre à l'utilisateur de choisir inner heliosphere (jusqu'à mars) ou outer heliosphere (jusqu'à saturne) pour la visualisation des éphémérides planétaires +- rajouter MAVEN, New Horizons, Cassini, Galileo, ExoMars comme spacecraft cible +- 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) +- modifier le bandeau du bas pour faire apparaître sur une seule ligne les remerciements à la commission européenne source de financement +- prévoir la possibilité à l'utilisateur d'afficher le temps en Day Of Year +- rajouter les ticks sur l'échelle des temps en X +- quant on zoome modifier l'échelle en Y afin qu'elle s'adapte aux valeurs maximales de l'intervalle du zoom +- modifier le bandeau vertical d'affichage des choix utilisateurs pour qu'il soit plus petit (en particulier les champs paramètres) +- ajouter dans le bandeau vertical un onglet INPUT DATA avec 3 choix possibles: STEREO-A, STEREO-B, L1 +- ajouter dans le bandeau vertical un onglet LAYERS avec 3 choix possibles: Jupiter Thermosphere Model, HST Jupiter Observations, HST Saturn Observations +- ajouter un bouton ALERT qui permet d'ouvrir une nouvelle page de formulaire ou l'utilisateur entrerait les données suivantes: + * email + * target (= planète, spacecraft, comet) + * submit (envoyé ensuite vers un webservice d'AMDA à construire) +- prévoir un bouton EPN-TAP ou l'on mettrait l'outil en relation avec le client VESPA développé par nathanaël +- 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 + + ## Future ? - [ ] Optimize data aggregation (numpy vectorization?) -- [ ] Credit the author of the pixel art planets +- [ ] Credit the author of the pixel art planets (can't find it again) - [ ] Add a README to the download tarball - [ ] Set the log level to _error_ in production (see `web/run.py`) - [ ] CRON statements to call the cache cleanup and warmup - [ ] Give the future data another color -An heliospheric propagation 1D MHD model for solar wind prediction at planets, probes and comets. ## 1.0.0-rc6 - [ ] Rework the images of Rosetta and Juno - [ ] Enable p67 +- [x] Move the version to the footer +- [x] Fix various issues with spacepy and CDF generation ## 1.0.0-rc5 diff --git a/config.yml b/config.yml index aa3fbdf..97ac075 100644 --- a/config.yml +++ b/config.yml @@ -13,7 +13,8 @@ meta: - space - weather # Will be shown by search engines below the title of the page. - description: Space weather predictions around solar celestial bodies. + # Will also be shown in the header if there's enough room + description: An heliospheric propagation 1D MHD model for solar wind prediction at planets, probes and comets. # The top bar header: @@ -161,6 +162,7 @@ targets: stopped_at: '2014-08-02T00:00:00' - slug: 'p67_orb_all' started_at: '2014-08-02T00:00:00' + #stopped_at: '2016-09-30T11:19:00' parameters: hee: 'XYZ_HEE' models: @@ -174,9 +176,9 @@ targets: orbit: models: - slug: 'juno_cruise_all' - stopped_at: '2016-07-01T00:00:00' + stopped_at: '2016-07-05T03:53:00' - slug: 'jupiter_orb_all' - started_at: '2016-07-01T00:00:00' + started_at: '2016-07-05T03:53:00' models: - slug: 'tao_juno_sw' locked: false diff --git a/web/run.py b/web/run.py index 5dccd4d..abe194e 100755 --- a/web/run.py +++ b/web/run.py @@ -995,6 +995,11 @@ def download_targets_cdf(targets, started_at, stopped_at): environ['CDF_LIB'] = CDF_LIB from spacepy import pycdf try: + import spacepy.toolbox + spacepy.toolbox.update() + except Exception as e: + log.error("Failed to update spacepy : %s." % e) + try: cdf_handle = pycdf.CDF(cdf_path, masterpath='') description = "Model and orbit data for %s." % \ ', '.join([t['name'] for t in targets_configs]) diff --git a/web/static/css/main.css b/web/static/css/main.css index de94c8f..31a296f 100755 --- a/web/static/css/main.css +++ b/web/static/css/main.css @@ -24,10 +24,20 @@ /** TYPOGRAPHY ***************************************************************/ +header *::-moz-selection { + background: #0049fc; + text-shadow: none; +} + header .mdl-layout-title { font-family: 'Baumans', cursive; } +#header-description { + font-style: italic; + color: #e1e1e1; +} + /** LAYOUT *******************************************************************/ body { diff --git a/web/view/home.html.jinja2 b/web/view/home.html.jinja2 index fe055ce..65df6ba 100755 --- a/web/view/home.html.jinja2 +++ b/web/view/home.html.jinja2 @@ -379,144 +379,144 @@ background-color: #c8d3e1; } -.small-loader-container { - width: 27px; - margin: 0 auto; - background: none; - pointer-events: none; -} - -.small-loader-circle-1 { - height: 27px; - width: 27px; - background: rgba(255, 238, 195, 0.72); -} - -.small-loader-circle-2 { - height: 22px; - width: 22px; - background: none; -{# background: rgba(56, 53, 194, 0.5);#} -} - -.small-loader-circle-3 { - height: 18px; - width: 18px; - background: rgba(29, 65, 255, 0.9); -} - -.small-loader-circle-4 { - height: 13px; - width: 13px; - background: none; -{# background: rgba(98, 109, 237, 0.5);#} -} - -.small-loader-circle-5 { - height: 9px; - width: 9px; - background: rgba(238, 238, 238, 0.8); -} - -.small-loader-circle-6 { - height: 4px; - width: 4px; - background: none; -{# background: rgba(0, 0, 0, 0);#} -} - -.small-loader-circle-7 { - height: 2px; - width: 2px; - background: rgb(110, 102, 255); -} - -.small-loader-circle-1, -.small-loader-circle-2, -.small-loader-circle-3, -.small-loader-circle-4, -.small-loader-circle-5, -.small-loader-circle-6, -.small-loader-circle-7 { - border-bottom: none; - border-radius: 50%; - -o-border-radius: 50%; - -ms-border-radius: 50%; - -webkit-border-radius: 50%; - -moz-border-radius: 50%; - box-shadow: 0px 0px 0px rgba(0,0,0,0.1); - -o-box-shadow: 0px 0px 0px rgba(0,0,0,0.1); - -ms-box-shadow: 0px 0px 0px rgba(0,0,0,0.1); - -webkit-box-shadow: 0px 0px 0px rgba(0,0,0,0.1); - -moz-box-shadow: 0px 0px 0px rgba(0,0,0,0.1); - animation-name: small-loader-spin; - -o-animation-name: small-loader-spin; - -ms-animation-name: small-loader-spin; - -webkit-animation-name: small-loader-spin; - -moz-animation-name: small-loader-spin; - animation-duration: 4600ms; - -o-animation-duration: 4600ms; - -ms-animation-duration: 4600ms; - -webkit-animation-duration: 4600ms; - -moz-animation-duration: 4600ms; - animation-iteration-count: infinite; - -o-animation-iteration-count: infinite; - -ms-animation-iteration-count: infinite; - -webkit-animation-iteration-count: infinite; - -moz-animation-iteration-count: infinite; - animation-timing-function: linear; - -o-animation-timing-function: linear; - -ms-animation-timing-function: linear; - -webkit-animation-timing-function: linear; - -moz-animation-timing-function: linear; -} - - - -@keyframes small-loader-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@-o-keyframes small-loader-spin { - from { - -o-transform: rotate(0deg); - } - to { - -o-transform: rotate(360deg); - } -} - -@-ms-keyframes small-loader-spin { - from { - -ms-transform: rotate(0deg); - } - to { - -ms-transform: rotate(360deg); - } -} - -@-webkit-keyframes small-loader-spin { - from { - -webkit-transform: rotate(0deg); - } - to { - -webkit-transform: rotate(360deg); - } -} - -@-moz-keyframes small-loader-spin { - from { - -moz-transform: rotate(0deg); - } - to { - -moz-transform: rotate(360deg); - } -} + .small-loader-container { + width: 27px; + margin: 0 auto; + background: none; + pointer-events: none; + } + + .small-loader-circle-1 { + height: 27px; + width: 27px; + background: rgba(255, 238, 195, 0.72); + } + + .small-loader-circle-2 { + height: 22px; + width: 22px; + background: none; + {# background: rgba(56, 53, 194, 0.5);#} + } + + .small-loader-circle-3 { + height: 18px; + width: 18px; + background: rgba(29, 65, 255, 0.9); + } + + .small-loader-circle-4 { + height: 13px; + width: 13px; + background: none; + {# background: rgba(98, 109, 237, 0.5);#} + } + + .small-loader-circle-5 { + height: 9px; + width: 9px; + background: rgba(238, 238, 238, 0.8); + } + + .small-loader-circle-6 { + height: 4px; + width: 4px; + background: none; + {# background: rgba(0, 0, 0, 0);#} + } + + .small-loader-circle-7 { + height: 2px; + width: 2px; + background: rgb(110, 102, 255); + } + + .small-loader-circle-1, + .small-loader-circle-2, + .small-loader-circle-3, + .small-loader-circle-4, + .small-loader-circle-5, + .small-loader-circle-6, + .small-loader-circle-7 { + border-bottom: none; + border-radius: 50%; + -o-border-radius: 50%; + -ms-border-radius: 50%; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + box-shadow: 0px 0px 0px rgba(0,0,0,0.1); + -o-box-shadow: 0px 0px 0px rgba(0,0,0,0.1); + -ms-box-shadow: 0px 0px 0px rgba(0,0,0,0.1); + -webkit-box-shadow: 0px 0px 0px rgba(0,0,0,0.1); + -moz-box-shadow: 0px 0px 0px rgba(0,0,0,0.1); + animation-name: small-loader-spin; + -o-animation-name: small-loader-spin; + -ms-animation-name: small-loader-spin; + -webkit-animation-name: small-loader-spin; + -moz-animation-name: small-loader-spin; + animation-duration: 4600ms; + -o-animation-duration: 4600ms; + -ms-animation-duration: 4600ms; + -webkit-animation-duration: 4600ms; + -moz-animation-duration: 4600ms; + animation-iteration-count: infinite; + -o-animation-iteration-count: infinite; + -ms-animation-iteration-count: infinite; + -webkit-animation-iteration-count: infinite; + -moz-animation-iteration-count: infinite; + animation-timing-function: linear; + -o-animation-timing-function: linear; + -ms-animation-timing-function: linear; + -webkit-animation-timing-function: linear; + -moz-animation-timing-function: linear; + } + + + + @keyframes small-loader-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } + } + + @-o-keyframes small-loader-spin { + from { + -o-transform: rotate(0deg); + } + to { + -o-transform: rotate(360deg); + } + } + + @-ms-keyframes small-loader-spin { + from { + -ms-transform: rotate(0deg); + } + to { + -ms-transform: rotate(360deg); + } + } + + @-webkit-keyframes small-loader-spin { + from { + -webkit-transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + } + } + + @-moz-keyframes small-loader-spin { + from { + -moz-transform: rotate(0deg); + } + to { + -moz-transform: rotate(360deg); + } + } diff --git a/web/view/layout.html.jinja2 b/web/view/layout.html.jinja2 index d685f43..e2537cd 100755 --- a/web/view/layout.html.jinja2 +++ b/web/view/layout.html.jinja2 @@ -41,7 +41,7 @@