Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 3131 Rev 3133
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
				dateCel: true,
127
				date_valid : $('#date_debut')
127
				date_valid : $('#date_debut')
128
			},
128
			},
129
			date_fin: {
129
			date_fin: {
130
				date: true,
130
				dateCel: 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(
-
 
153
		"dept_valid",
-
 
154
		function (valeur) {
153
			return valeur == "" || valeur.match(/^\d+(?:,\d+)*$/); 
155
			return valeur == "" || valeur.match(/^\d+(?:,\d+)*$/);
-
 
156
		},
154
		}, "Le ou les département(s) doivent être sur deux chiffres, séparés par des virgules"
157
		"Le ou les département(s) doivent être sur deux chiffres, séparés par des virgules"
155
	);
158
	);
156
	
-
 
157
	$.validator.addMethod("date_valid",  function(element) {
159
	$.validator.addMethod(
-
 
160
		"date_valid",
-
 
161
		function (element) {
158
			var valid = true;
162
			var valid = true;
159
			var dateDebut = $('#date_debut').datepicker("getDate");
163
			var dateDebut = $('#date_debut').datepicker("getDate");
160
			var dateFin = $('#date_fin').datepicker("getDate");
164
			var dateFin = $('#date_fin').datepicker("getDate");
161
			if($('#date_debut').val() != "" && $('#date_fin').val() != "") {
165
			if ($('#date_debut').val() != "" && $('#date_fin').val() != "") {
162
				if(dateDebut != null && dateFin != null) {
166
				if (dateDebut != null && dateFin != null) {
163
					valid = dateDebut <= dateFin;
167
					valid = dateDebut <= dateFin;
164
				} else {
168
				} else {
165
					valid = dateDebut == null || dateFin == null;
169
					valid = dateDebut == null || dateFin == null;
166
				}
170
				}
167
			}
171
			}
168
			return valid; 
172
			return valid;
-
 
173
		},
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"
174
		"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"
-
 
175
	);
-
 
176
	$.validator.addMethod(
-
 
177
		"dateCel",
-
 
178
		function (value, element) {
-
 
179
			return value == "" || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value));
-
 
180
		},
-
 
181
		"Format : jj/mm/aaaa"
170
	);
182
	);
171
}
183
}
172
 
184
 
173
function validerExport() {
185
function validerExport() {
174
	var urlCalcul = getUrlExport()+'/calcul';
186
	var urlCalcul = getUrlExport()+'/calcul';
175
	var valeurs =
187
	var valeurs =
176
		$.grep($('#form-export-obs').serializeArray(), function(field, i) {
188
		$.grep($('#form-export-obs').serializeArray(), function(field, i) {
177
			if($.trim(field.value) == '') return false;
189
			if($.trim(field.value) == '') return false;
178
			return true;
190
			return true;
179
		});
191
		});
180
 
192
 
181
	$.get(urlCalcul, valeurs, function(data) {
193
	$.get(urlCalcul, valeurs, function(data) {
182
		if(data.length == 1) {
194
		if(data.length == 1) {
183
			window.location.href = data[0];
195
			window.location.href = data[0];
184
		} else {
196
		} else {
185
			$('.attention').effect("highlight", {}, 1500);
197
			$('.attention').effect("highlight", {}, 1500);
186
			afficherListeTelechargements(data);
198
			afficherListeTelechargements(data);
187
		}
199
		}
188
	});
200
	});
189
}
201
}
190
 
202
 
191
function afficherListeTelechargements(urls) {
203
function afficherListeTelechargements(urls) {
192
	var htmlListe = '<ul>';
204
	var htmlListe = '<ul>';
193
	$.each(urls, function(index, url) {
205
	$.each(urls, function(index, url) {
194
		htmlListe += '<li><a class="lien_telechargement" href="'+url+'">Feuille n°'+(index+1)+'</a></li>';
206
		htmlListe += '<li><a class="lien_telechargement" href="'+url+'">Feuille n°'+(index+1)+'</a></li>';
195
	});
207
	});
196
	htmlListe += '</ul>';
208
	htmlListe += '</ul>';
197
	$('#liste_telechargements').html(htmlListe);
209
	$('#liste_telechargements').html(htmlListe);
198
}
210
}
199
 
211
 
200
function ouvrirDansUneNouvelleFenetre(evenement, lien) {
212
function ouvrirDansUneNouvelleFenetre(evenement, lien) {
201
	evenement.preventDefault();
213
	evenement.preventDefault();
202
	window.open(lien.attr("href"));
214
	window.open(lien.attr("href"));
203
}
215
}
204
 
216
 
205
$(document).ready(function() {
217
$(document).ready(function() {
206
	ajouterAutocompletionNomSci();
218
	ajouterAutocompletionNomSci();
207
	ajouterAutocompletionCommunes();
219
	ajouterAutocompletionCommunes();
208
	$("#date_debut").datepicker($.datepicker.regional['fr']);
220
	$("#date_debut").datepicker($.datepicker.regional['fr']);
209
	$("#date_fin").datepicker($.datepicker.regional['fr']);
221
	$("#date_fin").datepicker($.datepicker.regional['fr']);
210
	$(".lien_telechargement").live("click", function(event) {ouvrirDansUneNouvelleFenetre(event, $(this))});
222
	$(".lien_telechargement").live("click", function(event) {ouvrirDansUneNouvelleFenetre(event, $(this))});
211
	
223
	
212
	configurerValidationFormulaire();
224
	configurerValidationFormulaire();
213
});
-
 
214
225
});
-
 
226