summaryrefslogtreecommitdiff
path: root/static/outilspage.js
blob: e3502744f6fea2ea07990d6ad02ec757c36a3246 (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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
// fonctions générales pour la page

var taillemaxdate = 10;
var placeholder_date = "aaaa-mm-jj" ;


function ajoutelignes()
{
	// va ajouter 3 lignes au tableau de données
	var table = document.getElementById("donneespoids")
	var nbligne = table.children[0].childElementCount ;
	// les données étant numérotées à partir de 0 on pourra commencer à partir de nbligne -1
	// car il faut éliminer la ligne de header.
	
	// voir dans quel mode on est : date ou texte
	var deuxiemeligne = table.children[0].children[1] ;
	var celldate = deuxiemeligne.children[1] ;
	var mode = celldate.firstChild.type ;
		
	var nbajout = 3 ;
	for(var i=nbligne-1; i<nbligne+nbajout-1; i++)
	{
		var ligne = table.insertRow(i+1);
		var cellage = ligne.insertCell(0);
		var celldate = ligne.insertCell(1);
		var cellpoids = ligne.insertCell(2);
		var celltaille = ligne.insertCell(3);
		
		cellage.innerHTML = '<input type="text" name="age_'+i+'">' ;
		celldate.innerHTML = '<input name="date_'+i+'">' ;
		celldate.firstChild.type = mode ;
		if(mode == "text") // si on a déjà affiché les cases en mode texte, on continue en mode texte
		{
			celldate.firstChild.size = taillemaxdate ;
			celldate.firstChild.maxlength = taillemaxdate ;
			celldate.firstChild.placeholder = placeholder_date ;
		}
		cellpoids.innerHTML = '<input type="text" name="poids_'+i+'">' ;	
		celltaille.innerHTML = '<input type="text" name="taille_'+i+'">' ;
		celltaille.classList.add("donneesplus") ;
		if(deuxiemeligne.children[3].style.display == "block")
			celltaille.style.display = "block" ;
	}
	
}

// Affichage de la textarea "export"
function affiche_export()
{
	document.getElementById("export").style.display = "block" ;
	
}

function affiche_cache(id,elemcourant)
{
	// affiche et/ou cache l'élément id, tout en changeant le this
	// en afficher/masquer
	elem = document.getElementById(id)
	if(elem.style.display == "block")
	{
		elem.style.display = "none";
		elemcourant.innerHTML = "Afficher" ;
	}
	else
	{
		elem.style.display = "block" ;
		elemcourant.innerHTML = "Masquer" ;
		
	}
	
}

function affiche_cache_classe(classe)
{
	// affiche et/ou cache tous les éléments de la classe classe (et change le texte du this)
	var listelem = document.getElementsByClassName(classe) ;
	var attributaff ;
	if(listelem[0].style.display != "block") // c'est caché, donc on veut afficher
	{
		document.getElementById("bouton_afficher_donneesplus").innerHTML = "Masquer" ;
		attributaff = "block" ;
	}
	else
	{
		document.getElementById("bouton_afficher_donneesplus").innerHTML = "Afficher" ;
		attributaff = "none" ;
	}
	
	for(var i=0;i<listelem.length; i++)
	{
		listelem[i].style.display = attributaff ;
	}
}

function affiche_donneesplus_sibesoin()
{
	// fonction à appeler au chargement de la page
	// On parcourt le tableau des tailles (ou autres) et on voit si y'a
	// des choses dans les champs
	var trouve = false ;
	var liste_cases = document.getElementsByTagName("td") ;
	//alert(liste_cases[3].children[0].value+liste_cases[3].classList) ;
	for(i=0; i<liste_cases.length && !(trouve); i++)
	{
		// Si une des cases "données plus" contient un truc non vide
		if(liste_cases[i].classList == "donneesplus" && liste_cases[i].children[0].value != "")
		{
			trouve = true ;
		}
	}
	if(trouve)
		affiche_cache_classe("donneesplus")
}

function change_mode_dates(mode)
{
	// passe de l'affichage en mode "date" à l'affichage en mode "texte" pour les navigateurs
	// qui gèrent mal le mode date
	var listeinput = document.getElementsByTagName("input") ;
	for(i=0;i<listeinput.length;i++)
	{
		var nombalise = listeinput[i].name ;
		if(nombalise == "naissance" || nombalise.slice(0,5) == "date_")
		{
			if(mode == "date") {
				listeinput[i].maxlength = taillemaxdate ;
				listeinput[i].value = listeinput[i].value.replace(/\//g, "-") ; // remplacer les / par des -
			}

			listeinput[i].type = mode ;
			listeinput[i].size = taillemaxdate ;
			listeinput[i].placeholder = placeholder_date ;
		}
	}
	
	// changer le texte et le bouton.
	var elem = document.getElementById("changemode") ;
	if(mode =="text") 
	{
		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."
	}
	else
	{
		elem.innerHTML = "<span onclick=\"change_mode_dates('text')\" class=\"bouton\">Cliquez ici</span> pour saisir les dates comme du texte."
	}
}

function revele_enfants()
{
	// révèle tous les champs pour enfants additionnels
	var listelt = document.getElementsByClassName("enfants_cache_def") ;
	for(i=0; i<listelt.length; i++) {
		listelt[i].style.display = "block" ;
	}
	// Enlève le bouton pour les afficher
	var bouton = document.getElementById("reveleenfants") ;
	bouton.style.display = "none" ;
}

function vide_champ(nom) 
{
	// vide le champ d'id proposé
	var elt = document.getElementById(nom) ;
	elt.value = "" ;
}