couleur personnalisée pour les courbes
authorDenise sur Lya <sekhmet@lya>
Wed, 30 Jun 2021 10:29:54 +0000 (12:29 +0200)
committerDenise sur Lya <sekhmet@lya>
Wed, 30 Jun 2021 10:29:54 +0000 (12:29 +0200)
app.py
configuration.py
data/changelog_data.txt
gestion_donnees.py
templates/index.html
trace_courbe.py

diff --git a/app.py b/app.py
index a803d900866c8e4f4c19ea4cdb760c99333c4d0b..206af476ff5d56c3624dbdaee293f3730e3a1335 100644 (file)
--- a/app.py
+++ b/app.py
@@ -10,6 +10,7 @@ from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
 from configuration import config_init,CONFIG
 from gestion_erreurs import initialise_erreurs, debug, niveau_debug, warning
 import gestion_donnees as donnees
+import gestion_couleurs as couleurs
 from trace_courbe import cree_figure
 import faq as f
 
@@ -69,10 +70,10 @@ def courbe_image(ext):
                     #debug("Form 2 : "+str(formulaire_2), liste_err)
                     # Récupérer sous forme python
                     conf2, ljours2, listes_donnees2 = donnees.web_vers_python(formulaire_2,liste_err, court=True)
-                    # Et le symbole
+                    # Le symbole et la couleur
                     symb2 = donnees.gere_symbole(data.get("symbole_donnees_"+str(i)))
-        
-                    enfant2 = donnees.eclate_donnees_additionnelles(conf2, ljours2, listes_donnees2, symb2)
+                    coul2 = couleurs.rgb_vers_tuple(data.get("couleur_donnees_"+str(i),""),CONFIG["couleurs"]["cadretxt"],liste_err)
+                    enfant2 = donnees.eclate_donnees_additionnelles(conf2, ljours2, listes_donnees2, symb2, coul2)
                     enfants_add.append(enfant2)
             
 
index 75088fef81fd8d184d6f50f0e29d089ddb139b6e..fc573ba43dd627bc73aa76d46fb065e2fc9949e1 100644 (file)
@@ -16,7 +16,7 @@ CONFIG["extradata"] = ["calculextradata", "calculextratemps"]
 
 # Liste des symboles autorisés pour les enfants (matplotlib).
 # Sous forme "item: description"
-CONFIG["liste_symboles"] = {"o": "&#x25CF;", "^": "&#x25B2;", "v": "&#x25BC;", "<": "&#x25C0;", ">": "&#x25B6;", "s": "&#x25A0;", "p": "&#11039;", "P": "&#x2795;", "x": "&times", "D": "&#x25C6;" }
+CONFIG["liste_symboles"] = {"o": "&#x25CF;", "^": "&#x25B2;", "v": "&#x25BC;", "<": "&#x25C0;", ">": "&#x25B6;", "s": "&#x25A0;", "p": "&#11039;", "P": "&#x2795;", "x": "&times;", "D": "&#x25C6;", '$\u2665$':"&#x2665;" }
 
 
 # fichiers
@@ -112,6 +112,7 @@ DEFAUT["couleurs"]["courbe2"] = "#00FF00" # vert
 DEFAUT["couleurs"]["courbe3"] = "#FF0000" # rouge
 DEFAUT["couleurs"]["fond"]= "#FFFFFF" # blanc
 DEFAUT["couleurs"]["cadretxt"] = "#000000" # noir
+DEFAUT["couleurs"]["courbeenfant"] = "#000000" # noir
 DEFAUT["couleurs"]["grille"] = "#7f7f7f" # gris
 
 DEFAUT["symbole"] = "o" # Symbole par défaut
index 5726bcede3b307891f2034ebc9a21e7844f29088..5c50ff7498a16da5be1ef9ad2e711620cc8df889 100644 (file)
@@ -1,8 +1,9 @@
 "Version 2.4","29/06/2021","<p>Plus de courbes !
 <ul>
+<li>Pour la courbe, on peut choisir sa couleur et son symbole (demandez-moi des symboles !)</li>
 <li>Les données et la configuration sont celles de l'enfant qu'on a saisi en ""principal""</li>
 <li>Pour les enfants en plus, il faut déjà avoir le fichier de données déjà généré.</li>
-<li>On peut choisir ses symboles pour la courbe ""principale"" ainsi que les autres.</li>
+<li>On choisit alors une couleur et un symbole pour ces courbes additionnels</li>
 </ul>
 </p>"
 
index 8fee99cf0ca8db89970d8fccf7a50fa3218ecc17..5876c5abac245e32b9a99b0103fdefd17d956523 100644 (file)
@@ -322,7 +322,7 @@ def gere_configuration(data,liste_err, court=False):
         configuration["couleurs"] = {}
         # gérer les couleurs
         for clecouleur in DEFAUT["couleurs"]:
