]> git.immae.eu Git - perso/Denise/oms.git/blob - templates/index.html
65754a5cb59fd7a4f8caffbac0deb5a5d5427ac4
[perso/Denise/oms.git] / templates / index.html
1 {% extends "base.html" %}
2 {% block contenu %}
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>
4 <hr>
5
6
7 <h2>Données de l'enfant</h2>
8
9 <div id="import_donnees">
10 <form action="/" method="post" enctype="multipart/form-data" id="form_import_donnees">
11
12
13
14 <label for="fichier_donnees" class="icon_button">
15 <img src="static/icons/import.png">
16 <span class="icon_legend">Importer un fichier</span>
17 </label>
18 <input type="file" name="fichier_donnees" id="fichier_donnees" oninput="upload_file('form_import_donnees')">
19 </form>
20 </div>
21
22 <form id="donnees_enfant">
23
24 <!-- saisie des données -->
25
26 <h3>Informations sur l'enfant</h3>
27 <div>
28 <label for="reset_donnees" class="icon_button">
29 <img src="static/icons/trash.png">
30 <span class="icon_legend">Effacer les données du formulaire</span>
31 </label>
32 <input type="reset" id="reset_donnees" value="Effacer les données du formulaire">
33 </div>
34 <ul>
35 <li><label>Nom de l'enfant&nbsp;:</label> <input type="text" name="nom" value="{{ valform.nom }}"></li>
36 <li><label>Sexe&nbsp;:</label> <label><input type="radio" name="sexe" value="F" {%if valform.sexe == "F" %}checked{% endif %}> féminin </label>
37 | <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>
38 <li><label>Date de naissance&nbsp;: </label> <input type="date" name="naissance" value="{{ valform.naissance }}">
39 <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>
40 <li>Prématuré ? <span class="petit">(expérimental)</span> <span class="bouton" onclick="affiche_cache('prema',this)">Afficher</span>
41 <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>
42 <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).
43 </div></li>
44
45 </ul>
46
47
48
49
50
51 <h3>Saisir les données</h3>
52 <p><span id="bouton_afficher_donneesplus" class="bouton" onclick="affiche_cache_classe('donneesplus')">Afficher</span> la saisie des tailles.</p>
53 <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>
54 <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>
55 <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>
56 <p>Il faut saisir la date ou l'âge. Si les deux sont saisis, seul l'âge comptera.</p>
57
58 <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>
59
60 <table id="donneespoids">
61 <tr><th>Âge</th><th>Date</th><th>Poids (kg ou g)</th><th class="donneesplus">Taille (cm) </th></tr>
62
63 {% for i in range(valform.nb_data) %}
64 <tr><td>
65 <input type="text" name="age_{{ i }}" value="{{ valform['age_'~i] }}">
66 </td><td><input type="date" name="date_{{ i }}"></td>
67 <td><input type="text" name="poids_{{ i }}" value="{{ valform['poids_'~i] }}"></td>
68 <td class="donneesplus"><input type="text" name="taille_{{ i }}" value="{{ valform['taille_'~i] }}"></td>
69
70 </tr>
71 {% endfor %}
72
73 </table>
74 <p class="bouton" onclick="ajoutelignes()">Cliquer ici pour ajouter des lignes</p>
75
76 <!-- Préférences du graphique -->
77 <h3>Préférences du graphique</h3>
78 <div class="bouton" onclick="affiche_cache('pref_graphique',this)">Afficher</div>
79
80 <ul id="pref_graphique">
81
82 <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>
83 <li><label>Type de courbe&nbsp;:</label> <label><input type="radio" name="typecourbe" value="P"
84 {% if valform.typecourbe == "P" or valform.typecourbe is not defined %} checked {% endif %}> Percentiles</label> | <label><input type="radio" name="typecourbe" value="Z"
85 {% if valform.typecourbe == "Z" %} checked {% endif %}> Moyenne et écarts-type</label></li>
86 <li><label>Grille&nbsp;: <input type="checkbox" name="grille" {%if valform.grille == "oui" or valform.grille is not defined %} checked {% endif %}></label></li>
87 <li><label>Unité&nbsp;:
88 <select name="unite">
89 <option value="" {% if valform.unite == "" or valform.unite is not defined %} selected {%endif %}>Par défaut</option>
90 {% for unite in ['jours','semaines','mois','années'] %}
91 <option value="{{ unite }}"{% if valform.unite == unite %} selected {% endif %} >{{ unite }}</option>
92 {% endfor %}
93 </select></label></li>
94 <li><label>valeur maximum du graphique (facultatif, syntaxe similaire à l'âge) </label><input type="text" name="maxi" value="{{ valform.maxi }}"></li>
95
96 <li><label>Même échelle sur tous les graphiques&nbsp;: </label><input type="checkbox" name="memechelle" {% if valform.memechelle == 'oui' %} checked{% endif %}></li>
97 <li><label>Grille améliorée&nbsp;:</label><input type="checkbox" name="grilleamelio" {% if valform.grilleamelio == 'oui' %} checked{% endif %}></li>
98
99 <li>Dimensions du graphique&nbsp;: <label>largeur&nbsp;: </label><input type="text" name="largeur" value="{{ valform.largeur }}">
100 <label>hauteur&nbsp;: </label><input type="text" name="hauteur" value="{{ valform.hauteur }}"></li>
101 <li><label>Légende&nbsp;: <input type="checkbox" name="legende" {% if valform.legende == 'oui' %} checked{% endif %}> </label>
102 <label>Position&nbsp;: <select name="positionlegende">
103 {%for (pos,posnom) in [('upper left','Haut gauche'),('upper right','Haut Droite'),('lower left','Bas gauche'),('lower right','Bas droite')] %}
104 <option value="{{ pos }}">{{ posnom }}</option>
105 {% endfor %}
106 </select></label>
107 </li>
108
109 <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>
110 <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, texte et courbe <input type="color" name="couleur_cadretxt" value="{{ valform.couleurs.cadretxt }}"></li>
111 <li>Symbole pour les points de la courbe :
112 <select name="symbole">
113 {% for symb in CONFIG.liste_symboles %}
114 <option value="{{ symb }}" {% if valform.symbole==symb %} selected{% endif %}>{{CONFIG.liste_symboles[symb] | safe}}</option>
115 {% endfor %}
116 </select>
117 </li>
118 </ul>
119
120
121 <!-- Section calculs/Extrapolation !-->
122
123 <h3>Extrapolation</h3>
124 <div class="bouton" onclick="affiche_cache('extra',this)">Afficher</div>
125
126 <div id="extra">
127 <ul>
128 <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>
129 <li><input type="checkbox" name="prolongercourbes">Tracer l'extrapolation sur le graphique.</li>
130
131 <li>Calculer <select name="calculextradata_type">
132 <option value="">Choisir la donnée</option>
133 {% for val in CONFIG.liste_typedonnees %}
134 <option value="{{val}}">{{val}}</option>
135 {% endfor %}
136 </select> à l'âge <input type="text" name="calculextradata_age" value="6m">
137 <input type="checkbox" name="calculextradata_trace"> ... et le voir sur le graphique.</li>
138
139 <li>Calculer l'âge auquel l'enfant aura <input type="text" name="calculextratemps_val">
140 <select name="calculextratemps_type">
141 <option value="">Choisir la donnée</option>
142 {% for val in CONFIG.liste_typedonnees %}
143 <option value="{{val}}">{{ CONFIG.unites_typedonnees[val]}} ({{val}})</option>
144 {% endfor %}
145 </select>
146 <input type="checkbox" name="calculextratemps_trace"> ... et le voir sur le graphique.</li>
147
148 </ul>
149 <p>Les résultats de calculs seront affichés en-dessous des courbes.</p>
150 </div>
151
152 <h3>Courbes multiples</h3>
153 <div class="bouton" onclick="affiche_cache('multi',this)">Afficher</div>
154
155 <div id="multi">
156 <p>Si vous souhaitez tracer sur le même graphique les courbes de différents enfants, c'est ici. 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>
157 <ul>
158 {% for numero_enfant in (2, 3, 4, 5, 6, 7, 8, 9, 10) %}
159 <li {% if numero_enfant>4 %} class="enfants_cache_def"{% endif %}><input type="file" name="fichier_donnees_{{ numero_enfant }}" id="fichier_donnees_{{ numero_enfant }}">
160 Symbole :<select name="symbole_donnees_{{ numero_enfant }}">
161 {% for symb in CONFIG.liste_symboles %}
162 <option value="{{ symb }}" {% if numero_enfant == loop.index %} selected{% endif %}>{{ CONFIG.liste_symboles[symb] | safe}}</option>
163 {% endfor %}
164 </select>
165 <span class="bouton petit" onclick="vide_champ('fichier_donnees_{{ numero_enfant }}')">Enlever ce fichier</span></li>
166 {% endfor %}
167 </ul>
168 <p class="bouton" onclick="revele_enfants()" id="reveleenfants">Plus d'enfants O_o</p>
169 </div>
170
171
172 </form> <!-- Fin du gros méga formulaire -->
173
174 <!-- #################################################################################### -->
175 <!-- section retour -->
176 <hr>
177
178 <div onclick="appelle_image()" class="icon_button">
179 <img src="static/icons/courbe.png">
180 <span class="icon_legend">Je veux les courbes !</span>
181 </div>
182
183 <hr>
184 <div id="courbe_warnings">
185 <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>
186 <ul></ul>
187 </div>
188 <div id="courbe_erreurs">
189 <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>
190 <ul></ul>
191 </div>
192 <div id="sectioncourbe">
193
194 <h2>Courbes</h2>
195 <div id="section_courbe_poids">
196 <img id="courbe_poids">
197
198 <div id="courbe_dl_poids" class="icon_button">
199 <img src="static/icons/export.png">
200 <span class="icon_legend">Télécharger la courbe de poids</span>
201 </div>
202 </div>
203
204 <div id="section_courbe_taille">
205 <img id="courbe_taille">
206
207 <div id="courbe_dl_taille" class="icon_button">
208 <img src="static/icons/export.png">
209 <span class="icon_legend">Télécharger la courbe de taille</span>
210 </div>
211 </div>
212
213 </div>
214
215 <div id="section_extradonnees">
216 <h2>Calculs sur les courbes</h2>
217 <ul id="extradata">
218
219 </ul>
220 </div>
221
222
223 <div id="sectionexport">
224 <h2>Export des données</h2>
225 <p>Vous pouvez télécharger les données afin de ne pas avoir à les re-saisir la prochaine fois.</p>
226
227 <div id="export_dl" class="icon_button">
228 <img src="static/icons/export.png">
229 <span class="icon_legend">Télécharger les données</span>
230 </div>
231 <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>
232 <textarea readonly id="export">
233 </textarea>
234
235 </div>
236
237 {% endblock %}