Subversion Repositories eFlore/Applications.cel

Rev

Rev 747 | Rev 1348 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 747 Rev 833
Line 1... Line 1...
1
//+---------------------------------------------------------------------------------------------------------+
1
//+---------------------------------------------------------------------------------------------------------+
2
// GÉNÉRAL
2
// GÉNÉRAL
3
var DEBUG = false; // Mettre à true pour afficher les messages de débogage
3
// Mettre à true pour afficher les messages de débogage
-
 
4
var DEBUG = false; 
-
 
5
// URL du web service réalisant l'insertion des données dans la base du CEL.
-
 
6
var URL_SERVICE_CEL = "http://www.tela-botanica.org/service:cel:CelWidgetSaisie";
-
 
7
// Squelette d'URL du web service d'eFlore fournissant les noms de communes.
-
 
8
var URL_SERVICE_NOM_COMMUNE = "http://www.tela-botanica.org/service:eflore:osm/0.1/nom-commune?lon={lon}&lat={lat}";
4
/**
9
/**
5
 * Stope l'évènement courrant quand on clique sur un lien.
10
 * Stope l'évènement courrant quand on clique sur un lien.
6
 * Utile pour Chrome, Safari...
11
 * Utile pour Chrome, Safari...
7
 * @param evenement
12
 * @param evenement
8
 * @return
13
 * @return
Line 41... Line 46...
41
				date: true},
46
				date: true},
42
			taxon : "required"
47
			taxon : "required"
43
		}
48
		}
44
	});
49
	});
Line 45... Line 50...
45
	
50
	
-
 
51
	$("#date").datepicker({
-
 
52
		   onClose: function(dateText, inst) {$("#saisie-obs").valid();}
Line 46... Line 53...
46
	$("#date").datepicker($.datepicker.regional['fr']);
53
	});
47
	
54
	
48
	$("#courriel_confirmation").bind('paste', function(e) {
55
	$("#courriel_confirmation").bind('paste', function(e) {
49
		$("#dialogue-bloquer-copier-coller").dialog();
56
		$("#dialogue-bloquer-copier-coller").dialog();
Line 72... Line 79...
72
		var coordonnees = $("#marqueur-coordonnees").data('latLon');
79
		var coordonnees = $("#marqueur-coordonnees").data('latLon');
73
		if (coordonnees != undefined) {
80
		if (coordonnees != undefined) {
74
			$("#latitude").val(coordonnees.lat);
81
			$("#latitude").val(coordonnees.lat);
75
			$("#longitude").val(coordonnees.lon);
82
			$("#longitude").val(coordonnees.lon);
76
		}
83
		}
-
 
84
		var commune = $("#marqueur-commune").data('commune');
-
 
85
		if (commune != undefined) {
-
 
86
			$("#commune_nom").val(commune.nom);
-
 
87
			$("#commune_code_insee").val(commune.codeInsee);
-
 
88
		}
77
		$.fancybox.close();
89
		$.fancybox.close();
-
 
90
		$("#saisie-obs").valid();
78
	});
91
	});
79
	$("#annuler-coordonnees").bind('click', function(e) {
92
	$("#annuler-coordonnees").bind('click', function(e) {
80
		$.fancybox.close();
93
		$.fancybox.close();
-
 
94
		$("#saisie-obs").valid()
81
	});
95
	});
Line 82... Line 96...
82
	
96
	
83
	var obsNumero = 0;
97
	var obsNumero = 0;
84
	$("#ajouter-obs").bind('click', function(e) {
98
	$("#ajouter-obs").bind('click', function(e) {
Line 108... Line 122...
108
				'famille' : taxons[numNomSel]['famille'],
122
				'famille' : taxons[numNomSel]['famille'],
109
				'nom_fr' : taxons[numNomSel]['nom_fr'],
123
				'nom_fr' : taxons[numNomSel]['nom_fr'],
110
				'milieu' : $("#milieu option:selected").val(),
124
				'milieu' : $("#milieu option:selected").val(),
111
				'latitude' : $("#latitude").val(),
125
				'latitude' : $("#latitude").val(),
112
				'longitude' : $("#longitude").val(),
126
				'longitude' : $("#longitude").val(),
113
				'tag' : 'Biodiversite34',
127
				'commune_nom' : $("#commune_nom").val(),
-
 
128
				'commune_code_insee' : $("#commune_code_insee").val(),
114
				'notes' : $("#notes").val()});
129
				'notes' : $("#notes").val()});
115
		}
130
		}
116
	});
131
	});
Line 117... Line 132...
117
	
132
	
Line 132... Line 147...
132
		if (observations == undefined || jQuery.isEmptyObject(observations)) {
147
		if (observations == undefined || jQuery.isEmptyObject(observations)) {
133
			$("#dialogue-zero-obs").dialog();
148
			$("#dialogue-zero-obs").dialog();
134
		} else if ($("#saisie-obs").valid() == false) {
149
		} else if ($("#saisie-obs").valid() == false) {
135
			$("#dialogue-form-invalide").dialog();
150
			$("#dialogue-form-invalide").dialog();
136
		} else {
151
		} else {
-
 
152
			observations['projet'] = 'Biodiversite34';
-
 
153
			
137
			var utilisateur = new Object();
154
			var utilisateur = new Object();
138
			utilisateur.prenom = $("#prenom").val();
155
			utilisateur.prenom = $("#prenom").val();
139
			utilisateur.nom = $("#nom").val();
156
			utilisateur.nom = $("#nom").val();
140
			utilisateur.courriel = $("#courriel").val();
157
			utilisateur.courriel = $("#courriel").val();
141
			observations['utilisateur'] = utilisateur;
158
			observations['utilisateur'] = utilisateur;
Line 142... Line 159...
142
			
159
			
143
			//"http://localhost/cel-jrest/CelWidgetSaisie"
160
			var erreurMsg = "";
144
			$.ajax({
161
			$.ajax({
145
				url : "http://www.tela-botanica.org/eflore-test/cel2/jrest/CelWidgetSaisie",
162
				url : URL_SERVICE_CEL,
146
				type : "POST",
163
				type : "POST",
147
				data : observations,
164
				data : observations,
148
				context : document.body,
165
				dataType : "json",
149
				beforeSend : function() {
166
				beforeSend : function() {
150
					$("#msg").remove();	
167
					$(".msg").remove();	
151
					$("#msg-erreur").remove();
168
					$(".msg-erreur").remove();
-
 
169
					$(".msg-debug").remove();
-
 
170
				},
-
 
171
				success : function(data, textStatus, jqXHR) {
152
					$("#msg-debug").remove();
172
					$("#dialogue-obs-transaction").append('<p class="msg">Vos observations ont bien été transmises.</p>');
153
				},
173
				},
154
				statusCode : {
174
				statusCode : {
155
				    500 : function(jqXHR, textStatus, errorThrown) {
175
				    500 : function(jqXHR, textStatus, errorThrown) {
156
						$("#dialogue-obs-transaction").append('<p id="msg">Un problème est survenu lors de la transmission de vos observations.</p>');
176
						erreurMsg += "Erreur 500 :\ntype : "+textStatus+' '+errorThrown+"\n";
157
						reponse = jQuery.parseJSON(jqXHR.responseText);
-
 
158
						var erreurMsg = "";
177
						reponse = jQuery.parseJSON(jqXHR.responseText);
159
						if (reponse != null) {
178
						if (reponse != null) {
160
							$.each(reponse, function (cle, valeur) {
179
							$.each(reponse, function (cle, valeur) {
161
								erreurMsg += valeur + "<br />";
180
								erreurMsg += valeur + "\n";
162
							});
181
							});
163
						}
-
 
-
 
182
						}
164
						
183
						if (DEBUG) {
-
 
184
							$("#dialogue-obs-transaction").append('<pre class="msg-erreur">'+erreurMsg+'</pre>');
165
						$("#dialogue-obs-transaction").append('<p id="msg-erreur">Erreur 500 : '+errorThrown+"<br />"+erreurMsg+'</p>');
185
						}
166
				    }
186
				    }
167
				},
187
				},
-
 
188
				error : function(jqXHR, textStatus, errorThrown) {
-
 
189
					erreurMsg += "Erreur Ajax :\ntype : "+textStatus+' '+errorThrown+"\n";
-
 
190
					reponse = jQuery.parseJSON(jqXHR.responseText);
-
 
191
					if (reponse != null) {
-
 
192
						$.each(reponse, function (cle, valeur) {
-
 
193
							erreurMsg += valeur + "\n";
-
 
194
						});
-
 
195
					}
-
 
196
					
168
				success : function(data, textStatus, jqXHR) {
197
					if (DEBUG) {
-
 
198
						$("#dialogue-obs-transaction").append('<pre class="msg-erreur">'+erreurMsg+'</pre>');
169
					$("#dialogue-obs-transaction").append('<p id="msg">Vos observations ont bien été transmises.</p>');
199
					}
170
				},
200
				},
171
				complete : function(jqXHR, textStatus) {
201
				complete : function(jqXHR, textStatus) {
172
					var debugMsg = "";
202
					var debugMsg = '';
173
					if (DEBUG && jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
203
					if (jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
174
						debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
204
						debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
175
						if (debugInfos != null) {
205
						if (debugInfos != null) {
176
							$.each(debugInfos, function (cle, valeur) {
206
							$.each(debugInfos, function (cle, valeur) {
177
								debugMsg += valeur + "<br />";
207
								debugMsg += valeur + "\n";
178
							});
-
 
179
							$("#dialogue-obs-transaction").append('<pre id="msg-debug">Débogage : '+debugMsg+'</pre>');
208
							});
180
						}
209
						}
-
 
210
					}
-
 
211
					if (erreurMsg != '') {
-
 
212
						$("#dialogue-obs-transaction").append('<p class="msg">'+
-
 
213
								'Une erreur est survenue lors de la transmission de vos observations.'+'<br />'+
-
 
214
								'Vous pouvez signaler le disfonctionnement à <a href="'+
-
 
215
								'mailto:cel@tela-botanica.org'+'?'+
-
 
216
								'subject=Disfonctionnement du widget de saisie Biodiversite34'+
-
 
217
								"&body="+erreurMsg+"\nDébogage :\n"+debugMsg+
-
 
218
								'">cel@tela-botanica.org</a>.'+
-
 
219
								'</p>');
-
 
220
					}
-
 
221
					if (DEBUG) {
-
 
222
						$("#dialogue-obs-transaction").append('<pre class="msg-debug">Débogage : '+debugMsg+'</pre>');
Line 181... Line 223...
181
					}
223
					}
182
					
224
					
183
					$("#dialogue-obs-transaction").dialog();
225
					$("#dialogue-obs-transaction").dialog();
184
					$("#liste-obs").removeData();
226
					$("#liste-obs").removeData();
185
					$('.obs').remove();
227
					$('.obs').remove();
186
					obsNumero = 0;
-
 
187
				},
228
					obsNumero = 0;
188
	
229
				}
189
			});
230
			});
190
		}
231
		}
191
		return false;
232
		return false;
Line 242... Line 283...
242
		navigator.geolocation.getCurrentPosition(function(position) {
283
		navigator.geolocation.getCurrentPosition(function(position) {
243
			(DEBUG) ? console.log("Géolocalisation OK.") : '';
284
			(DEBUG) ? console.log("Géolocalisation OK.") : '';
244
			latLng = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
285
			latLng = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
245
			deplacerMarker(latLng);
286
			deplacerMarker(latLng);
246
			map.setCenter(latLng);
287
			map.setCenter(latLng);
247
		}, function() {
288
		}, function(erreur) {
248
			(DEBUG) ? console.log("Géolocalisation échouée.") : '';
289
			(DEBUG) ? console.log("Géolocalisation échouée : "+erreur.code+" = "+erreur.message) : '';
249
		});
290
		});
250
	} else { //Browser doesn't support Geolocation
291
	} else { //Browser doesn't support Geolocation
251
		(DEBUG) ? console.log("Navigateur ne supportant pas la géolocalisation. Localisation par défaut.") : '';
292
		(DEBUG) ? console.log("Navigateur ne supportant pas la géolocalisation. Localisation par défaut.") : '';
252
	}
293
	}
-
 
294
	deplacerMarker(latLng);
-
 
295
	map.setCenter(latLng);
Line 253... Line 296...
253
	
296
	
254
	// Add des évènements concernant le marqueur
297
	// Add des évènements concernant le marqueur
255
	google.maps.event.addListener(marker, 'dragstart', function() {
298
	google.maps.event.addListener(marker, 'dragstart', function() {
256
		mettreAJourMarkerAdresse('Marqueur de station début du déplacement...');
299
		mettreAJourMarkerAdresse('Marqueur de station début du déplacement...');
Line 263... Line 306...
263
	
306
	
264
	google.maps.event.addListener(marker, 'dragend', function() {
307
	google.maps.event.addListener(marker, 'dragend', function() {
265
		mettreAJourMarkerStatut('Marqueur de station déplacé (glisser/déposer).');
308
		mettreAJourMarkerStatut('Marqueur de station déplacé (glisser/déposer).');
266
		mettreAJourMarkerPosition(marker.getPosition());
309
		mettreAJourMarkerPosition(marker.getPosition());
-
 
310
		geocoderPosition(marker.getPosition());
267
		geocoderPosition(marker.getPosition());
311
		trouverCommune(marker.getPosition());
Line 268... Line 312...
268
	});
312
	});
269
	
313
	
270
	google.maps.event.addListener(map, 'click', function(event) {
314
	google.maps.event.addListener(map, 'click', function(event) {
Line 276... Line 320...
276
	if (marker != undefined) {
320
	if (marker != undefined) {
277
		marker.setPosition(latLon);
321
		marker.setPosition(latLon);
278
		mettreAJourMarkerStatut('Marqueur de station déplacé (clic).');
322
		mettreAJourMarkerStatut('Marqueur de station déplacé (clic).');
279
		mettreAJourMarkerPosition(marker.getPosition());
323
		mettreAJourMarkerPosition(marker.getPosition());
280
		geocoderPosition(marker.getPosition());
324
		geocoderPosition(marker.getPosition());
-
 
325
		trouverCommune(marker.getPosition());
281
	}
326
	}
282
}
327
}
Line 283... Line 328...
283
 
328
 
284
function geocoderPosition(pos) {
329
function geocoderPosition(pos) {
Line 297... Line 342...
297
			}
342
			}
298
		});
343
		});
299
	}
344
	}
300
}
345
}
Line -... Line 346...
-
 
346
 
-
 
347
function trouverCommune(pos) {
-
 
348
	$(function() {
-
 
349
		var urlNomCommuneFormatee = URL_SERVICE_NOM_COMMUNE.replace('{lat}', pos.lat()).replace('{lon}', pos.lng());
-
 
350
		$.ajax({
-
 
351
			url : urlNomCommuneFormatee,
-
 
352
			type : "GET",
-
 
353
			dataType : "json",
-
 
354
			beforeSend : function() {
-
 
355
				$(".commune-info").empty();	
-
 
356
				$("#dialogue-erreur").empty();
-
 
357
			},
-
 
358
			success : function(data, textStatus, jqXHR) {
-
 
359
				$(".commune-info").empty();
-
 
360
				$("#commune-nom").append(data.nom);
-
 
361
				$("#commune-code-insee").append(data.codeINSEE);
-
 
362
				$("#marqueur-commune").data('commune', {'nom' : data.nom, 'codeInsee' : data.codeINSEE});
-
 
363
			},
-
 
364
			statusCode : {
-
 
365
			    500 : function(jqXHR, textStatus, errorThrown) {
-
 
366
					if (DEBUG) {	
-
 
367
						$("#dialogue-erreur").append('<p id="msg">Un problème est survenu lors de l\'appel au service fournissante le nom des communes.</p>');
-
 
368
						reponse = jQuery.parseJSON(jqXHR.responseText);
-
 
369
						var erreurMsg = "";
-
 
370
						if (reponse != null) {
-
 
371
							$.each(reponse, function (cle, valeur) {
-
 
372
								erreurMsg += valeur + "<br />";
-
 
373
							});
-
 
374
						}
-
 
375
						
-
 
376
						$("#dialogue-erreur").append('<p class="msg-erreur">Erreur 500 : '+errorThrown+"<br />"+erreurMsg+'</p>');
-
 
377
					}
-
 
378
			    }
-
 
379
			},
-
 
380
			error : function(jqXHR, textStatus, errorThrown) {
-
 
381
				if (DEBUG) {
-
 
382
					$("#dialogue-erreur").append('<p class="msg">Une erreur Ajax est survenue lors de la transmission de vos observations.</p>');
-
 
383
					reponse = jQuery.parseJSON(jqXHR.responseText);
-
 
384
					var erreurMsg = "";
-
 
385
					if (reponse != null) {
-
 
386
						$.each(reponse, function (cle, valeur) {
-
 
387
							erreurMsg += valeur + "<br />";
-
 
388
						});
-
 
389
					}
-
 
390
					
-
 
391
					$("#dialogue-erreur").append('<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>');
-
 
392
				}
-
 
393
			},
-
 
394
			complete : function(jqXHR, textStatus) {
-
 
395
				if (DEBUG && jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
-
 
396
					var debugMsg = "";
-
 
397
					debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
-
 
398
					if (debugInfos != null) {
-
 
399
						$.each(debugInfos, function (cle, valeur) {
-
 
400
							debugMsg += valeur + "<br />";
-
 
401
						});
-
 
402
						$("#dialogue-erreur").append('<pre class="msg-debug msg">Débogage : '+debugMsg+'</pre>');
-
 
403
					}
-
 
404
				}
-
 
405
				if ($("#dialogue-erreur .msg").length > 0) {
-
 
406
					$("#dialogue-erreur").dialog();
-
 
407
				}
-
 
408
			}
-
 
409
		});
-
 
410
	});
-
 
411
}
301
 
412
 
302
function mettreAJourMarkerStatut(str) {
413
function mettreAJourMarkerStatut(str) {
303
	document.getElementById('marqueur-statut').innerHTML = str;
414
	document.getElementById('marqueur-statut').innerHTML = str;
Line 304... Line 415...
304
}
415
}