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