summaryrefslogtreecommitdiff
path: root/gestion_unites.py
blob: b97d90b58ed6cfcfd44b77c8a854ab16d6a5d195 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from configuration import CONFIG
from gestion_erreurs import * 

##################### outils pour affichage et choix de l'unité

def choix_unite(maxi):
    """ en fonction de l'âge maxi, on choisit une unité pertinente : jours, semaine, mois, année"""
    if maxi<40:
        return "jours"
    elif maxi <100:
        return "semaines"
    elif maxi<25*CONFIG["jours_dans_mois"]:
        return "mois"
    else:
        return "années"
    
def choix_echelle_data(typedonnees, donneemax):
    """ en fonction du type de données et du maxi (on suppose qu'on part à 0),
    on choisit un intervalle raisonnable
    On renvoie le couple des pas (majeur, mineur)
    (0,0) en cas de problème avec le typedonnnes """

    if typedonnees not in CONFIG["liste_typedonnees"]:
        print("Type de données non valide : "+typedonnees)
        return (0,0)

    if typedonnees == "poids":
        if donneemax>15:
            return (5,1)
        elif donneemax > 10:
            return (2,1)
        else:
            return (1,0.2)
    if typedonnees == "taille":
        if donneemax>100:
            return (10,2)
        else:
            return (5,1)
        
def choix_echelle_temps(unite, tempsmaxi):
    """ en fonction de l'unité voulue et du temps maximal (donné dans l'unité),
    on choisit un intervalle raisonnable entre les pas.
    On renvoie le couple des pas (majeur, mineur).
    (0,0) en cas de problème avec l'unité
    On met 0 en 2e arg si pas de grille secondaire"""
    if unite not in CONFIG["liste_unites"]:
        print("Unité non valide ! "+unite)
        return (0,0)
    
    if unite=="jours":
        if tempsmaxi > 60:  # pourquoi mettre en jours ?
            return (30,1)
        elif tempsmaxi >20:
            return (7,1)
        else:
            return (1,0)
    if unite=="semaines":
        if tempsmaxi >50:
            return (5,1)
        elif tempsmaxi > 15:
            return (2,1)
        else:
            return (1,1/7) # On met en jours
    
    if unite=="mois":
        if tempsmaxi > 30:
            return (2,1)
        elif tempsmaxi > 10:
            return (1,0)
        else:
            return (1,0.25) # on met en semaines
        
    if unite=="années":
        return (1,1/12) # années / mois
    
def convertitunite(jours,unite,liste_err):
    """ convertit des jours à l'unité voulue
    renvoie des float"""
    if unite=="jours":
        return jours
    elif unite=="mois":
        return jours/CONFIG["jours_dans_mois"]
    elif unite=="années":
        return jours/CONFIG["jours_dans_annee"]
    elif unite=="semaines":
        return jours/CONFIG["jours_dans_semaine"]
    else:
        warning("erreur sur l'unité : "+unite+" On laisse en jours",liste_err)
        return jours

def convertit_tableau(tableau,unite,liste_err):
    """ convertit un tableau de jours en une autre unité.
    Renvoie le nouveau tableau"""
    return [convertitunite(elt,unite,liste_err) for elt in tableau]