possibilité de saisir la date au format texte + export données en txt
authorDenise sur Lya <sekhmet@lya>
Fri, 26 Jun 2020 20:43:04 +0000 (22:43 +0200)
committerDenise sur Lya <sekhmet@lya>
Fri, 26 Jun 2020 20:43:04 +0000 (22:43 +0200)
data/changelog_data.txt
gestion_donnees.py
gestion_unites.py
static/outilspage.js
static/requetes.js
static/style.css
templates/index.html

index 45c42387e85b19b26b0fce96a491428a3fc572ea..f2faef6269b247eba946a3afc3482df1aa20e6db 100644 (file)
@@ -1,3 +1,10 @@
+"Version 1.1","26/06/2020","<p>Petites améliorations :
+<ul>
+<li>Possibilité de saisir la date brute en texte. Pour certains navigateurs (sur smartphone ?) où il n'y avait pas cette possibilité et où il fallait parfois cliquer 15 fois pour saisir une date 15 mois plus tôt, ça va peut être être mieux. N'hésitez pas à faire plein de tests à ce sujet !</li>
+<li>L'export des données est maintenant avec l'extension «&nbsp;.txt&nbsp;». C'est exactement la même chose qu'avant (du json), et tout est compatible, car fondamentalement, l'extension c'est pour faire joli, hein, entre nous. Mais ça vous permettra de l'ouvrir sans avoir trop peur d'une part, et surtout c'est un format qui est «&nbsp;accepté&nbsp;» sur le forum LLL ;). Vous allez donc pouvoir plus facilement y poster votre fichier de données !</li>
+</ul>
+</p>"
+
 "Version 1.0001","24/06/2020","<p>Petit bug corrigé (lors du choix de l'âge maxi sur la courbe)</p>"
 
 "Version 1.0","22/06/2020","<p>On release ! :) Vous pouvez voir plus bas la liste des trucs implémentés jusque-là. Je ne dis pas que c'est fini, mais c'est assez sûr pour être lancé. Il reste des bugs et des améliorations bien sûr !
index ea1f2593f625953852cf2e8655f83412cef60102..6abcd519e6ac50a3cac06f74acc9eb7f1824f9a3 100644 (file)
@@ -115,11 +115,12 @@ def convertit_date_vers_python(chaine,liste_err):
         warning("La date : "+chaine+" est invalide !",liste_err)
         return ""
     else:
+        debug("Conversion de la date "+chaine+". Découpage : "+str(liste),liste_err)
         try:
             date = datetime.date(int(liste[0]),int(liste[1]),int(liste[2]))
         except:
             date = ""
-            warning("Impossible de lire la date "+chaine,liste_err)
+            warning("Impossible de lire la date "+chaine+". Format accepté : aaaa-mm-jj",liste_err)
         return date
     
 def convertit_date_vers_texte(date):
index afbc479ed56176264cd8a4139a5ba96b6d83a794..8fcb1ad752931f34eaf972361dae93211e6cfe80 100644 (file)
@@ -10,6 +10,8 @@ def choix_unite(maxi):
     """ en fonction de l'âge maxi, on choisit une unité pertinente : jours, mois, année"""
     if maxi<40:
         return "jours"
+    elif maxi <100:
+        return "semaines"
     elif maxi<25*CONFIG["jours_dans_mois"]:
         return "mois"
     else:
index 8da9e88a05ce7f68ae3c0920ea02bc8ffab7033c..58dfb7f969d547bdc4efc51348f5dd30e16bd4d3 100644 (file)
@@ -1,5 +1,9 @@
 // fonctions générales pour la page
 
