Subversion Repositories eFlore/Applications.cel

Rev

Rev 2248 | Rev 3133 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2248 Rev 3131
1
//+---------------------------------------------------------------------------------------------------------+
1
//+---------------------------------------------------------------------------------------------------------+
2
// AUTO-COMPLÉTION Noms Scientifiques
2
// AUTO-COMPLÉTION Noms Scientifiques
3
function ajouterAutocompletionNomSci() {
3
function ajouterAutocompletionNomSci() {
4
	$('#taxon').autocomplete({
4
	$('#taxon').autocomplete({
5
		source: function(requete, add){  
5
		source: function(requete, add){  
6
			// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
6
			// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
7
			requete = "";
7
			requete = "";
8
			var url = getUrlAutocompletionNomSci()+"/"+formaterRequeteNomSci($('#taxon').val());
8
			var url = getUrlAutocompletionNomSci()+"/"+formaterRequeteNomSci($('#taxon').val());
9
			$.getJSON(url, requete, function(data) {  
9
			$.getJSON(url, requete, function(data) {  
10
				var suggestions = traiterRetourNomSci(data);
10
				var suggestions = traiterRetourNomSci(data);
11
				add(suggestions);  
11
				add(suggestions);  
12
            });
12
            });
13
        },
13
        },
14
        html: true
14
        html: true
15
	});
15
	});
16
}
16
}
17
 
17
 
18
function formaterRequeteNomSci(nomSci) {
18
function formaterRequeteNomSci(nomSci) {
19
	var nomSciCoupe = nomSci.split(' ');
19
	var nomSciCoupe = nomSci.split(' ');
20
	if(nomSciCoupe.length >= 2) {
20
	if(nomSciCoupe.length >= 2) {
21
		nomSci = nomSciCoupe[0]+'/'+nomSciCoupe[1];
21
		nomSci = nomSciCoupe[0]+'/'+nomSciCoupe[1];
22
	} else {
22
	} else {
23
		nomSci = nomSciCoupe[0]+'/*';
23
		nomSci = nomSciCoupe[0]+'/*';
24
	}
24
	}
25
	return nomSci;
25
	return nomSci;
26
}
26
}
27
 
27
 
28
function traiterRetourNomSci(data) {
28
function traiterRetourNomSci(data) {
29
	var suggestions = [];  
29
	var suggestions = [];  
30
	if (data != undefined) {
30
	if (data != undefined) {
31
		$.each(data, function(i, val) {
31
		$.each(data, function(i, val) {
32
			var nom = {label : '', value : ''};
32
			var nom = {label : '', value : ''};
33
			if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {
33
			if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {
34
				nom.label = "...";
34
				nom.label = "...";
35
				nom.value = val[0];
35
				nom.value = val[0];
36
				suggestions.push(nom);
36
				suggestions.push(nom);
37
				return false;
37
				return false;
38
			} else {
38
			} else {
39
				nom.label = val[0];
39
				nom.label = val[0];
40
				nom.value = val[0];
40
				nom.value = val[0];
41
				suggestions.push(nom);
41
				suggestions.push(nom);
42
			}			
42
			}			
43
		});
43
		});
44
	}
44
	}
45
		
45
		
46
	return suggestions;
46
	return suggestions;
47
}
47
}
48
 
48
 
49
function ajouterAutocompletionCommunes() {
49
function ajouterAutocompletionCommunes() {
50
	$('#commune').autocomplete({
50
	$('#commune').autocomplete({
51
		source: function(requete, add){  
51
		source: function(requete, add){  
52
			// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
52
			// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
53
			requete = "";
53
			requete = "";
54
			var url = getUrlAutocompletionCommunes()+"/"+$('#commune').val();
54
			var url = getUrlAutocompletionCommunes()+"/"+$('#commune').val();
55
			$.getJSON(url, requete, function(data) {  
55
			$.getJSON(url, requete, function(data) {  
56
				var suggestions = traiterRetourCommune(data);
56
				var suggestions = traiterRetourCommune(data);
57
				add(suggestions);  
57
				add(suggestions);  
58
            });
58
            });
59
        },
59
        },
60
        html: true
60
        html: true
61
	});
61
	});
62
	
62
	
63
	$( "#commune" ).bind("autocompleteselect", function(event, ui) {
63
	$( "#commune" ).bind("autocompleteselect", function(event, ui) {
64
		console.log(ui.item);
64
		console.log(ui.item);
65
		$("#commune").data(ui.item.value);
65
		$("#commune").data(ui.item.value);
66
		$("#dept").data(ui.item.code);
66
		$("#dept").data(ui.item.code);
67
		$("#dept").val(ui.item.code);
67
		$("#dept").val(ui.item.code);
68
	});
68
	});
69
}
69
}
70
 
70
 
71
function getUrlAutocompletionNomSci() {
71
function getUrlAutocompletionNomSci() {
72
	var url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL+"/"+REFERENTIEL_NOMS_SCI;
72
	var url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL+"/"+REFERENTIEL_NOMS_SCI;
73
	return url;
73
	return url;
74
}
74
}
75
 
