bug corrigé (ajout de lignes) + taille cachée par défaut.
[perso/Denise/oms.git] / static / outilspage.js
1 // fonctions générales pour la page
2
3 var taillemaxdate = 10;
4 var placeholder_date = "aaaa-mm-jj" ;
5
6
7 function ajoutelignes()
8 {
9 // va ajouter 3 lignes au tableau de données
10 var table = document.getElementById("donneespoids")
11 var nbligne = table.children[0].childElementCount ;
12 // les données étant numérotées à partir de 0 on pourra commencer à partir de nbligne -1
13 // car il faut éliminer la ligne de header.
14
15 // voir dans quel mode on est : date ou texte
16 var deuxiemeligne = table.children[0].children[1] ;
17 var celldate = deuxiemeligne.children[1] ;
18 var mode = celldate.firstChild.type ;
19
20 var nbajout = 3 ;
21 for(var i=nbligne-1; i<nbligne+nbajout-1; i++)
22 {
23 var ligne = table.insertRow(i+1);
24 var cellage = ligne.insertCell(0);
25 var celldate = ligne.insertCell(1);
26 var cellpoids = ligne.insertCell(2);
27 var celltaille = ligne.insertCell(3);
28
29 cellage.innerHTML = '<input type="text" name="age_'+i+'">' ;
30 celldate.innerHTML = '<input name="date_'+i+'">' ;
31 celldate.firstChild.type = mode ;
32 if(mode == "text") // si on a déjà affiché les cases en mode texte, on continue en mode texte
33 {
34 celldate.firstChild.size = taillemaxdate ;
35 celldate.firstChild.maxlength = taillemaxdate ;
36 celldate.firstChild.placeholder = placeholder_date ;
37 }
38 cellpoids.innerHTML = '<input type="text" name="poids_'+i+'">' ;
39 celltaille.innerHTML = '<input type="text" name="taille_'+i+'">' ;
40 celltaille.classList.add("donneesplus") ;
41 }
42
43 }
44
45 // Affichage de la textarea "export"
46 function affiche_export()
47 {
48 document.getElementById("export").style.display = "block" ;
49
50 }
51
52 function affiche_cache(id,elemcourant)
53 {
54 // affiche et/ou cache l'élément id, tout en changeant le this
55 // en afficher/masquer
56 elem = document.getElementById(id)
57 if(elem.style.display == "block")
58 {
59 elem.style.display = "none";
60 elemcourant.innerHTML = "Afficher" ;
61 }
62 else
63 {
64 elem.style.display = "block" ;
65 elemcourant.innerHTML = "Masquer" ;
66
67 }
68
69 }
70
71 function affiche_cache_classe(classe)
72 {
73 // affiche et/ou cache tous les éléments de la classe classe (et change le texte du this)
74 var listelem = document.getElementsByClassName(classe) ;
75 var attributaff ;
76 if(listelem[0].style.display != "block") // c'est caché, donc on veut afficher
77 {
78 document.getElementById("bouton_afficher_donneesplus").innerHTML = "Masquer" ;
79 attributaff = "block" ;
80 }
81 else
82 {
83 document.getElementById("bouton_afficher_donneesplus").innerHTML = "Afficher" ;
84 attributaff = "none" ;
85 }
86
87 for(var i=0;i<listelem.length; i++)
88 {
89 listelem[i].style.display = attributaff ;
90 }
91 }
92
93 function affiche_donneesplus_sibesoin()
94 {
95 // fonction à appeler au chargement de la page
96 // On parcourt le tableau des tailles (ou autres) et on voit si y'a
97 // des choses dans les champs
98 var trouve = false ;
99 var liste_cases = document.getElementsByTagName("td") ;
100 //alert(liste_cases[3].children[0].value+liste_cases[3].classList) ;
101 for(i=0; i<liste_cases.length && !(trouve); i++)
102 {
103 // Si une des cases "données plus" contient un truc non vide
104 if(liste_cases[i].classList == "donneesplus" && liste_cases[i].children[0].value != "")
105 {
106 trouve = true ;
107 }
108 }
109 if(trouve)
110 affiche_cache_classe("donneesplus")
111 }
112
113 function change_mode_dates(mode)
114 {
115 // passe de l'affichage en mode "date" à l'affichage en mode "texte" pour les navigateurs
116 // qui gèrent mal le mode date
117 var listeinput = document.getElementsByTagName("input") ;
118 for(i=0;i<listeinput.length;i++)
119 {
120 var nombalise = listeinput[i].name ;
121 if(nombalise == "naissance" || nombalise.slice(0,5) == "date_")
122 {
123 listeinput[i].type = mode ;
124 if(mode == "date")
125 listeinput[i].maxlength = taillemaxdate ;
126 listeinput[i].size = taillemaxdate ;
127 listeinput[i].placeholder = placeholder_date ;
128 }
129 }
130
131 // changer le texte et le bouton.
132 var elem = document.getElementById("changemode") ;
133 if(mode =="text")
134 {
135 elem.innerHTML = "Saisie des dates au format aaaa-mm-jj. <span onclick=\"change_mode_dates('date')\" class=\"bouton\">Cliquez ici</span> pour revenir à une saisie de dates «&nbsp;confortable&nbsp;»."
136 }
137 else
138 {
139 elem.innerHTML = "<span onclick=\"change_mode_dates('text')\" class=\"bouton\">Cliquez ici</span> pour saisir les dates comme du texte."
140 }
141 }