From 604616e41b01c56609bf374d2364eeb966fbeacd Mon Sep 17 00:00:00 2001
From: Goutte <antoine.goutenoir@gmail.com>
Date: Fri, 10 Nov 2017 09:08:47 +0100
Subject: [PATCH] Misc changes from past two weeks.

---
 CHANGELOG.md                |  27 +++++++++++++++++++++++++--
 config.yml                  |   8 +++++---
 web/run.py                  |   5 +++++
 web/static/css/main.css     |  10 ++++++++++
 web/view/home.html.jinja2   | 276 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------
 web/view/layout.html.jinja2 |   4 +++-
 6 files changed, 186 insertions(+), 144 deletions(-)

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);
+      }
+    }
   
   
   </style>
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 @@
           <div class="mdl-layout-spacer"></div>
           <!-- Navigation. We hide it in small screens. -->
           <nav class="mdl-navigation mdl-layout--large-screen-only">
-            <a class="mdl-navigation__link" href="https://gitlab.irap.omp.eu/CDPP/SPACEWEATHERONLINE">v{{ version }}</a>
+            <span id="header-description">{{ config.meta.description }}</span>
             <a class="mdl-navigation__link" href="https://onlinelibrary.wiley.com/doi/10.1029/2004JA010959/abstract">Tao's Model</a>
             <a class="mdl-navigation__link" href="http://planetaryspaceweather-europlanet.irap.omp.eu">Planetary Space Weather Services</a>
 {#            <a class="mdl-navigation__link" href="https://ec.europa.eu/programmes/horizon2020/">Horizon 2020</a>#}
@@ -71,6 +71,8 @@
       <footer class="mdl-mini-footer">
         <div class="mdl-mini-footer__left-section">
           <p style="float: left; margin: 1.5em;">
+              <a class="mdl-mini-footer__link" href="https://gitlab.irap.omp.eu/CDPP/SPACEWEATHERONLINE">v{{ version }}</a>
+              <br />
               {{ visits }} visits since 2017
           </p>
           <p class="disclaimer">
--
libgit2 0.21.2