]>
Commit | Line | Data |
---|---|---|
1 | #!/usr/bin/env python3 | |
2 | # -*- coding: utf-8 -*- | |
3 | ||
4 | from configuration import CONFIG | |
5 | from gestion_erreurs import warning | |
6 | from math import log | |
7 | ||
8 | ##################### outils pour affichage et choix de l'unité | |
9 | ||
10 | def choix_unite(maxi): | |
11 | """ en fonction de l'âge maxi, on choisit une unité pertinente : jours, semaine, mois, année""" | |
12 | if maxi<40: | |
13 | return "jours" | |
14 | elif maxi <100: | |
15 | return "semaines" | |
16 | elif maxi<25*CONFIG["jours_dans_mois"]: | |
17 | return "mois" | |
18 | else: | |
19 | return "années" | |
20 | ||
21 | def choix_echelle_data(typedonnees, donneemax): | |
22 | """ en fonction du type de données et du maxi (on suppose qu'on part à 0), | |
23 | on choisit un intervalle raisonnable | |
24 | On renvoie le couple des pas (majeur, mineur) | |
25 | (0,0) en cas de problème avec le typedonnnes """ | |
26 | ||
27 | if typedonnees not in CONFIG["liste_typedonnees"]: | |
28 | print("Type de données non valide : "+typedonnees) | |
29 | return (0,0) | |
30 | ||
31 | if typedonnees == "poids": | |
32 | if donneemax>15: | |
33 | return (5,1) | |
34 | elif donneemax > 10: | |
35 | return (1,0.5) | |
36 | else: | |
37 | return (1,0.2) | |
38 | if typedonnees == "taille": | |
39 | if donneemax>100: | |
40 | return (10,2) | |
41 | else: | |
42 | return (5,1) | |
43 | ||
44 | def choix_echelle_temps(unite, tempsmaxi): | |
45 | """ en fonction de l'unité voulue et du temps maximal (donné dans l'unité), | |
46 | on choisit un intervalle raisonnable entre les pas. | |
47 | On renvoie le couple des pas (majeur, mineur). | |
48 | (0,0) en cas de problème avec l'unité | |
49 | On met 0 en 2e arg si pas de grille secondaire""" | |
50 | if unite not in CONFIG["liste_unites"]: | |
51 | print("Unité non valide ! "+unite) | |
52 | return (0,0) | |
53 | ||
54 | if unite=="jours": | |
55 | if tempsmaxi > 60: # pourquoi mettre en jours ? | |
56 | return (30,1) | |
57 | elif tempsmaxi >15: | |
58 | return (7,1) | |
59 | else: | |
60 | return (1,0) | |
61 | if unite=="semaines": | |
62 | if tempsmaxi >50: | |
63 | return (5,1) | |
64 | elif tempsmaxi > 10: | |
65 | return (2,1) | |
66 | else: | |
67 | return (1,1/7) # On met en jours | |
68 | ||
69 | if unite=="mois": | |
70 | if tempsmaxi > 24: | |
71 | return (12,1) | |
72 | elif tempsmaxi > 10: | |
73 | return (1,0) | |
74 | else: | |
75 | return (1,0.25) # on met en semaines à peu près (quart de mois) | |
76 | ||
77 | if unite=="années": | |
78 | return (1,1/12) # années / mois | |
79 | ||
80 | def convertitunite(jours,unite,liste_err): | |
81 | """ convertit des jours à l'unité voulue | |
82 | renvoie des float""" | |
83 | if unite=="jours": | |
84 | return jours | |
85 | elif unite=="mois": | |
86 | return jours/CONFIG["jours_dans_mois"] | |
87 | elif unite=="années": | |
88 | return jours/CONFIG["jours_dans_annee"] | |
89 | elif unite=="semaines": | |
90 | return jours/CONFIG["jours_dans_semaine"] | |
91 | else: | |
92 | warning("erreur sur l'unité : "+unite+" On laisse en jours",liste_err) | |
93 | return jours | |
94 | ||
95 | def convertit_tableau(tableau,unite,liste_err): | |
96 | """ convertit un tableau de jours en une autre unité. | |
97 | Renvoie le nouveau tableau""" | |
98 | return [convertitunite(elt,unite,liste_err) for elt in tableau] | |
99 | ||
100 | def arrondit_donnee(donnee, typed, arrondi=0): | |
101 | """ on arrondit la donnée de type typed (à voir dans CONFIG) | |
102 | à arrondit près. SI y'a 0 on va voir dans la config. | |
103 | Pour l'arrondit on met par ex 1 pour arrondir à 1 pr_s, 0.1 pour arrondir | |
104 | au dixième etc""" | |
105 | if arrondi==0: | |
106 | arrondi = CONFIG["arrondis_typedonnees"][typed] | |
107 | if arrondi==0: | |
108 | print("Euuuh ça va merder, y'a une div par 0 dans arrondit_donnees !") | |
109 | ||
110 | d_arr = round(donnee/arrondi)*arrondi | |
111 | nbchiffresvoulus = int(log(1/arrondi, 10))+1 # max sur le nombre de chiffres après la virgule qu'on doit avoir | |
112 | return round(d_arr, nbchiffresvoulus) |