-            coul = rgb_vers_tuple(data.get("couleur_"+clecouleur,""),CONFIG["couleurs"][clecouleur],liste_err)
+            coul = rgb_vers_tuple(data.get("couleur_"+clecouleur,""),DEFAUT["couleurs"].get(clecouleur, ""),liste_err)
             configuration["couleurs"][clecouleur] = coul
         
         # symbole
@@ -514,7 +514,7 @@ def fichier_json_vers_configdonnees(chaine,liste_err):
     
 
 #### Pour l'insertion d'une 2e (ou plus) courbe sur le graphique, ue fonction qui sépare tout ça
-def eclate_donnees_additionnelles(conf, ljours, ldonnees, symb):
+def eclate_donnees_additionnelles(conf, ljours, ldonnees, symb, couleur):
     """ conf est la config (on ne garde que le nom) pour un enfant additionnel,
     ljours et ldonnees les dictionnaires de listes contenant les données.
     symb est le symbole choisi pour cette courbe additionnelle (déjà vérifié)
@@ -523,6 +523,7 @@ def eclate_donnees_additionnelles(conf, ljours, ldonnees, symb):
     
     retour = {}
     conf["symbole"] = symb # On ajoute le symbole additionnel
+    conf["couleurcourbe"] = couleur # la couleur
     for typed in CONFIG["liste_typedonnees"]:
         retour[typed] = (conf, ljours[typed], ldonnees[typed])
         
index 65754a5cb59fd7a4f8caffbac0deb5a5d5427ac4..be2ab48f05416674907fefda5ca26305ef668a17 100644 (file)
        </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 %}
        <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>
   <ul>
          {% for numero_enfant in (2, 3, 4, 5, 6, 7, 8, 9, 10) %}
-  <li {% if numero_enfant>4 %} class="enfants_cache_def"{% endif %}><input type="file" name="fichier_donnees_{{ numero_enfant }}" id="fichier_donnees_{{ numero_enfant }}">
-  Symbole :<select name="symbole_donnees_{{ numero_enfant }}">
+  <li {% if numero_enfant>4 %} class="enfants_cache_def"{% endif %}><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>
-  <span class="bouton petit" onclick="vide_champ('fichier_donnees_{{ numero_enfant }}')">Enlever ce fichier</span></li>
+  </select> | 
+  Couleur&nbsp;: <input type="color" name="couleur_donnees_{{ numero_enfant }}" value="{{ valform.couleurs.cadretxt }}">
+  </li>
           {% endfor %}
   </ul>
   <p class="bouton" onclick="revele_enfants()" id="reveleenfants">Plus d'enfants O_o</p>
index 1188fc46816eed270a1caa388cb5b14d3aed42ae..75382de576056c65a7ddc2cdae0df517fc267241 100644 (file)
@@ -155,7 +155,8 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_extracalculs, liste_err, e
         
     ### Tracé pour de bon    
     if l_jours != []:
-        ax.plot(l_jours_conv,l_poids,label=conf["nom"],color=conf["couleurs"]["cadretxt"],marker=conf["symbole"])
+        print(conf["symbole"])
+        ax.plot(l_jours_conv,l_poids,label=conf["nom"],color=conf["couleurs"]["courbeenfant"],marker=conf["symbole"])
         debug("Tracé de la courbe enfant, avec les jours "+str(l_jours_conv),liste_err)
 
 
@@ -169,10 +170,13 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_extracalculs, liste_err, e
                 # Ajouter le nom de cet enfant-là
                 listenoms.append(conf_add["nom"])
                 lj_conv = u.convertit_tableau(lj,unite,liste_err)
-                ax.plot(lj_conv, ld, label=conf_add["nom"], color=conf["couleurs"]["cadretxt"],marker=conf_add["symbole"])
+                debug("Tracé de la courbe additionnelle de "+conf_add["nom"]+" config : "+str(conf_add), liste_err)
+                ax.plot(lj_conv, ld, label=conf_add["nom"], color=conf_add["couleurcourbe"],marker=conf_add["symbole"])
+                print("bla")
                 if conf["sexe"] != conf_add["sexe"]:
                     warning("Attention, tous les enfants n'ont pas le même sexe. La courbe de référence est celle de "+conf["nom"]+" et ne sera pas forcément pertinente pour les autres. Vous pouvez éventuellement essayer la courbe neutre. Remarque : cette alerte s'affichera quand même.", liste_err)
 
+
         # Si y'a un nom on met "courbe de machin"
         if listenoms != []:
             titre += " de " +", ".join(listenoms)
@@ -184,7 +188,7 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_extracalculs, liste_err, e
             else:
                 titre+=" (courbe en âge réel, données OMS décalées)"
         
-        
+        print("coucou")
         #### extrapolatios éventuelles
         # a-t-on demndé des calculs ?
         jextrapole =  conf["non_sauve"]["prolongercourbes"] == "oui"