diff options
-rw-r--r-- | configuration.py | 3 | ||||
-rw-r--r-- | data/changelog_data.txt | 5 | ||||
-rw-r--r-- | gestion_donnees.py | 16 | ||||
-rw-r--r-- | static/outilspage.js | 21 | ||||
-rw-r--r-- | static/style.css | 9 | ||||
-rw-r--r-- | templates/index.html | 42 | ||||
-rw-r--r-- | trace_courbe.py | 22 |
7 files changed, 98 insertions, 20 deletions
diff --git a/configuration.py b/configuration.py index 80a9545..f7dc1f3 100644 --- a/configuration.py +++ b/configuration.py | |||
@@ -135,6 +135,9 @@ DEFAUT["grilleamelio"] = "oui" | |||
135 | 135 | ||
136 | DEFAUT["prematurite"] = "0j" | 136 | DEFAUT["prematurite"] = "0j" |
137 | DEFAUT["agecorrige"] = "oui" | 137 | DEFAUT["agecorrige"] = "oui" |
138 | #repere = {"typed": "age", "donnee": "", "texte": ""} | ||
139 | DEFAUT["liste_reperes"] = [] | ||
140 | DEFAUT["nb_reperes_mini"] = 3 # Nombre minimum de lignes de repères | ||
138 | 141 | ||
139 | # initialiser la config | 142 | # initialiser la config |
140 | def config_init(): | 143 | def config_init(): |
diff --git a/data/changelog_data.txt b/data/changelog_data.txt index a7c959e..2529da7 100644 --- a/data/changelog_data.txt +++ b/data/changelog_data.txt | |||
@@ -1,9 +1,10 @@ | |||
1 | "Version 2.4","29/06/2021","<p>Plus de courbes ! Et autres... | 1 | "Version 2.45","29/06/2021","<p>Plus de courbes ! Et autres... |
2 | <ul> | 2 | <ul> |
3 | <li>On peut désormais personnaliser la couleur et le symbol de la courbe (principale).</li> | 3 | <li>On peut désormais personnaliser la couleur et le symbol de la courbe (principale).</li> |
4 | <li>Les dates sont maintenant exportées et importées. C'est plus sympa pour la lecture (pour le calcul, la donnée en âge l'emporte).</li> | 4 | <li>Les dates sont maintenant exportées et importées. C'est plus sympa pour la lecture (pour le calcul, la donnée en âge l'emporte).</li> |
5 | <li>Une version de l'appli est incluse dans le fichier de sauvegarde. On affiche un petit message si la version du fichier importé est inférieure à celle du site, mais normalement tout reste compatible. Si vous voulez la toute dernière version, il suffit de ré-enregistrer vos données, tout simplement.</li> | 5 | <li>Une version de l'appli est incluse dans le fichier de sauvegarde. On affiche un petit message si la version du fichier importé est inférieure à celle du site, mais normalement tout reste compatible. Si vous voulez la toute dernière version, il suffit de ré-enregistrer vos données, tout simplement.</li> |
6 | <li>Normalement on peut saisir les dates au format aaaa/mm/dd si on est en mode "texte" pour plus de cohérence avec l'affichage "confortable".</li> | 6 | <li>Il est possible de tracer des repères sur les courbes (lignes verticales à un âge donné). Ces repères sont sauvegardés (et vous pouvez décocher le ""tracer"" afin de les sauvegarder sans les tracer).</li> |
7 | <li>Normalement on peut saisir les dates au format aaaa/mm/dd si on est en mode ""texte"" pour plus de cohérence avec l'affichage ""confortable"".</li> | ||
7 | <li>Courbes de plusieurs enfants : | 8 | <li>Courbes de plusieurs enfants : |
8 | <ul> | 9 | <ul> |
9 | <li>Les données et la configuration sont celles de l'enfant qu'on a saisi en ""principal""</li> | 10 | <li>Les données et la configuration sont celles de l'enfant qu'on a saisi en ""principal""</li> |
diff --git a/gestion_donnees.py b/gestion_donnees.py index 137849d..8e19d8b 100644 --- a/gestion_donnees.py +++ b/gestion_donnees.py | |||
@@ -368,6 +368,19 @@ def gere_configuration(data,liste_err, court=False): | |||
368 | configuration["non_sauve"]["calculextratemps_trace"] = gere_checkbox(data.get("calculextratemps_trace")) | 368 | configuration["non_sauve"]["calculextratemps_trace"] = gere_checkbox(data.get("calculextratemps_trace")) |
369 | 369 | ||
370 | 370 | ||
371 | ### Gestion des repères additionnels | ||
372 | configuration["liste_reperes"] = [] | ||
373 | i=0 | ||
374 | while "repere_texte_"+str(i) in data: # Tant qu'il y a des trucs définis | ||
375 | debug("Repère trouvé", liste_err) | ||
376 | age=data.get("repere_age_"+str(i), "") | ||
377 | trace=gere_checkbox(data.get("repere_trace_"+str(i), "")) | ||
378 | if age !="": | ||
379 | agec=convertit_jours_vers_python(age, liste_err) | ||
380 | texte = data.get("repere_texte_"+str(i), "") # Même si le texte est vide, osef | ||
381 | configuration["liste_reperes"].append({"typed": "age", "donnee": agec, "texte": texte, "trace": trace}) | ||
382 | i+=1 | ||
383 | |||
371 | return configuration | 384 | return configuration |
372 | 385 | ||
373 | 386 | ||
@@ -441,6 +454,9 @@ def donnees_vers_json(l_jours,l_poids,l_jourst,l_taille,config): | |||
441 | 454 | ||
442 | # gérer l'age maxi | 455 | # gérer l'age maxi |
443 | gros_dico["maxi"] = convertit_age_vers_texte(gros_dico["maxi"]) | 456 | gros_dico["maxi"] = convertit_age_vers_texte(gros_dico["maxi"]) |
457 | # Gérer les repères | ||
458 | for i in range(len(gros_dico["liste_reperes"])): | ||
459 | gros_dico["liste_reperes"][i]["donnee"] = convertit_age_vers_texte(gros_dico["liste_reperes"][i]["donnee"]) | ||
444 | # gérer les couleurs | 460 | # gérer les couleurs |
445 | for clecouleur in DEFAUT["couleurs"]: | 461 | for clecouleur in DEFAUT["couleurs"]: |
446 | gros_dico["couleurs"][clecouleur] = tuple_vers_rgb(gros_dico["couleurs"][clecouleur]) | 462 | gros_dico["couleurs"][clecouleur] = tuple_vers_rgb(gros_dico["couleurs"][clecouleur]) |
diff --git a/static/outilspage.js b/static/outilspage.js index e350274..5d1fc41 100644 --- a/static/outilspage.js +++ b/static/outilspage.js | |||
@@ -26,7 +26,7 @@ function ajoutelignes() | |||
26 | var cellpoids = ligne.insertCell(2); | 26 | var cellpoids = ligne.insertCell(2); |
27 | var celltaille = ligne.insertCell(3); | 27 | var celltaille = ligne.insertCell(3); |
28 | 28 | ||
29 | cellage.innerHTML = '<input type="text" name="age_'+i+'">' ; | 29 | cellage.innerHTML = '<input type="text" class="data" name="age_'+i+'">' ; |
30 | celldate.innerHTML = '<input name="date_'+i+'">' ; | 30 | celldate.innerHTML = '<input name="date_'+i+'">' ; |
31 | celldate.firstChild.type = mode ; | 31 | celldate.firstChild.type = mode ; |
32 | if(mode == "text") // si on a déjà affiché les cases en mode texte, on continue en mode texte | 32 | if(mode == "text") // si on a déjà affiché les cases en mode texte, on continue en mode texte |
@@ -35,8 +35,8 @@ function ajoutelignes() | |||
35 | celldate.firstChild.maxlength = taillemaxdate ; | 35 | celldate.firstChild.maxlength = taillemaxdate ; |
36 | celldate.firstChild.placeholder = placeholder_date ; | 36 | celldate.firstChild.placeholder = placeholder_date ; |
37 | } | 37 | } |
38 | cellpoids.innerHTML = '<input type="text" name="poids_'+i+'">' ; | 38 | cellpoids.innerHTML = '<input type="text" class="data" name="poids_'+i+'">' ; |
39 | celltaille.innerHTML = '<input type="text" name="taille_'+i+'">' ; | 39 | celltaille.innerHTML = '<input type="text" class="data" name="taille_'+i+'">' ; |
40 | celltaille.classList.add("donneesplus") ; | 40 | celltaille.classList.add("donneesplus") ; |
41 | if(deuxiemeligne.children[3].style.display == "block") | 41 | if(deuxiemeligne.children[3].style.display == "block") |
42 | celltaille.style.display = "block" ; | 42 | celltaille.style.display = "block" ; |
@@ -163,3 +163,18 @@ function vide_champ(nom) | |||
163 | var elt = document.getElementById(nom) ; | 163 | var elt = document.getElementById(nom) ; |
164 | elt.value = "" ; | 164 | elt.value = "" ; |
165 | } | 165 | } |
166 | |||
167 | function ajoute_reperes() | ||
168 | { // ajoute des repères | ||
169 | var eltul = document.getElementById("ajoutereperecourbe") ; | ||
170 | var nblignes = eltul.childElementCount ; | ||
171 | // alert(nblignes) ; | ||
172 | var nb_additionnel = 2; | ||
173 | for(var i=nblignes; i<nblignes+nb_additionnel ; i++) | ||
174 | { | ||
175 | var elt = document.createElement("li") ; | ||
176 | elt.innerHTML = 'Âge : <input class="data" type="text" name="repere_age_'+i+'" value=""> Texte associé : <input class="texte" type="text" name="repere_texte_'+i+'" value="">' ; | ||
177 | eltul.appendChild(elt) ; | ||
178 | } | ||
179 | |||
180 | } | ||
diff --git a/static/style.css b/static/style.css index b048f11..95cd55e 100644 --- a/static/style.css +++ b/static/style.css | |||
@@ -116,3 +116,12 @@ nav { | |||
116 | #content { | 116 | #content { |
117 | padding-bottom: 70px; | 117 | padding-bottom: 70px; |
118 | } | 118 | } |
119 | |||
120 | /* Taille des champs */ | ||
121 | .texte { | ||
122 | width:20em | ||
123 | } | ||
124 | |||
125 | .data { | ||
126 | width:7em | ||
127 | } | ||
diff --git a/templates/index.html b/templates/index.html index e9656da..abd1a13 100644 --- a/templates/index.html +++ b/templates/index.html | |||
@@ -24,7 +24,7 @@ | |||
24 | {% if "version" not in valform or valform.version < CONFIG.version %} | 24 | {% if "version" not in valform or valform.version < CONFIG.version %} |
25 | <p class="petit">Note : La version du fichier de sauvegarde est inférieure à la version du site ({{ CONFIG.version}}), mais cela ne devrait pas générer de bug (normalement). | 25 | <p class="petit">Note : La version du fichier de sauvegarde est inférieure à la version du site ({{ CONFIG.version}}), mais cela ne devrait pas générer de bug (normalement). |
26 | </p>{% elif valform.version > CONFIG.version %} | 26 | </p>{% elif valform.version > CONFIG.version %} |
27 | <p class="petit">Note : la version du fichier de sauvegarde ({{ valform.version }}) est <b>supérieure</b> à la version du site ({{ CONFIG.version}}). Soit vous avez voyagé dans le futur, soit vous avez testé un fichier de sauvegarde de la version bêta sur la version normale du site, soit vous avez trifouillé le fichier de sauvegarde, soit... je ne sais pas. Il se peut qu'il y ait des bugs. Ou pas.</p> | 27 | <p class="petit">Note : la version du fichier de sauvegarde ({{ valform.version }}) est <b>supérieure</b> à la version du site ({{ CONFIG.version}}). Vous avez probablement avez testé un fichier de sauvegarde de la version bêta sur la version normale du site. Sinon c'est que vous avez voyagé dans le temps, trifouillé le fichier de sauvegarde, ou... je ne sais pas. Il se peut qu'il y ait des bugs. Ou pas.</p> |
28 | {% endif %} | 28 | {% endif %} |
29 | {% endif %} | 29 | {% endif %} |
30 | 30 | ||
@@ -43,14 +43,14 @@ | |||
43 | <input type="reset" id="reset_donnees" value="Effacer les données du formulaire"> | 43 | <input type="reset" id="reset_donnees" value="Effacer les données du formulaire"> |
44 | </div> | 44 | </div> |
45 | <ul> | 45 | <ul> |
46 | <li><label>Nom de l'enfant :</label> <input type="text" name="nom" value="{{ valform.nom }}"></li> | 46 | <li><label>Nom de l'enfant :</label> <input type="text" class="texte" name="nom" value="{{ valform.nom }}"></li> |
47 | <li><label>Sexe :</label> <label><input type="radio" name="sexe" value="F" {%if valform.sexe == "F" %}checked{% endif %}> féminin </label> | 47 | <li><label>Sexe :</label> <label><input type="radio" name="sexe" value="F" {%if valform.sexe == "F" %}checked{% endif %}> féminin </label> |
48 | | <label><input type="radio" name="sexe" value="M" {%if valform.sexe == "M"%} checked {% endif %}> masculin</label> | <label><input type="radio" name="sexe" value="N" {%if valform.sexe == "N"%} checked {% endif %}> neutre (expérimental)</label></li> | 48 | | <label><input type="radio" name="sexe" value="M" {%if valform.sexe == "M"%} checked {% endif %}> masculin</label> | <label><input type="radio" name="sexe" value="N" {%if valform.sexe == "N"%} checked {% endif %}> neutre (expérimental)</label></li> |
49 | <li><label>Date de naissance : </label> <input type="date" name="naissance" value="{{ valform.naissance }}"> | 49 | <li><label>Date de naissance : </label> <input type="date" name="naissance" value="{{ valform.naissance }}"> |
50 | <p id="changemode" class="petit"><span onclick="change_mode_dates('text')" class="bouton">Cliquer ici</span> pour saisir les dates comme du texte.</p> </li> | 50 | <p id="changemode" class="petit"><span onclick="change_mode_dates('text')" class="bouton">Cliquer ici</span> pour saisir les dates comme du texte.</p> </li> |
51 | <li>Prématuré ? <span class="petit">(expérimental)</span> <span class="bouton" onclick="affiche_cache('prema',this)">Afficher</span> | 51 | <li>Prématuré ? <span class="petit">(expérimental)</span> <span class="bouton" onclick="affiche_cache('prema',this)">Afficher</span> |
52 | <div id="prema"><p class="petit">Si l'enfant est né prématuré (avant 37 semaines d'aménorrhée), indiquer de « combien » en durée (même syntaxe que pour les âges, voir plus bas). Sinon, laisser 0j.</p> | 52 | <div id="prema"><p class="petit">Si l'enfant est né prématuré (avant 37 semaines d'aménorrhée), indiquer de « combien » en durée (même syntaxe que pour les âges, voir plus bas). Sinon, laisser 0j.</p> |
53 | <label>Prématurité</label> <input type="text" name="prematurite" value="{{ valform.prematurite }}"> <input type="checkbox" name="agecorrige"{% if valform.agecorrige == "oui"%} checked{%endif%}> Afficher l'âge corrigé sur la courbe (plutôt que l'âge réel). | 53 | <label>Prématurité</label> <input type="text" class="data" name="prematurite" value="{{ valform.prematurite }}"> <input type="checkbox" name="agecorrige"{% if valform.agecorrige == "oui"%} checked{%endif%}> Afficher l'âge corrigé sur la courbe (plutôt que l'âge réel). |
54 | </div></li> | 54 | </div></li> |
55 | 55 | ||
56 | </ul> | 56 | </ul> |
@@ -69,14 +69,14 @@ | |||
69 | <p class="donneesplus">Si vous ne saisissez que des données de poids par exemple, la courbe de taille ne sera pas tracée (par défaut, voir préférences du graphique).</p> | 69 | <p class="donneesplus">Si vous ne saisissez que des données de poids par exemple, la courbe de taille ne sera pas tracée (par défaut, voir préférences du graphique).</p> |
70 | 70 | ||
71 | <table id="donneespoids"> | 71 | <table id="donneespoids"> |
72 | <tr><th>Âge</th><th>Date</th><th>Poids (kg ou g)</th><th class="donneesplus">Taille (cm) </th></tr> | 72 | <tr><th>Âge</th><th>Date</th><th>Poids</th><th class="donneesplus">Taille (cm) </th></tr> |
73 | 73 | ||
74 | {% for i in range(valform.nb_data) %} | 74 | {% for i in range(valform.nb_data) %} |
75 | <tr><td> | 75 | <tr><td> |
76 | <input type="text" name="age_{{ i }}" value="{{ valform['age_'~i] }}"> | 76 | <input type="text" class="data" name="age_{{ i }}" value="{{ valform['age_'~i] }}"> |
77 | </td><td><input type="date" name="date_{{ i }}" value="{{ valform['date_'~i] }}"></td> | 77 | </td><td><input type="date" name="date_{{ i }}" value="{{ valform['date_'~i] }}"></td> |
78 | <td><input type="text" name="poids_{{ i }}" value="{{ valform['poids_'~i] }}"></td> | 78 | <td><input type="text" class="data" name="poids_{{ i }}" value="{{ valform['poids_'~i] }}"></td> |
79 | <td class="donneesplus"><input type="text" name="taille_{{ i }}" value="{{ valform['taille_'~i] }}"></td> | 79 | <td class="donneesplus"><input class="data" type="text" name="taille_{{ i }}" value="{{ valform['taille_'~i] }}"></td> |
80 | 80 | ||
81 | </tr> | 81 | </tr> |
82 | {% endfor %} | 82 | {% endfor %} |
@@ -102,13 +102,13 @@ | |||
102 | <option value="{{ unite }}"{% if valform.unite == unite %} selected {% endif %} >{{ unite }}</option> | 102 | <option value="{{ unite }}"{% if valform.unite == unite %} selected {% endif %} >{{ unite }}</option> |
103 | {% endfor %} | 103 | {% endfor %} |
104 | </select></label></li> | 104 | </select></label></li> |
105 | <li><label>valeur maximum du graphique (facultatif, syntaxe similaire à l'âge) </label><input type="text" name="maxi" value="{{ valform.maxi }}"></li> | 105 | <li><label>valeur maximum du graphique (facultatif, syntaxe similaire à l'âge) </label><input type="text" class="data" name="maxi" value="{{ valform.maxi }}"></li> |
106 | 106 | ||
107 | <li><label>Même échelle sur tous les graphiques : </label><input type="checkbox" name="memechelle" {% if valform.memechelle == 'oui' %} checked{% endif %}></li> | 107 | <li><label>Même échelle sur tous les graphiques : </label><input type="checkbox" name="memechelle" {% if valform.memechelle == 'oui' %} checked{% endif %}></li> |
108 | <li><label>Grille améliorée :</label><input type="checkbox" name="grilleamelio" {% if valform.grilleamelio == 'oui' %} checked{% endif %}></li> | 108 | <li><label>Grille améliorée :</label><input type="checkbox" name="grilleamelio" {% if valform.grilleamelio == 'oui' %} checked{% endif %}></li> |
109 | 109 | ||
110 | <li>Dimensions du graphique : <label>largeur : </label><input type="text" name="largeur" value="{{ valform.largeur }}"> | 110 | <li>Dimensions du graphique : <label>largeur : </label><input type="text" class="data" name="largeur" value="{{ valform.largeur }}"> |
111 | <label>hauteur : </label><input type="text" name="hauteur" value="{{ valform.hauteur }}"></li> | 111 | <label>hauteur : </label><input type="text" class="data" name="hauteur" value="{{ valform.hauteur }}"></li> |
112 | <li><label>Légende : <input type="checkbox" name="legende" {% if valform.legende == 'oui' %} checked{% endif %}> </label> | 112 | <li><label>Légende : <input type="checkbox" name="legende" {% if valform.legende == 'oui' %} checked{% endif %}> </label> |
113 | <label>Position : <select name="positionlegende"> | 113 | <label>Position : <select name="positionlegende"> |
114 | {%for (pos,posnom) in [('upper left','Haut gauche'),('upper right','Haut Droite'),('lower left','Bas gauche'),('lower right','Bas droite')] %} | 114 | {%for (pos,posnom) in [('upper left','Haut gauche'),('upper right','Haut Droite'),('lower left','Bas gauche'),('lower right','Bas droite')] %} |
@@ -126,6 +126,22 @@ | |||
126 | {% endfor %} | 126 | {% endfor %} |
127 | </select> | 127 | </select> |
128 | </li> | 128 | </li> |
129 | |||
130 | <li>Ajouter des repères sur les courbes. <span class="bouton petit" onclick="ajoute_reperes()">Plus de repères</span> | ||
131 | <ul id="ajoutereperecourbe"> | ||
132 | {% for i in range(valform.liste_reperes | length) %} | ||
133 | <li>Âge : <input class="data" type="text" name="repere_age_{{ i }}" value="{{ valform.liste_reperes[i].donnee }}"> | ||
134 | Texte associé : <input class="texte" type="text" name="repere_texte_{{ i }}" value="{{ valform.liste_reperes[i].texte }}"> | ||
135 | Tracer : <input type="checkbox" name="repere_trace_{{ i }}" {% if valform.liste_reperes[i].trace %} checked {% endif %}></li> | ||
136 | {% endfor %} | ||
137 | {% for j in range(valform.liste_reperes | length, valform.nb_reperes_mini) %} | ||
138 | <li>Âge : <input class="data" type="text" name="repere_age_{{ j }}" value=""> | ||
139 | Texte associé : <input class="texte" type="text" name="repere_texte_{{ j }}" value=""> | ||
140 | Tracer : <input type="checkbox" name="repere_trace_{{ j }}"></li> | ||
141 | {% endfor %} | ||
142 | </ul> | ||
143 | |||
144 | </li> | ||
129 | </ul> | 145 | </ul> |
130 | 146 | ||
131 | 147 | ||
@@ -136,7 +152,7 @@ | |||
136 | 152 | ||
137 | <div id="extra"> | 153 | <div id="extra"> |
138 | <ul> | 154 | <ul> |
139 | <li>Calculer le prolongement de la courbe à partir des <input type="text" name="nbextradata" size="4" value="1"> dernières données (mettre 0 pour "toutes").</li> | 155 | <li>Calculer le prolongement de la courbe à partir des <input type="text" class="data" name="nbextradata" size="4" value="1"> dernières données (mettre 0 pour "toutes").</li> |
140 | <li><input type="checkbox" name="prolongercourbes">Tracer l'extrapolation sur le graphique.</li> | 156 | <li><input type="checkbox" name="prolongercourbes">Tracer l'extrapolation sur le graphique.</li> |
141 | 157 | ||
142 | <li>Calculer <select name="calculextradata_type"> | 158 | <li>Calculer <select name="calculextradata_type"> |
@@ -144,10 +160,10 @@ | |||
144 | {% for val in CONFIG.liste_typedonnees %} | 160 | {% for val in CONFIG.liste_typedonnees %} |
145 | <option value="{{val}}">{{val}}</option> | 161 | <option value="{{val}}">{{val}}</option> |
146 | {% endfor %} | 162 | {% endfor %} |
147 | </select> à l'âge <input type="text" name="calculextradata_age" value="6m"> | 163 | </select> à l'âge <input type="text" class="data" name="calculextradata_age" value="6m"> |
148 | <input type="checkbox" name="calculextradata_trace"> ... et le voir sur le graphique.</li> | 164 | <input type="checkbox" name="calculextradata_trace"> ... et le voir sur le graphique.</li> |
149 | 165 | ||
150 | <li>Calculer l'âge auquel l'enfant aura <input type="text" name="calculextratemps_val"> | 166 | <li>Calculer l'âge auquel l'enfant aura <input type="text" class="data" name="calculextratemps_val"> |
151 | <select name="calculextratemps_type"> | 167 | <select name="calculextratemps_type"> |
152 | <option value="">Choisir la donnée</option> | 168 | <option value="">Choisir la donnée</option> |
153 | {% for val in CONFIG.liste_typedonnees %} | 169 | {% for val in CONFIG.liste_typedonnees %} |
diff --git a/trace_courbe.py b/trace_courbe.py index 968ca7b..39ade0e 100644 --- a/trace_courbe.py +++ b/trace_courbe.py | |||
@@ -25,7 +25,9 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_extracalculs, liste_err, e | |||
25 | liste_extracalculs | 25 | liste_extracalculs |
26 | 26 | ||
27 | Les enfants en plus sont dans la liste enfants_add. Pour chaque item de la liste, il faut prendre | 27 | Les enfants en plus sont dans la liste enfants_add. Pour chaque item de la liste, il faut prendre |
28 | item[typed] pour avoir accès au nom, ljours, et ldonnees""" | 28 | item[typed] pour avoir accès au nom, ljours, et ldonnees |
29 | |||
30 | """ | ||
29 | debug("debut de cree_figure. Config : "+str(conf)+". Nombre d'enfants additionnels : "+str(len(enfants_add)),liste_err) | 31 | debug("debut de cree_figure. Config : "+str(conf)+". Nombre d'enfants additionnels : "+str(len(enfants_add)),liste_err) |
30 | try: | 32 | try: |
31 | liste_data_labels_p,liste_data_labels_z = oms.renvoie_liste_labels(conf,CONFIG["liste_data_choisie_p"],CONFIG["liste_data_choisie_z"],liste_err) | 33 | liste_data_labels_p,liste_data_labels_z = oms.renvoie_liste_labels(conf,CONFIG["liste_data_choisie_p"],CONFIG["liste_data_choisie_z"],liste_err) |
@@ -190,7 +192,6 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_extracalculs, liste_err, e | |||
190 | else: | 192 | else: |
191 | titre+=" (courbe en âge réel, données OMS décalées)" | 193 | titre+=" (courbe en âge réel, données OMS décalées)" |
192 | 194 | ||
193 | print("coucou") | ||
194 | #### extrapolatios éventuelles | 195 | #### extrapolatios éventuelles |
195 | # a-t-on demndé des calculs ? | 196 | # a-t-on demndé des calculs ? |
196 | jextrapole = conf["non_sauve"]["prolongercourbes"] == "oui" | 197 | jextrapole = conf["non_sauve"]["prolongercourbes"] == "oui" |
@@ -312,6 +313,23 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_extracalculs, liste_err, e | |||
312 | poids_max = poids_max * 1.05 | 313 | poids_max = poids_max * 1.05 |
313 | 314 | ||
314 | 315 | ||
316 | ### Repères additionnels éventuels. | ||
317 | #reperes est une liste qui contient des dictionnaires avec "typed" (type de donnée : âge, etc), "donnee" : | ||
318 | #la donnée (en jours pour l'âge), et "texte": le texte à mettre sur le repère en question. | ||
319 | #Pour tracer des repères verticaux (horizontaux plus tard) sur la courbe. | ||
320 | for rep in conf["liste_reperes"]: | ||
321 | if rep.get("trace", "") == "oui": # SI on veut tracer | ||
322 | agec = u.convertitunite(rep["donnee"], unite, liste_err) | ||
323 | # Tracé de la ligne verticale | ||
324 | ax.vlines(agec, poids_min, poids_max, linestyles="dashed", color=conf["couleurs"]["cadretxt"]) | ||
325 | # Tracé éventuel du texte | ||
326 | if rep["texte"] != "": | ||
327 | ax.text(agec, poids_min, " "+rep["texte"], rotation=90, verticalalignment='bottom', horizontalalignment='right', color=conf["couleurs"]["cadretxt"]) | ||
328 | |||
329 | |||
330 | |||
331 | |||
332 | |||
315 | # Grille custom ? | 333 | # Grille custom ? |
316 | if conf["non_sauve"]["grilleamelio"] == "oui": | 334 | if conf["non_sauve"]["grilleamelio"] == "oui": |
317 | debug("On a choisi la grille plus jolie", liste_err) | 335 | debug("On a choisi la grille plus jolie", liste_err) |