changelog à jour (pour mise en prod)
[perso/Denise/oms.git] / templates / index.html
CommitLineData
5679dfd0
DL
1{% extends "base.html" %}
2{% block contenu %}
21c5bd57 3<p>Bienvenue sur ce petit outil qui permet de tracer les courbes de poids et de taille selon les standards OMS (Organisation Mondiale de la Santé) des enfants jusqu'à 5 ans.</p>
5679dfd0
DL
4<hr>
5
6
be2bf515 7<h2>Données de l'enfant</h2>
5679dfd0 8
be2bf515 9<div id="import_donnees">
93ba28a7 10 <form action="/" method="post" enctype="multipart/form-data" id="form_import_donnees">
be2bf515
DL
11
12
13
442a69cb 14 <label for="fichier_donnees" class="icon_button">
32b3d061 15 <img src="static/icons/import.png" alt="Importer">
d5af53b5 16 <span class="icon_legend">Importer un fichier</span>
93ba28a7 17 </label>
ca61f310 18 <input type="file" name="fichier_donnees" id="fichier_donnees" oninput="upload_file('form_import_donnees')">
5679dfd0 19</form>
2dc9eb43 20
d2f41e86 21{% if "fichier_importe" in valform %}
4e9b079b 22<p>Version du fichier de sauvegarde :
2dc9eb43 23{% if "version" in valform %}
4e9b079b
D
24{{ valform.version }}
25{% else %}
26Inférieure à 2.5{% endif %}
27</p>
2dc9eb43 28{% if "version" not in valform or valform.version < CONFIG.version %}
4e9b079b
D
29<p class="petit">Note&nbsp;: 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). <br>
30Si vous voulez mettre à jour votre fichier de sauvegarde, il suffit de ré-enregistrer les données une fois les courbes générées.
64be08b2 31</p>{% elif valform.version > CONFIG.version %}
4e9b079b 32<p class="petit">Note&nbsp;: 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>
64be08b2 33{% endif %}
d2f41e86 34{% endif %}
2dc9eb43 35
be2bf515 36</div>
5679dfd0
DL
37
38<form id="donnees_enfant">
39
d03279e7 40<!-- saisie des données -->
61020126
DL
41
42<h3>Informations sur l'enfant</h3>
442a69cb
SC
43<div>
44 <label for="reset_donnees" class="icon_button">
32b3d061 45 <img src="static/icons/trash.png" alt="Effacer">
442a69cb
SC
46 <span class="icon_legend">Effacer les données du formulaire</span>
47 </label>
30158504 48 <input type="reset" id="reset_donnees" value="Effacer les données du formulaire">
be2bf515 49</div>
5679dfd0 50<ul>
6ac2173a 51<li><label>Nom de l'enfant&nbsp;:</label> <input type="text" class="texte" name="nom" value="{{ valform.nom }}"></li>
915e90bb
DL
52<li><label>Sexe&nbsp;:</label> <label><input type="radio" name="sexe" value="F" {%if valform.sexe == "F" %}checked{% endif %}> féminin </label>
53| <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>
bc1faf7c
DL
54<li><label>Date de naissance&nbsp;: </label> <input type="date" name="naissance" value="{{ valform.naissance }}">
55 <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>
85e9aa73 56<li>Prématuré ? <span class="petit">(expérimental)</span> <span class="bouton" onclick="affiche_cache('prema',this)">Afficher</span>
bba98b24
D
57<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.
58<br>Remarque&nbsp;: les courbes OMS ne se prolongent pas pour la période prématurée, mais permettent de suivre la croissance de l'enfant une fois le terme atteint.</p>
6ac2173a 59<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).
85e9aa73 60</div></li>
b5ac625b 61
5679dfd0
DL
62</ul>
63
64
5679dfd0 65
348a7b36 66<!-- Section saisie des données -->
5679dfd0 67
348a7b36 68<h3>Saisie des données</h3>
d5687a7f 69<p><span id="bouton_afficher_donneesplus" class="bouton" onclick="affiche_cache_classe('donneesplus')">Afficher</span> la saisie des tailles.</p>
be2bf515 70<p>Syntaxe pour l'âge&nbsp;: utiliser j, s, m, a comme des "unités" (jours, semaines, mois, années). Vous pouvez mixer les unités, par exemple "3a2m5j" pour 3 ans, 2 mois et 5 jours. Les espaces sont ignorées, et il faut saisir des nombres entiers.</p>
ca61f310 71<p>Saisir le poids en kilogrammes (par exemple "2.62" ou "2,62" pour 2 kilogrammes et 620 grammes), ou en grammes ("2620" par exemple).</p>
2c023f1a 72<p class="donneesplus">Saisir la taille en centimètres. Note : il y a généralement un centimètre de moins quand on mesure l'enfant debout par rapport à allongé. On peut voir sur la courbe de référence une "cassure" à deux ans qui correspond au changement du type de mesure.</p>
d4daf461 73<p>Il faut saisir la date ou l'âge. La date a priorité sur l'âge (si la date de naissance est saisie).</p>
5679dfd0 74
2c023f1a 75<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>
5679dfd0
DL
76
77<table id="donneespoids">
348a7b36 78 <tr><th>Âge</th><th>Date</th><th>Poids</th><th class="donneesplus">Taille</th></tr>
5679dfd0
DL
79
80{% for i in range(valform.nb_data) %}
81<tr><td>
6ac2173a 82 <input type="text" class="data" name="age_{{ i }}" value="{{ valform['age_'~i] }}">
2dc9eb43 83</td><td><input type="date" name="date_{{ i }}" value="{{ valform['date_'~i] }}"></td>
6ac2173a
DL
84 <td><input type="text" class="data" name="poids_{{ i }}" value="{{ valform['poids_'~i] }}"></td>
85 <td class="donneesplus"><input class="data" type="text" name="taille_{{ i }}" value="{{ valform['taille_'~i] }}"></td>
8b5845ff 86
5679dfd0
DL
87</tr>
88{% endfor %}
89
90</table>
f1e65b5e 91<p> <span class="bouton" onclick="ajoutelignes()">Cliquer ici</span> pour ajouter des lignes</p>
be2bf515 92
348a7b36 93<!-- Section préférences du graphique -->
be2bf515
DL
94<h3>Préférences du graphique</h3>
95<div class="bouton" onclick="affiche_cache('pref_graphique',this)">Afficher</div>
96
97<ul id="pref_graphique">
8b5845ff
DL
98
99 <li><label>Tracer les courbes vides (s'il n'y a pas de données)&nbsp;:</label> <input type="checkbox" name="tracevide" {% if valform.tracevide == 'oui' %} checked{% endif %}></li>
915e90bb
DL
100 <li><label>Type de courbe&nbsp;:</label> <label><input type="radio" name="typecourbe" value="P"
101 {% if valform.typecourbe == "P" or valform.typecourbe is not defined %} checked {% endif %}> Percentiles</label> | <label><input type="radio" name="typecourbe" value="Z"
102 {% if valform.typecourbe == "Z" %} checked {% endif %}> Moyenne et écarts-type</label></li>
103 <li><label>Grille&nbsp;: <input type="checkbox" name="grille" {%if valform.grille == "oui" or valform.grille is not defined %} checked {% endif %}></label></li>
104 <li><label>Unité&nbsp;:
be2bf515 105 <select name="unite">
8b5845ff 106 <option value="" {% if valform.unite == "" or valform.unite is not defined %} selected {%endif %}>Par défaut</option>
be2bf515
DL
107 {% for unite in ['jours','semaines','mois','années'] %}
108 <option value="{{ unite }}"{% if valform.unite == unite %} selected {% endif %} >{{ unite }}</option>
109 {% endfor %}
915e90bb 110 </select></label></li>
e916b79f 111 <li><label>Âge maximum du graphique (facultatif) </label><input type="text" class="data" name="maxi" value="{{ valform.maxi }}"></li>
c2fe511b 112
e916b79f 113 <li><label>Même échelle d'âge sur tous les graphiques&nbsp;: </label><input type="checkbox" name="memechelle" {% if valform.memechelle == 'oui' %} checked{% endif %}></li>
cf0d4c8c
DL
114 <li><label>Grille améliorée&nbsp;:</label><input type="checkbox" name="grilleamelio" {% if valform.grilleamelio == 'oui' %} checked{% endif %}></li>
115
6ac2173a
DL
116 <li>Dimensions du graphique&nbsp;: <label>largeur&nbsp;: </label><input type="text" class="data" name="largeur" value="{{ valform.largeur }}">
117 <label>hauteur&nbsp;: </label><input type="text" class="data" name="hauteur" value="{{ valform.hauteur }}"></li>
915e90bb
DL
118 <li><label>Légende&nbsp;: <input type="checkbox" name="legende" {% if valform.legende == 'oui' %} checked{% endif %}> </label>
119<label>Position&nbsp;: <select name="positionlegende">
be2bf515
DL
120{%for (pos,posnom) in [('upper left','Haut gauche'),('upper right','Haut Droite'),('lower left','Bas gauche'),('lower right','Bas droite')] %}
121<option value="{{ pos }}">{{ posnom }}</option>
122{% endfor %}
915e90bb 123</select></label>
be2bf515 124 </li>
c2fe511b 125
915e90bb 126 <li>Couleur courbe du bas <input type="color" name="couleur_courbe1" value="{{ valform.couleurs.courbe1 }}"> | Couleur courbe du milieu <input type="color" name="couleur_courbe2" value="{{ valform.couleurs.courbe2 }}"> | Couleur courbe du haut <input type="color" name="couleur_courbe3" value="{{ valform.couleurs.courbe3 }}"> </li>
38b5e10a 127 <li>Couleur du fond <input type="color" name="couleur_fond" value="{{ valform.couleurs.fond }}"> | Couleur de la grille <input type="color" name="couleur_grille" value="{{ valform.couleurs.grille }}"> | Couleur des axes et du texte <input type="color" name="couleur_cadretxt" value="{{ valform.couleurs.cadretxt }}"> | Couleur de la courbe de l'enfant <input type="color" name="couleur_courbeenfant" value="{{ valform.couleurs.courbeenfant }}"></li>
ca61f310
DL
128 <li>Symbole pour les points de la courbe :
129 <select name="symbole">
130 {% for symb in CONFIG.liste_symboles %}
131 <option value="{{ symb }}" {% if valform.symbole==symb %} selected{% endif %}>{{CONFIG.liste_symboles[symb] | safe}}</option>
132 {% endfor %}
133 </select>
134 </li>
6ac2173a
DL
135
136 <li>Ajouter des repères sur les courbes. <span class="bouton petit" onclick="ajoute_reperes()">Plus de repères</span>
137 <ul id="ajoutereperecourbe">
138 {% for i in range(valform.liste_reperes | length) %}
139 <li>Âge&nbsp;: <input class="data" type="text" name="repere_age_{{ i }}" value="{{ valform.liste_reperes[i].donnee }}">
32b3d061 140 ou date&nbsp;: <input type="date" name="repere_date_{{ i }}" value="{{ valform.liste_reperes[i].date }}">
6ac2173a 141 Texte associé&nbsp;: <input class="texte" type="text" name="repere_texte_{{ i }}" value="{{ valform.liste_reperes[i].texte }}">
32b3d061
D
142 Tracer&nbsp;: <input type="checkbox" name="repere_trace_{{ i }}" {% if valform.liste_reperes[i].trace %} checked {% endif %}>
143 Afficher la date&nbsp;: <input type="checkbox" name="repere_affichedate_{{ i }}" {% if valform.liste_reperes[i].affichedate %} checked {% endif %}>
144 </li>
6ac2173a
DL
145 {% endfor %}
146 {% for j in range(valform.liste_reperes | length, valform.nb_reperes_mini) %}
147 <li>Âge&nbsp;: <input class="data" type="text" name="repere_age_{{ j }}" value="">
32b3d061 148 ou date&nbsp;: <input type="date" name="repere_date_{{ i }}" value="">
6ac2173a 149 Texte associé&nbsp;: <input class="texte" type="text" name="repere_texte_{{ j }}" value="">
32b3d061
D
150 Tracer&nbsp;: <input type="checkbox" name="repere_trace_{{ j }}">
151 Afficher la date&nbsp;: <input type="checkbox" name="repere_affichedate_{{ i }}"></li>
152
6ac2173a
DL
153 {% endfor %}
154 </ul>
155
156 </li>
be2bf515
DL
157</ul>
158
159
cf0d4c8c
DL
160<!-- Section calculs/Extrapolation !-->
161
162<h3>Extrapolation</h3>
163<div class="bouton" onclick="affiche_cache('extra',this)">Afficher</div>
164
ca61f310
DL
165<div id="extra">
166<ul>
6ac2173a 167 <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>
cf0d4c8c 168 <li><input type="checkbox" name="prolongercourbes">Tracer l'extrapolation sur le graphique.</li>
3d7da80a 169
cf0d4c8c
DL
170 <li>Calculer <select name="calculextradata_type">
171 <option value="">Choisir la donnée</option>
172 {% for val in CONFIG.liste_typedonnees %}
173 <option value="{{val}}">{{val}}</option>
174 {% endfor %}
32b3d061
D
175 </select> à l'âge <input type="text" class="data" name="calculextradata_age">
176 ou à la date <input type="date" name="calculextradata_date">
3d7da80a
DL
177 <input type="checkbox" name="calculextradata_trace"> ... et le voir sur le graphique.</li>
178
6ac2173a 179 <li>Calculer l'âge auquel l'enfant aura <input type="text" class="data" name="calculextratemps_val">
cf0d4c8c
DL
180 <select name="calculextratemps_type">
181 <option value="">Choisir la donnée</option>
182 {% for val in CONFIG.liste_typedonnees %}
183 <option value="{{val}}">{{ CONFIG.unites_typedonnees[val]}} ({{val}})</option>
184 {% endfor %}
3d7da80a
DL
185 </select>
186 <input type="checkbox" name="calculextratemps_trace"> ... et le voir sur le graphique.</li>
cf0d4c8c
DL
187
188</ul>
e4ec2d3d 189<p>Les résultats de calculs seront affichés en-dessous des courbes. Ils ne seront pas sauvegardés.</p>
ca61f310
DL
190</div>
191
e4ec2d3d 192<!-- Section courbes multiples -->
ca61f310
DL
193<h3>Courbes multiples</h3>
194<div class="bouton" onclick="affiche_cache('multi',this)">Afficher</div>
195
196<div id="multi">
e4ec2d3d
DL
197 <p>Si vous souhaitez tracer sur le même graphique les courbes de différents enfants, c'est ici.</p>
198 <p> Il faut importer le fichier de données additionnel de l'autre enfant (ou des autres enfants). Seul le nom de l'enfant et ses données seront utilisés, les autres paramètres (courbe de référence suivant le sexe, maximum du graphique, ...) seront ceux de l'enfant «&nbsp;principal&nbsp;».</p>
199 <p>Remarque&nbsp;: lors de l'export, seul l'enfant «&nbsp;principal&nbsp;» est sauvegardé.</p>
e916b79f
DL
200 <ul id="liste_enfants_add">{% for numero_enfant in range(2, CONFIG.nb_fichiers_enfants_add+2) %}
201 <li><input type="file" name="fichier_donnees_{{ numero_enfant }}" id="fichier_donnees_{{ numero_enfant }}"> <span class="bouton petit" onclick="vide_champ('fichier_donnees_{{ numero_enfant }}')">Enlever ce fichier</span> |
38b5e10a 202 Symbole&nbsp;: <select name="symbole_donnees_{{ numero_enfant }}">
ca61f310
DL
203 {% for symb in CONFIG.liste_symboles %}
204 <option value="{{ symb }}" {% if numero_enfant == loop.index %} selected{% endif %}>{{ CONFIG.liste_symboles[symb] | safe}}</option>
205 {% endfor %}
38b5e10a 206 </select> |
7aac9b2a
D
207 Couleur&nbsp;: <input type="color" name="couleur_donnees_{{ numero_enfant }}" value="{{ valform.couleurs.cadretxt }}"> |
208 Alias <span class="petit">(remplace le prénom)</span>&nbsp;: <input type="text" name="alias_{{ numero_enfant }}"></li>{% endfor %}
ca61f310 209 </ul>
e916b79f 210 <p class="bouton" onclick="ajoute_enfants()" id="reveleenfants">Plus d'enfants O_o</p>
7aac9b2a 211
ca61f310
DL
212</div>
213
2fce97ea 214
ca61f310 215</form> <!-- Fin du gros méga formulaire -->
cf0d4c8c 216
ca61f310 217<!-- #################################################################################### -->
5679dfd0
DL
218<hr>
219
723d52a6
DL
220<!--- Le grobouton -->
221<div>
222 <span onclick="appelle_image()" class="icon_button">
32b3d061 223 <img src="static/icons/courbe.png" alt="Tracer les courbes">
723d52a6
DL
224 <span class="icon_legend">Je veux les courbes !</span></span>
225 <span id="statut_courbes"></span>
442a69cb 226</div>
5679dfd0 227
723d52a6
DL
228
229<!-- section retour -->
230
5679dfd0 231<hr>
66a3e38c 232<div id="courbe_warnings">
ca61f310 233 <p><strong>Alerte&nbsp;:</strong> il y a eu quelques soucis lors de la génération de la (des) courbes. En voici la liste&nbsp;:</p>
be2bf515 234 <ul></ul>
66a3e38c 235</div>
a46e1269 236<div id="courbe_erreurs">
be2bf515
DL
237 <p><strong>Alerte&nbsp;:</strong> La courbe n'a pas pu être générée. Vérifiez les données saisies, ou contactez l'administratrice. Erreurs&nbsp;: </p>
238 <ul></ul>
a46e1269 239</div>
fd69b6b5
DL
240<div id="sectioncourbe">
241
8b5845ff
DL
242 <h2>Courbes</h2>
243 <div id="section_courbe_poids">
32b3d061 244 <img id="courbe_poids" src="" alt="">
8b5845ff
DL
245
246 <div id="courbe_dl_poids" class="icon_button">
32b3d061 247 <img src="static/icons/export.png" alt="Exporter la courbe de poids">
8b5845ff
DL
248 <span class="icon_legend">Télécharger la courbe de poids</span>
249 </div>
fd69b6b5 250 </div>
8b5845ff
DL
251
252 <div id="section_courbe_taille">
32b3d061 253 <img id="courbe_taille" src="" alt="">
8b5845ff
DL
254
255 <div id="courbe_dl_taille" class="icon_button">
32b3d061 256 <img src="static/icons/export.png" alt="Exporter la courbe de taille">
8b5845ff
DL
257 <span class="icon_legend">Télécharger la courbe de taille</span>
258 </div>
259 </div>
260
fd69b6b5
DL
261</div>
262
cf0d4c8c
DL
263<div id="section_extradonnees">
264 <h2>Calculs sur les courbes</h2>
265 <ul id="extradata">
266
267 </ul>
268</div>
269
e4ec2d3d 270<!-- Section export des courbes -->
5679dfd0
DL
271
272<div id="sectionexport">
be2bf515
DL
273 <h2>Export des données</h2>
274 <p>Vous pouvez télécharger les données afin de ne pas avoir à les re-saisir la prochaine fois.</p>
5679dfd0 275
442a69cb 276 <div id="export_dl" class="icon_button">
32b3d061 277 <img src="static/icons/export.png" alt="Exporter les données">
442a69cb
SC
278 <span class="icon_legend">Télécharger les données</span>
279 </div>
32b3d061 280 <p>Si vous n'arrivez pas à télécharger les données, <a href='#export' onclick="affiche_export()">cliquez ici</a> pour les voir en texte clair&nbsp;: il vous suffira de les copier/coller dans un fichier texte.</p>
e4ec2d3d
DL
281 <div id="export">
282 <textarea readonly id="export_texte">
be2bf515 283 </textarea>
e4ec2d3d
DL
284 <p><span class="bouton" onclick="copietexte()">Sélectionner et copier</span> le texte dans le presse-papier.</p>
285 </div>
5679dfd0
DL
286
287</div>
288
289{% endblock %}