+var taillemaxdate = 10;
+var placeholder_date = "aaaa-mm-jj" ;
+
+
 function ajoutelignes()
 {
        // va ajouter 3 lignes au tableau de données
@@ -7,6 +11,11 @@ function ajoutelignes()
        var nbligne = table.children[0].childElementCount ;
        // les données étant numérotées à partir de 0 on pourra commencer à partir de nbligne -1
        // car il faut éliminer la ligne de header.
+       
+       // voir dans quel mode on est : date ou texte
+       var deuxiemeligne = table.children[0].children[1] ;
+       var celldate = deuxiemeligne.children[1] ;
+       var mode = celldate.firstChild.type ;
                
        var nbajout = 3 ;
        for(var i=nbligne-1; i<nbligne+nbajout-1; i++)
@@ -17,9 +26,15 @@ function ajoutelignes()
                var cellpoids = ligne.insertCell(2);
                
                cellage.innerHTML = '<input type="text" name="age_'+i+'">' ;
-               celldate.innerHTML = '<input type="date" name="date_'+i+'">' ;
-               cellpoids.innerHTML = '<input type="text" name="poids_'+i+'">' ;
-               
+               celldate.innerHTML = '<input name="date_'+i+'">' ;
+               celldate.firstChild.type = mode ;
+               if(mode == "text") // si on a déjà affiché les cases en mode texte, on continue en mode texte
+               {
+                       celldate.firstChild.size = taillemaxdate ;
+                       celldate.firstChild.maxlength = taillemaxdate ;
+                       celldate.firstChild.placeholder = placeholder_date ;
+               }
+               cellpoids.innerHTML = '<input type="text" name="poids_'+i+'">' ;        
        }
        
 }
@@ -49,3 +64,34 @@ function affiche_cache(id,elemcourant)
        }
        
 }
+
+function change_mode_dates(mode)
+{
+       // passe de l'affichage en mode "date" à l'affichage en mode "texte" pour les navigateurs
+       // qui gèrent mal le mode date
+       var listeinput = document.getElementsByTagName("input") ;
+       for(i=0;i<listeinput.length;i++)
+       {
+               var nombalise = listeinput[i].name ;
+               if(nombalise == "naissance" || nombalise.slice(0,5) == "date_")
+               {
+                       listeinput[i].type = mode ;
+                       if(mode == "date")
+                               listeinput[i].maxlength = taillemaxdate ;
+                               listeinput[i].size = taillemaxdate ;
+                               listeinput[i].placeholder = placeholder_date ;
+               }
+       }
+       
+       // changer le texte et le bouton.
+       var elem = document.getElementById("changemode") ;
+       if(mode =="text") 
+       {
+               elem.innerHTML = "Saisie des dates au format aaaa-mm-jj. <span onclick=\"change_mode_dates('date')\" class=\"bouton\">Cliquez ici</span> pour revenir à une saisie de dates «&nbsp;confortable&nbsp;»."
+       }
+       else
+       {
+               elem.innerHTML = "<span onclick=\"change_mode_dates('text')\" class=\"bouton\">Cliquez ici</span> pour saisir les dates comme du texte."
+       }
+       
+}
index 4442470ad43ad6d7fced5e2719e9535ac49ea28b..bf8d4844bfeaaf75ae618c62b211cc6505c66e45 100644 (file)
@@ -25,7 +25,7 @@ function appelle_image()
                
                        
                        var boutondl = document.getElementById("export_dl") ;
-                       boutondl.setAttribute('onclick',"download_file('donnees_"+nomenfant+".json', 'application/json;charset=utf-8','"+encodeURIComponent(texte) +"')")
+                       boutondl.setAttribute('onclick',"download_file('donnees_"+nomenfant+".txt', 'application/json;charset=utf-8','"+encodeURIComponent(texte) +"')")
                
 
                        if(result == "success")
@@ -106,4 +106,4 @@ function download_file(filename,mimetype,data) {
 
 function upload_file(data) {
        document.getElementById('form_import_donnees').submit();
-}
\ No newline at end of file
+}
index 88f77fb221050a416aff316a414dc07a7e31686d..414f996be262fef1727dfed0e796bbb8a2834ad8 100644 (file)
@@ -74,6 +74,10 @@ img#courbe {
        display: none;
 }
 
+.petit {
+       font-size: 0.8em;
+}
+
 .bouton {
        text-decoration: underline;
 }
index 7e002340765f8e8735f21450f5d4fe5bae5c6e57..9fc863747f3552a25e16ace083807822e55f4115 100644 (file)
@@ -29,7 +29,8 @@
                <img src="static/icons/trash.png">
                <span class="icon_legend">Effacer les données du formulaire</span>
        </label>         
-       <input type="reset" id="reset_donnees" value="Effacer les données du formulaire">       
+       <input type="reset" id="reset_donnees" value="Effacer les données du formulaire">      
+       <p id="changemode" class="petit"><span onclick="change_mode_dates('text')" class="bouton">Cliquer ici</span> pour saisir les dates comme du texte.</p> 
 </div>
 <ul>
 <li><label>Nom de l'enfant&nbsp;:</label> <input type="text" name="nom" value="{{ valform.nom }}"></li>