]> git.immae.eu Git - perso/Denise/oms.git/blobdiff - templates/index.html
petites amélios, textes explicatifs, liens corrigés
[perso/Denise/oms.git] / templates / index.html
index 32c45e1e1fc9e12ff4a3ea5d0936089836b65322..93a95afa41160edf32b20c7d6ffd862b19da0540 100644 (file)
 
 
   <label for="fichier_donnees" class="icon_button">
-       <img src="static/icons/import.png">
+       <img src="static/icons/import.png" alt="Importer">
        <span class="icon_legend">Importer un fichier</span>
   </label>
-  <input type="file" name="fichier_donnees" id="fichier_donnees" oninput="upload_file()">
+  <input type="file" name="fichier_donnees" id="fichier_donnees" oninput="upload_file('form_import_donnees')">
 </form> 
+
+{% if "fichier_importe" in valform %}
+<p>Version du fichier de sauvegarde : 
+{% if "version" in valform %}
+{{ valform.version }}
+{% else %}
+Inférieure à 2.5{% endif %}
+</p>
+{% if "version" not in valform or valform.version < CONFIG.version %}
+<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>
+Si vous voulez mettre à jour votre fichier de sauvegarde, il suffit de ré-enregistrer les données une fois les courbes générées.
+</p>{% elif valform.version > CONFIG.version %}
+<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>
+{% endif %}
+{% endif %}
+
 </div>
 
 <form id="donnees_enfant">
 <h3>Informations sur l'enfant</h3>
 <div>
        <label for="reset_donnees" class="icon_button">
-               <img src="static/icons/trash.png">
+               <img src="static/icons/trash.png" alt="Effacer">
                <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">      
 </div>
 <ul>
-<li><label>Nom de l'enfant&nbsp;:</label> <input type="text" name="nom" value="{{ valform.nom }}"></li>
+<li><label>Nom de l'enfant&nbsp;:</label> <input type="text" class="texte" name="nom" value="{{ valform.nom }}"></li>
 <li><label>Sexe&nbsp;:</label> <label><input type="radio" name="sexe" value="F" {%if valform.sexe == "F" %}checked{% endif %}> féminin </label>
 | <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>
 <li><label>Date de naissance&nbsp;: </label> <input type="date" name="naissance" value="{{ valform.naissance }}">
        <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>
 <li>Prématuré ? <span class="petit">(expérimental)</span> <span class="bouton" onclick="affiche_cache('prema',this)">Afficher</span>
-<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>
-<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).
+<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. 
+<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>
+<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).
 </div></li>
 
 </ul>
 
 
 
+<!-- Section saisie des données -->
 
-
-<h3>Saisir les données</h3> 
+<h3>Saisie des données</h3> 
 <p><span id="bouton_afficher_donneesplus" class="bouton" onclick="affiche_cache_classe('donneesplus')">Afficher</span> la saisie des tailles.</p> 
 <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>
-<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>
+<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>
 <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>
-<p>Il faut saisir la date ou l'âge. Si les deux sont saisis, seul l'âge comptera.</p>
+<p>Il faut saisir la date ou l'âge. La date a priorité sur l'âge (si la date de naissance est saisie).</p>
 
 <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>
 
 <table id="donneespoids">
-       <tr><th>Âge</th><th>Date</th><th>Poids (kg ou g)</th><th class="donneesplus">Taille (cm) </th></tr>
+       <tr><th>Âge</th><th>Date</th><th>Poids</th><th class="donneesplus">Taille</th></tr>
        
 {% for i in range(valform.nb_data) %}
 <tr><td>
-       <input type="text" name="age_{{ i }}" value="{{ valform['age_'~i] }}">
-</td><td><input type="date" name="date_{{ i }}"></td>
-               <td><input type="text" name="poids_{{ i }}" value="{{ valform['poids_'~i] }}"></td>
-               <td  class="donneesplus"><input type="text" name="taille_{{ i }}" value="{{ valform['taille_'~i] }}"></td>
+       <input type="text" class="data" name="age_{{ i }}" value="{{ valform['age_'~i] }}">
+</td><td><input type="date" name="date_{{ i }}" value="{{ valform['date_'~i] }}"></td>
+               <td><input type="text" class="data" name="poids_{{ i }}" value="{{ valform['poids_'~i] }}"></td>
+               <td  class="donneesplus"><input class="data" type="text" name="taille_{{ i }}" value="{{ valform['taille_'~i] }}"></td>
 
 </tr>
 {% endfor %}
 
 </table>
-<p class="bouton" onclick="ajoutelignes()">Cliquer ici pour ajouter des lignes</p>
-
-
+<p> <span class="bouton" onclick="ajoutelignes()">Cliquer ici</span> pour ajouter des lignes</p>
 
