Subversion Repositories eFlore/Applications.cel

Rev

Rev 3133 | Details | Compare with Previous | Last modification | View Log | RSS feed

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