dates au format aaaa/mm/dd acceptées.
[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 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 revele_enfants()
149 {
150 // révèle tous les champs pour enfants additionnels
151 var listelt = document.getElementsByClassName("enfants_cache_def") ;
152 for(i=0; i<listelt.length; i++) {
153 listelt[i].style.display = "block" ;
154 }
155 // Enlève le bouton pour les afficher
156 var bouton = document.getElementById("reveleenfants") ;
157 bouton.style.display = "none" ;
158 }
159
160 function vide_champ(nom)
161 {
162 // vide le champ d'id proposé
163 var elt = document.getElementById(nom) ;
164 elt.value = "" ;
165 }