+<!-- Section préférences du graphique -->
 <h3>Préférences du graphique</h3>
 <div class="bouton" onclick="affiche_cache('pref_graphique',this)">Afficher</div>
 
                        <option value="{{ unite }}"{% if valform.unite == unite %} selected {% endif %} >{{ unite }}</option>
        {% endfor %}
                </select></label></li>
-       <li><label>valeur maximum du graphique (facultatif, syntaxe similaire à l'âge) </label><input type="text" name="maxi" value="{{ valform.maxi }}"></li>
+       <li><label>Âge maximum du graphique (facultatif) </label><input type="text" class="data" name="maxi" value="{{ valform.maxi }}"></li>
        
-       <li><label>Même échelle sur tous les graphiques&nbsp;: </label><input type="checkbox" name="memechelle" {% if valform.memechelle == 'oui' %} checked{% endif %}></li>
+       <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>
        <li><label>Grille améliorée&nbsp;:</label><input type="checkbox" name="grilleamelio" {% if valform.grilleamelio == 'oui' %} checked{% endif %}></li>
        
-       <li>Dimensions du graphique&nbsp;: <label>largeur&nbsp;: </label><input type="text" name="largeur" value="{{ valform.largeur }}"> 
-       <label>hauteur&nbsp;: </label><input type="text" name="hauteur" value="{{ valform.hauteur }}"></li>
+       <li>Dimensions du graphique&nbsp;: <label>largeur&nbsp;: </label><input type="text" class="data" name="largeur" value="{{ valform.largeur }}"> 
+       <label>hauteur&nbsp;: </label><input type="text" class="data" name="hauteur" value="{{ valform.hauteur }}"></li>
        <li><label>Légende&nbsp;: <input type="checkbox" name="legende" {% if valform.legende == 'oui' %} checked{% endif %}> </label>
 <label>Position&nbsp;: <select name="positionlegende">
 {%for (pos,posnom) in [('upper left','Haut gauche'),('upper right','Haut Droite'),('lower left','Bas gauche'),('lower right','Bas droite')] %}
        </li>
        
        <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>
-       <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>
+       <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>
+       <li>Symbole pour les points de la courbe : 
+       <select name="symbole">
+               {% for symb in CONFIG.liste_symboles %}
+               <option value="{{ symb }}" {% if valform.symbole==symb %} selected{% endif %}>{{CONFIG.liste_symboles[symb] | safe}}</option>
+               {% endfor %}
+       </select>
+       </li>
+       
+       <li>Ajouter des repères sur les courbes. <span class="bouton petit" onclick="ajoute_reperes()">Plus de repères</span>
+               <ul id="ajoutereperecourbe">
+                       {% for i in range(valform.liste_reperes | length) %}
+                       <li>Âge&nbsp;: <input class="data" type="text" name="repere_age_{{ i }}" value="{{ valform.liste_reperes[i].donnee }}"> 
+                       ou date&nbsp;: <input type="date" name="repere_date_{{ i }}" value="{{ valform.liste_reperes[i].date }}">
+                        Texte associé&nbsp;: <input class="texte" type="text" name="repere_texte_{{ i }}" value="{{ valform.liste_reperes[i].texte }}">
+                        Tracer&nbsp;: <input type="checkbox" name="repere_trace_{{ i }}" {% if valform.liste_reperes[i].trace %} checked {% endif %}>
+                        Afficher la date&nbsp;: <input type="checkbox" name="repere_affichedate_{{ i }}" {% if valform.liste_reperes[i].affichedate %} checked {% endif %}>
+                        </li>
+                       {% endfor %}
+                       {% for j in range(valform.liste_reperes | length, valform.nb_reperes_mini) %}
+                       <li>Âge&nbsp;: <input class="data" type="text" name="repere_age_{{ j }}" value=""> 
+                       ou date&nbsp;: <input type="date" name="repere_date_{{ i }}" value="">
+                        Texte associé&nbsp;: <input class="texte" type="text" name="repere_texte_{{ j }}" value="">
+                        Tracer&nbsp;: <input type="checkbox" name="repere_trace_{{ j }}">
+                        Afficher la date&nbsp;: <input type="checkbox" name="repere_affichedate_{{ i }}"></li>
+
+                       {% endfor %}
+               </ul>
+               
+       </li>
 </ul>
 
 
-
 <!-- Section calculs/Extrapolation !-->
 
 <h3>Extrapolation</h3>
 <div class="bouton" onclick="affiche_cache('extra',this)">Afficher</div>
 
-<ul id="extra">
-       <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>
+<div id="extra">
+<ul>
+       <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>
        <li><input type="checkbox" name="prolongercourbes">Tracer l'extrapolation sur le graphique.</li>
        
        <li>Calculer <select name="calculextradata_type">
        {% for val in CONFIG.liste_typedonnees %}
        <option value="{{val}}">{{val}}</option>
        {% endfor %}
-       </select> à l'âge <input type="text" name="calculextradata_age" value="6m">
+       </select> à l'âge <input type="text" class="data" name="calculextradata_age">
+       ou à la date <input type="date" name="calculextradata_date">
        <input type="checkbox" name="calculextradata_trace"> ... et le voir sur le graphique.</li>
        
-       <li>Calculer l'âge auquel l'enfant aura <input type="text" name="calculextratemps_val">
+       <li>Calculer l'âge auquel l'enfant aura <input type="text" class="data" name="calculextratemps_val">
        <select name="calculextratemps_type">
        <option value="">Choisir la donnée</option>
        {% for val in CONFIG.liste_typedonnees %}
        <input type="checkbox" name="calculextratemps_trace"> ... et le voir sur le graphique.</li>
        
 </ul>
+<p>Les résultats de calculs seront affichés en-dessous des courbes. Ils ne seront pas sauvegardés.</p>
+</div>
+
+<!-- Section courbes multiples -->
+<h3>Courbes multiples</h3>
+<div class="bouton" onclick="affiche_cache('multi',this)">Afficher</div>
+
+<div id="multi">
+       <p>Si vous souhaitez tracer sur le même graphique les courbes de différents enfants, c'est ici.</p>
+       <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>
+       <p>Remarque&nbsp;: lors de l'export, seul l'enfant «&nbsp;principal&nbsp;» est sauvegardé.</p>
+  <ul id="liste_enfants_add">{% for numero_enfant in range(2, CONFIG.nb_fichiers_enfants_add+2) %}
+         <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> | 
+  Symbole&nbsp;: <select name="symbole_donnees_{{ numero_enfant }}"> 
+       {% for symb in CONFIG.liste_symboles %}
+       <option value="{{ symb }}" {% if numero_enfant == loop.index  %} selected{% endif %}>{{ CONFIG.liste_symboles[symb] | safe}}</option>
+       {% endfor %}
+  </select> | 
+  Couleur&nbsp;: <input type="color" name="couleur_donnees_{{ numero_enfant }}" value="{{ valform.couleurs.cadretxt }}"> | 
+  Alias <span class="petit">(remplace le prénom)</span>&nbsp;: <input type="text" name="alias_{{ numero_enfant }}"></li>{% endfor %}
+  </ul>
+  <p class="bouton" onclick="ajoute_enfants()" id="reveleenfants">Plus d'enfants O_o</p>
+  
+</div>
 
-<p>Les résultats de calculs seront affichés en-dessous des courbes.</p>
 
+</form> <!-- Fin du gros méga formulaire -->
 
-</form>
-<!-- section retour -->
+<!-- #################################################################################### -->
 <hr>
 
-<div onclick="appelle_image()" class="icon_button">
-       <img src="static/icons/courbe.png">
-       <span class="icon_legend">Je veux les courbes !</span>
+<!--- Le grobouton -->
+<div>
+       <span onclick="appelle_image()" class="icon_button">
+       <img src="static/icons/courbe.png" alt="Tracer les courbes">
+       <span class="icon_legend">Je veux les courbes !</span></span>
+       <span id="statut_courbes"></span>
 </div>
 
+
+<!-- section retour -->
+
 <hr>
 <div id="courbe_warnings">
-       <p><strong>Alerte&nbsp;:</strong> la courbe a eu quelques soucis à se générer. Voici la liste des erreurs.</p>
+       <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>
        <ul></ul>
 </div>
 <div id="courbe_erreurs">
 
        <h2>Courbes</h2>
        <div id="section_courbe_poids">
-       <img id="courbe_poids">
+       <img id="courbe_poids" src="" alt="">
 
        <div id="courbe_dl_poids" class="icon_button">
-               <img src="static/icons/export.png">
+               <img src="static/icons/export.png" alt="Exporter la courbe de poids">
                <span class="icon_legend">Télécharger la courbe de poids</span>
        </div>
        </div>
 
        <div id="section_courbe_taille">
-       <img id="courbe_taille">
+       <img id="courbe_taille" src="" alt="">
        
        <div id="courbe_dl_taille" class="icon_button">
-               <img src="static/icons/export.png">
+               <img src="static/icons/export.png" alt="Exporter la courbe de taille">
                <span class="icon_legend">Télécharger la courbe de taille</span>
        </div>
        </div>
        </ul>
 </div>
 
+<!-- Section export des courbes -->
 
 <div id="sectionexport">
        <h2>Export des données</h2>
        <p>Vous pouvez télécharger les données afin de ne pas avoir à les re-saisir la prochaine fois.</p>
 
        <div id="export_dl" class="icon_button">
-               <img src="static/icons/export.png">
+               <img src="static/icons/export.png" alt="Exporter les données">
                <span class="icon_legend">Télécharger les données</span>
        </div>
        <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>
-       <textarea readonly id="export">
+       <div id="export">
+       <textarea readonly id="export_texte">
        </textarea>
+       <p><span class="bouton" onclick="copietexte()">Sélectionner et copier</span> le texte dans le presse-papier.</p>
+       </div>
 
 </div>