bug résolu sur les repères additionnels (javascript)
[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" class="data" 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" class="data" name="poids_'+i+'">' ;
39 celltaille.innerHTML = '<input type="text" class="data" name="taille_'+i+'">' ;
40 celltaille.classList.add("donneesplus") ;
41 if(deuxiemeligne.children[3].style.display == "block")
42 celltaille.style.display = "block" ;
43 }
44
45 }
46
47 // Affichage de la textarea "export"
48 function affiche_export()
49 {
50 document.getElementById("export").style.display = "block" ;
51
52 }
53
54 function affiche_cache(id,elemcourant)
55 {
56 // affiche et/ou cache l'élément id, tout en changeant le this
57 // en afficher/masquer
58 elem = document.getElementById(id)
59 if(elem.style.display == "block")
60 {
61 elem.style.display = "none";
62 elemcourant.innerHTML = "Afficher" ;
63 }
64 else
65 {
66 elem.style.display = "block" ;
67 elemcourant.innerHTML = "Masquer" ;
68
69 }
70
71 }
72
73 function affiche_cache_classe(classe)
74 {
75 // affiche et/ou cache tous les éléments de la classe classe (et change le texte du this)
76 var listelem = document.getElementsByClassName(classe) ;
77 var attributaff ;
78 if(listelem[0].style.display != "block") // c'est caché, donc on veut afficher
79 {
80 document.getElementById("bouton_afficher_donneesplus").innerHTML = "Masquer" ;
81 attributaff = "block" ;
82 }
83 else
84 {
85 document.getElementById("bouton_afficher_donneesplus").innerHTML = "Afficher" ;
86 attributaff = "none" ;
87 }
88
89 for(var i=0;i<listelem.length; i++)
90 {
91 listelem[i].style.display = attributaff ;
92 }
93 }
94
95 function affiche_donneesplus_sibesoin()
96 {
97 // fonction à appeler au chargement de la page
98 // On parcourt le tableau des tailles (ou autres) et on voit si y'a
99 // des choses dans les champs
100 var trouve = false ;
101 var liste_cases = document.getElementsByTagName("td") ;
102 //alert(liste_cases[3].children[0].value+liste_cases[3].classList) ;
103 for(i=0; i<liste_cases.length && !(trouve); i++)
104 {
105 // Si une des cases "données plus" contient un truc non vide
106 if(liste_cases[i].classList == "donneesplus" && liste_cases[i].children[0].value != "")
107 {
108 trouve = true ;
109 }
110 }
111 if(trouve)
112 affiche_cache_classe("donneesplus")
113 }
114
115 function change_mode_dates(mode)
116 {
117 // passe de l'affichage en mode "date" à l'affichage en mode "texte" pour les navigateurs
118 // qui gèrent mal le mode date
119 var listeinput = document.getElementsByTagName("input") ;
120 for(i=0;i<listeinput.length;i++)
121 {
122 var nombalise = listeinput[i].name ;
123 if(nombalise == "naissance" || nombalise.slice(0,5) == "date_")
124 {
125 if(mode == "date") {
126 listeinput[i].maxlength = taillemaxdate ;
127 listeinput[i].value = listeinput[i].value.replace(/\//g, "-") ; // remplacer les / par des -
128 }
129
130 listeinput[i].type = mode ;
131 listeinput[i].size = taillemaxdate ;
132 listeinput[i].placeholder = placeholder_date ;
133 }
134 }
135
136 // changer le texte et le bouton.
137 var elem = document.getElementById("changemode") ;
138 if(mode =="text")
139 {
140 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;» avec le calendrier."
141 }
142 else
143 {
144 elem.innerHTML = "<span onclick=\"change_mode_dates('text')\" class=\"bouton\">Cliquez ici</span> pour saisir les dates comme du texte."
145 }
146 }
147
148 function ajoute_enfants()
149 {
150 var eltul = document.getElementById("liste_enfants_add") ;
151 var nblignes = eltul.childElementCount ;
152 var elt1 = eltul.children[0] ;
153 //alert(elt1.innerHTML) ;
154 var texte = elt1.innerHTML ;
155 // Il faut remplacer les nblignes 2 par des nblignes +2
156 texte = texte.replace("fichier_donnees_"+(2), "fichier_donnees_"+(nblignes +2)) ;
157 texte = texte.replace("fichier_donnees_"+(2), "fichier_donnees_"+(nblignes +2)) ;
158 texte = texte.replace("fichier_donnees_"+(2), "fichier_donnees_"+(nblignes +2)) ;
159 texte = texte.replace("symbole_donnees_"+(2), "symbole_donnees_"+(nblignes +2)) ;
160 texte = texte.replace("couleur_donnees_"+(2), "couleur_donnees_"+(nblignes +2)) ;
161
162 // Enlever le "selected"
163 texte = texte.replace("selected", "") ;
164
165 var elt2 = document.createElement("li") ;
166 elt2.innerHTML = texte ;
167
168 // remettre le "selected" au bon endroit
169 var options = elt2.getElementsByTagName("option") ;
170 // Trouver le nblignes-ième élément
171 var numero = (nblignes +1) % options.length ;
172 //Sélectionner l'élément en question
173 var monoption = options[numero] ;
174 monoption.setAttribute("selected", true) ;
175
176 eltul.appendChild(elt2) ;
177
178 }
179
180 function vide_champ(nom)
181 {
182 // vide le champ d'id proposé
183 var elt = document.getElementById(nom) ;
184 elt.value = "" ;
185 }
186
187 function ajoute_reperes()
188 { // ajoute des repères
189 var eltul = document.getElementById("ajoutereperecourbe") ;
190 var nblignes = eltul.childElementCount ;
191 // alert(nblignes) ;
192 var nb_additionnel = 2;
193 for(var i=nblignes; i<nblignes+nb_additionnel ; i++)
194 {
195 var elt = document.createElement("li") ;
196 elt.innerHTML = 'Âge&nbsp;: <input class="data" type="text" name="repere_age_'+i+'" value=""> Texte associé&nbsp;: <input class="texte" type="text" name="repere_texte_'+i+'" value=""> Tracer&nbsp;: <input type="checkbox" name="repere_trace_'+i+'">' ;
197 eltul.appendChild(elt) ;
198 }
199
200 }