75
 
76
function separerCommuneDepartement(chaine) {
76
function separerCommuneDepartement(chaine) {
77
	var deptCommune = chaine.split(' (');
77
	var deptCommune = chaine.split(' (');
78
	if(deptCommune[1] != null && deptCommune[1] != undefined) {
78
	if(deptCommune[1] != null && deptCommune[1] != undefined) {
79
		deptCommune[1] = deptCommune[1].replace(')', '');
79
		deptCommune[1] = deptCommune[1].replace(')', '');
80
	} else {
80
	} else {
81
		deptCommune[1] = '';
81
		deptCommune[1] = '';
82
	}
82
	}
83
	return deptCommune;
83
	return deptCommune;
84
}
84
}
85
 
85
 
86
function traiterRetourCommune(data) {
86
function traiterRetourCommune(data) {
87
	var suggestions = [];  
87
	var suggestions = [];  
88
	if (data != undefined) {
88
	if (data != undefined) {
89
		$.each(data, function(i, val) {
89
		$.each(data, function(i, val) {
90
			var nom = {label : '', value : ''};
90
			var nom = {label : '', value : ''};
91
			if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {
91
			if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {
92
				nom.label = "...";
92
				nom.label = "...";
93
				nom.value = val[0];
93
				nom.value = val[0];
94
				suggestions.push(nom);
94
				suggestions.push(nom);
95
				return false;
95
				return false;
96
			} else {
96
			} else {
97
				nom.label = val[0];
97
				nom.label = val[0];
98
				var deptCommune = separerCommuneDepartement(val[0]);
98
				var deptCommune = separerCommuneDepartement(val[0]);
99
				nom.value = deptCommune[0];
99
				nom.value = deptCommune[0];
100
				nom.code = deptCommune[1];
100
				nom.code = deptCommune[1];
101
				suggestions.push(nom);
101
				suggestions.push(nom);
102
			}			
102
			}			
103
		});
103
		});
104
	}
104
	}
105
		
105
		
106
	return suggestions;
106
	return suggestions;
107
}
107
}
108
 
108
 
109
function getUrlAutocompletionCommunes() {
109
function getUrlAutocompletionCommunes() {
110
	var url = SERVICE_AUTOCOMPLETION_COMMUNE_URL;
110
	var url = SERVICE_AUTOCOMPLETION_COMMUNE_URL;
111
	return url;
111
	return url;
112
}
112
}
113
 
113
 
114
function getUrlExport() {
114
function getUrlExport() {
115
	var url = SERVICE_EXPORT_URL;
115
	var url = SERVICE_EXPORT_URL;
116
	return url;
116
	return url;
117
}
117
}
118
 
118
 
119
function configurerValidationFormulaire() {
119
function configurerValidationFormulaire() {
120
	$("#form-export-obs").validate({
120
	$("#form-export-obs").validate({
121
		rules: {
121
		rules: {
122
			utilisateur: {
122
			utilisateur: {
123
				email: true
123
				email: true
124
			},
124
			},
125
			date_debut: {
125
			date_debut: {
126
				date: true,
126
				date: true,
127
				date_valid : $('#date_debut')
127
				date_valid : $('#date_debut')
128
			},
128
			},
129
			date_fin: {
129
			date_fin: {
130
				date: true,
130
				date: true,
131
				date_valid : $('#date_fin')
131
				date_valid : $('#date_fin')
132
			},
132
			},
133
			dept: {
133
			dept: {
134
				dept_valid : $('#dept')
134
				dept_valid : $('#dept')
135
			},
135
			},
136
			num_taxon: {
136
			num_taxon: {
137
				number: true
137
				number: true
138
			}
138
			}
139
		},
139
		},
140
		messages: {
140
		messages: {
141
			email: "L'email de l'utilisateur doit être valide",
141
			email: "L'email de l'utilisateur doit être valide",
142
			num_taxon: "Le numéro taxonomique doit être un entier"
142
			num_taxon: "Le numéro taxonomique doit être un entier"
143
		},
143
		},
144
		submitHandler: function(form) {
144
		submitHandler: function(form) {
145
			if($(form).valid()) {
145
			if($(form).valid()) {
146
				validerExport();
146
				validerExport();
147
			}
147
			}
148
			return false;
148
			return false;
149
		}
149
		}
150
	});
150
	});
151
	
151
	
152
	$.validator.addMethod("dept_valid",  function(valeur) {
152
	$.validator.addMethod("dept_valid",  function(valeur) {
153
			return valeur == "" || valeur.match(/^\d+(?:,\d+)*$/); 
153
			return valeur == "" || valeur.match(/^\d+(?:,\d+)*$/); 
154
		}, "Le ou les département(s) doivent être sur deux chiffres, séparés par des virgules"
154
		}, "Le ou les département(s) doivent être sur deux chiffres, séparés par des virgules"
155
	);
155
	);
156
	
156
	
157
	$.validator.addMethod("date_valid",  function(element) {
157
	$.validator.addMethod("date_valid",  function(element) {
158
			var valid = true;
158
			var valid = true;
159
			var dateDebut = $('#date_debut').datepicker("getDate");
159
			var dateDebut = $('#date_debut').datepicker("getDate");
160
			var dateFin = $('#date_fin').datepicker("getDate");
160
			var dateFin = $('#date_fin').datepicker("getDate");
161
			if($('#date_debut').val() != "" && $('#date_fin').val() != "") {
161
			if($('#date_debut').val() != "" && $('#date_fin').val() != "") {
162
				if(dateDebut != null && dateFin != null) {
162
				if(dateDebut != null && dateFin != null) {
163
					valid = dateDebut <= dateFin;
163
					valid = dateDebut <= dateFin;
164
				} else {
164
				} else {
165
					valid = dateDebut == null || dateFin == null;
165
					valid = dateDebut == null || dateFin == null;
166
				}
166
				}
167
			}
167
			}
168
			return valid; 
168
			return valid; 
169
		}, "Les dates de début et de fin doivent être au format jj/mm/aaaa et la première inférieur à la dernière, si les deux sont présentes"
169
		}, "Les dates de début et de fin doivent être au format jj/mm/aaaa et la première inférieur à la dernière, si les deux sont présentes"
170
	);
170
	);
171
}
171
}
172
 
172
 
173
function validerExport() {
173
function validerExport() {
174
	var urlCalcul = getUrlExport()+'/calcul';
174
	var urlCalcul = getUrlExport()+'/calcul';
175
	var valeurs =
175
	var valeurs =
176
		$.grep($('#form-export-obs').serializeArray(), function(field, i) {
176
		$.grep($('#form-export-obs').serializeArray(), function(field, i) {
177
			if($.trim(field.value) == '') return false;
177
			if($.trim(field.value) == '') return false;
178
			return true;
178
			return true;
179
		});
179
		});
180
 
180
 
181
	$.get(urlCalcul, valeurs, function(data) {
181
	$.get(urlCalcul, valeurs, function(data) {
182
		if(data.length == 1) {
182
		if(data.length == 1) {
183
			window.location.href = data[0];
183
			window.location.href = data[0];
184
		} else {
184
		} else {
185
			$('.attention').effect("highlight", {}, 1500);
185
			$('.attention').effect("highlight", {}, 1500);
186
			afficherListeTelechargements(data);
186
			afficherListeTelechargements(data);
187
		}
187
		}
188
	});
188
	});
189
}
189
}
190
 
190
 
191
function afficherListeTelechargements(urls) {
191
function afficherListeTelechargements(urls) {
192
	var htmlListe = '<ul>';
192
	var htmlListe = '<ul>';
193
	$.each(urls, function(index, url) {
193
	$.each(urls, function(index, url) {
194
		htmlListe += '<li><a class="lien_telechargement" href="'+url+'">Feuille n°'+(index+1)+'</a></li>';
194
		htmlListe += '<li><a class="lien_telechargement" href="'+url+'">Feuille n°'+(index+1)+'</a></li>';
195
	});
195
	});
196
	htmlListe += '</ul>';
196
	htmlListe += '</ul>';
197
	$('#liste_telechargements').html(htmlListe);
197
	$('#liste_telechargements').html(htmlListe);
198
}
198
}
199
 
199
 
200
function ouvrirDansUneNouvelleFenetre(evenement, lien) {
200
function ouvrirDansUneNouvelleFenetre(evenement, lien) {
201
	evenement.preventDefault();
201
	evenement.preventDefault();
202
	window.open(lien.attr("href"));
202
	window.open(lien.attr("href"));
203
}
203
}
204
 
204
 
205
$(document).ready(function() {
205
$(document).ready(function() {
206
	ajouterAutocompletionNomSci();
206
	ajouterAutocompletionNomSci();
207
	ajouterAutocompletionCommunes();
207
	ajouterAutocompletionCommunes();
208
	$("#date_debut").datepicker($.datepicker.regional['fr']);
208
	$("#date_debut").datepicker($.datepicker.regional['fr']);
209
	$("#date_fin").datepicker($.datepicker.regional['fr']);
209
	$("#date_fin").datepicker($.datepicker.regional['fr']);
210
	$(".lien_telechargement").live("click", function(event) {ouvrirDansUneNouvelleFenetre(event, $(this))});
210
	$(".lien_telechargement").live("click", function(event) {ouvrirDansUneNouvelleFenetre(event, $(this))});
211
	$('#label_options_export').toggle(
-
 
212
		function() {
-
 
213
			$('#checkbox_set_cols').show();
-
 
214
			$('#label_options_export').text("Cacher les options d'export avancées");
-
 
215
		},
-
 
216
		function() {
-
 
217
			$('#checkbox_set_cols').hide();
-
 
218
			$('#label_options_export').text("Afficher les options d'export avancées");
-
 
219
		}
-
 
220
	);
211
	
221
	configurerValidationFormulaire();
212
	configurerValidationFormulaire();
222
});
213
});