Subversion Repositories eFlore/Applications.cel

Rev

Rev 3047 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3025 delphine 1
// Héritage !!
2
function WidgetSaisieBellesdemarue() {
3
	this.markerDeb = undefined;
4
	this.latLngDeb = undefined;
5
	this.markerFin = undefined;
6
	this.latLngCentre = undefined;
7
	this.latLngFin = undefined;
8
	this.ligneRue = undefined;
9
	this.premierDeplacement = true;
10
	this.valeurChamp = "";
11
	this.avertissementDeuxPhotosAffiche = false;
12
	this.googleMapMarqueurDebutUrl = null;
13
	this.googleMapMarqueurFinUrl = null;
14
	this.ville = null;
15
	this.supprimerIconeUrl = null;
16
	this.serviceTraceRueUrl = null;
17
	this.taxons = {};
18
	this.listeRues = {};
19
	this.indexRueSelectionnee = 0;
20
	this.requeteRechercheRue = null;
21
	this.aucuneRueSelectionnee = "Aucune rue sélectionnée";
22
	this.nomDeRueInconnue = "Nom de rue inconnu";
23
	this.zoneGeo = null;
24
	this.groupeZonesGeo = null;
25
	this.serviceCoordSearchUrl = "";
26
}
27
WidgetSaisieBellesdemarue.prototype = new WidgetSaisie();
28
 
29
//surcharge
30
WidgetSaisieBellesdemarue.prototype.initialiserGoogleMap = function() {
3046 mathias 31
	// centrage
3025 delphine 32
	this.latLng = new google.maps.LatLng(50.8504500, 4.3487800);// Bruxelles par défaut
33
 
34
	var options = {
35
			zoom: 11, // avant : 16
36
			center: this.latLng,
37
			mapTypeId: google.maps.MapTypeId.HYBRID,
38
			mapTypeControlOptions: {
39
				mapTypeIds: ['OSM',
40
					google.maps.MapTypeId.ROADMAP,
41
					google.maps.MapTypeId.HYBRID,
42
					google.maps.MapTypeId.SATELLITE,
43
					google.maps.MapTypeId.TERRAIN]}
44
		};
45
 
46
	// Ajout de la couche OSM à la carte
47
	osmMapType = new google.maps.ImageMapType({
48
		getTileUrl: function(coord, zoom) {
49
			return 'http://tile.openstreetmap.org/' + zoom + '/' + coord.x + '/' + coord.y + '.png';
50
		},
51
		tileSize: new google.maps.Size(256, 256),
52
		isPng: true,
53
		alt: 'OpenStreetMap',
54
		name: 'OSM',
55
		maxZoom: 19
56
	});
57
 
58
	// Création de la carte Google
59
	this.map = new google.maps.Map(document.getElementById('map-canvas'), options); //affiche la google map dans la div map_canvas
60
	this.map.mapTypes.set('OSM', osmMapType);
61
 
62
	// Création du Geocoder
63
	this.geocoder = new google.maps.Geocoder();
64
 
65
	// Marqueur google draggable
66
	this.marker = new google.maps.Marker({
67
		map: this.map,
68
		draggable: true,
69
		title: 'Ma station',
70
		icon: this.googleMapMarqueurUrl,
71
		position: this.latLng
72
	});
73
 
74
	this.initialiserMarker(this.latLng);
75
 
76
	// intéraction carte
77
	$("#geolocaliser").on('click', this.geolocaliser.bind(this));
78
	google.maps.event.addListener(this.marker, 'dragend', this.surDeplacementMarker.bind(this));
79
	google.maps.event.addListener(this.map, 'click', this.surClickDansCarte.bind(this));
80
};
81
 
82
//surcharge
83
WidgetSaisieBellesdemarue.prototype.initForm = function() {
84
	// super() à la main - toute autre manière de faire est über-komplex
85
	WidgetSaisie.prototype.initForm.call(this);
86
 
87
	this.surChangementTaxonListe();
88
	$('#taxon-liste').on('change', this.surChangementTaxonListe);
89
	if (this.debug) {
90
		console.log('Selected taxon:'+$('#taxon-liste option:selected').val());
91
	}
3048 mathias 92
 
93
	// vidage du champ de recherche Google Maps
94
	$('#carte-recherche').val('');
95
 
96
	// vidage du taxon précédemment saisi avec l'autocomplétion, sans quoi on
97
	// perd son nn
98
	$('#taxon').val('');
99
	$('#taxon').data('numNomSel', ''); // et on vide le nn précédent
100
	this.surChangementValeurTaxon();
3025 delphine 101
	$('#taxon-liste').on('blur', this.surChangementValeurTaxon);
102
	$('#taxon').on('blur', this.surChangementValeurTaxon);
3046 mathias 103
 
104
	this.surChangementMilieuListe();
105
	$('#milieu').on('change', this.surChangementMilieuListe);
3025 delphine 106
};
107
 
108
//surcharge
109
WidgetSaisieBellesdemarue.prototype.initEvts = function() {
110
	var lthis = this;
111
	// super() à la main - toute autre manière de faire est über-komplex
112
	WidgetSaisie.prototype.initEvts.call(this);
113
 
114
	$('.dropdown-menu input, .dropdown-menu label').on('click', function(event) {
115
		event.stopPropagation();
116
	});
117
	$('#fichier').off(); // elever l'écouteur d'événements de base
118
	$('#fichier').on('click change', function(event) {
119
		if ($(this).val().length > 0) {
120
			arreter(event);
121
			var options = {
122
				success: lthis.afficherMiniature.bind(lthis), // post-submit callback
123
				dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type)
124
				resetForm: true // reset the form after successful submit
125
			};
126
			$('#miniature').append(
127
				'<img id="miniature-chargement" class="miniature" alt="chargement" src="'+ this.chargementImageIconeUrl +'"/>');
128
			$('#ajouter-obs').attr('disabled', 'disabled');
129
			if (lthis.verifierFormat($(this).val())) {
130
				$('#form-upload').ajaxSubmit(options);
131
			} else {
132
				$('#form-upload')[0].reset();
133
				window.alert("Le format de fichier n'est pas supporté, les formats acceptés sont "+	$('#fichier').attr('accept'));
134
			}
135
			return false;
136
		}
137
	});
138
 
139
	$('.cb-milieux').on('click', function(event) {
140
		$(this).valid();
141
		event.stopPropagation();
142
	});
143
 
144
	// Défilement des photos
145
	$('body').on('click', '.defilement-control-zone', function(event) {
146
		lthis.defilerMiniatures($(this));
147
	});
148
	$('body').on('mouseover', '.defilement-control-zone', function(event) {
149
		$('.defilement-control', this).removeClass('hidden');
150
	});
151
	$('body').on('mouseout', '.defilement-control-zone', function(event) {
152
		$('.defilement-control', this).addClass('hidden');
153
	});
154
 
155
	$('#photo-placeholder').click(function(event) {
156
		$('#fichier').click();
157
	});
158
	$('#geolocaliser').on('click', this.geolocaliser.bind(this));
159
 
160
};
161
 
162
// surcharge
163
WidgetSaisieBellesdemarue.prototype.configurerFormValidator = function() {
164
	$.validator.addMethod(
165
		'dateCel',
166
		function (value, element) {
167
			return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value));
168
		},
169
		'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.');
170
 
171
	$.extend($.validator.defaults, {
172
		ignore: [],// Forcer Jquery Validate à examiner les éléments avec en display:none;
173
		highlight: function(element) {
174
			$(element).closest('.control-group').removeClass('success').addClass('error');
175
		},
176
		success: function(element) {
177
			element.text('OK!').addClass('valid');
178
			element.closest('.control-group').removeClass('error').addClass('success');
179
 
180
			if (element.attr('id') == 'taxon' && $('#taxon').val() != '') {
181
				// Si le taxon n'est pas lié au référentiel, on vide le data associé
182
				if ($('#taxon').data('value') != $('#taxon').val()) {
183
					$('#taxon').data('numNomSel', '');
184
					$('#taxon').data('nomRet', '');
185
					$('#taxon').data('numNomRet', '');
186
					$('#taxon').data('nt', '');
187
					$('#taxon').data('famille', '');
188
				}
189
			}
190
		}
191
	});
192
};
193
 
194
// surcharge
195
WidgetSaisieBellesdemarue.prototype.definirReglesFormValidator = function() {
196
	$('#form-observateur').validate({
197
		rules: {
198
			courriel: {
199
				required: true,
200
				email: true},
201
			courriel_confirmation: {
202
				equalTo: '#courriel'},
203
			prenom: {
204
				required: true},
205
			nom: {
206
				required: true}
207
		}
208
	});
209
	$('#form-obs').validate({
210
		rules: {
211
			latitude : {
212
				required: true,
3046 mathias 213
				range: [-90, 90]
214
			},
3025 delphine 215
			longitude: {
216
				required: true,
3046 mathias 217
				range: [-180, 180]
218
			},
3025 delphine 219
			date: {
220
				required: true,
3046 mathias 221
				'dateCel' : true
222
			},
3025 delphine 223
			'taxon-liste': {
3046 mathias 224
				required: true
225
			},
226
			milieu: {
3025 delphine 227
				required: true,
3046 mathias 228
				minlength: 1
229
			},
230
			certitude: {
231
				required: true
232
			}
3025 delphine 233
		},
234
		errorPlacement: function(error, element) {
235
			if (element.attr('name') == 'date') {
236
				element.parent('.input-prepend').after(error);
3046 mathias 237
			} else if (element.attr('name') == 'certitude') {
238
				error.insertAfter('#certitude-controls');
3047 mathias 239
			} else if (element.attr('name') == 'longitude') { // on ignore "latitude" pour ne pas avoir de double erreur
240
				error.insertBefore('#info-commune');
3025 delphine 241
			} else {
242
				error.insertAfter(element);
243
			}
244
		}
245
	});
246
};
247
 
248
WidgetSaisieBellesdemarue.prototype.validerFormulaire = function() {
3046 mathias 249
	$observateur = $("#form-observateur").valid();
250
	$obs = $("#form-obs").valid();
251
	return ($observateur == true && $obs == true) ? true : false;
3025 delphine 252
};
253
 
254
WidgetSaisieBellesdemarue.prototype.surChangementTaxonListe = function() {
255
	if ($('#taxon-liste').val() === '?') {
256
		$('#taxon-input-groupe').removeClass('hidden');
257
	} else {
3048 mathias 258
		$('#taxon').val(''); // on force à réutiliser l'autocomplétion pour avoir un nn
259
		$('#taxon').data('numNomSel', ''); // on vide le nn précédent
3025 delphine 260
		$('#taxon-input-groupe').addClass('hidden');
261
	}
262
};
263
 
3046 mathias 264
WidgetSaisieBellesdemarue.prototype.surChangementMilieuListe = function() {
265
	if ($('#milieu').val() === 'autres') {
266
		$('#milieu-autre-input-group').removeClass('hidden');
267
	} else {
268
		$('#milieu-autre').val('');
269
		$('#milieu-autre-input-group').addClass('hidden');
270
	}
271
};
272
 
3047 mathias 273
// trouve la commune (zone géo de niveau 8) sous le pointeur, en mode mondial
274
// et pas seulement français (service zoneAdmin et non nomCommune)
3045 mathias 275
WidgetSaisieBellesdemarue.prototype.trouverCommune = function(pos) {
276
	if (this.latLng == null) { // tentative de protection contre le démon de Prémilhat
277
		return;
278
	}
279
	var lthis = this;
280
	$(function() {
281
 
282
		var url_service = lthis.serviceNomCommuneUrl;
283
 
284
		var urlNomCommuneFormatee = url_service.replace('{lat}', pos.lat()).replace('{lon}', pos.lng());
285
		$.ajax({
286
			url : urlNomCommuneFormatee,
287
			type : "GET",
288
			dataType : "jsonp",
289
			beforeSend : function() {
290
				$(".commune-info").empty();
291
				$("#dialogue-erreur .alert-txt").empty();
292
			},
293
			success : function(data, textStatus, jqXHR) {
294
				$(".commune-info").empty();
295
				// en Belgique et en France, en général 8 = patelin @TODO bancal
296
				if ("8" in data) {
297
					$("#commune-nom").append(data["8"].intitule);
298
					$("#marqueur-commune").data('commune', {'nom' : data["8"].nom, 'codeInsee' : null});
299
				}
300
			},
301
			statusCode : {
302
			    500 : function(jqXHR, textStatus, errorThrown) {
303
					if (this.debug) {
304
						$("#dialogue-erreur .alert-txt").append('<p id="msg">Un problème est survenu lors de l\'appel au service fournissante le nom des communes.</p>');
305
						reponse = jQuery.parseJSON(jqXHR.responseText);
306
						var erreurMsg = "";
307
						if (reponse != null) {
308
							$.each(reponse, function (cle, valeur) {
309
								erreurMsg += valeur + "<br />";
310
							});
311
						}
312
 
313
						$("#dialogue-erreur .alert-txt").append('<p class="msg-erreur">Erreur 500 : '+errorThrown+"<br />"+erreurMsg+'</p>');
314
					}
315
			    }
316
			},
317
			error : function(jqXHR, textStatus, errorThrown) {
318
				if (this.debug) {
319
					$("#dialogue-erreur .alert-txt").append('<p class="msg">Une erreur Ajax est survenue lors de la recherche de la commune.</p>');
320
					reponse = jQuery.parseJSON(jqXHR.responseText);
321
					var erreurMsg = "";
322
					if (reponse != null) {
323
						$.each(reponse, function (cle, valeur) {
324
							erreurMsg += valeur + "<br />";
325
						});
326
					}
327
 
328
					$("#dialogue-erreur .alert-txt").append('<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>');
329
				}
330
			},
331
			complete : function(jqXHR, textStatus) {
332
				var debugMsg = extraireEnteteDebug(jqXHR);
333
				if (debugMsg != '') {
334
					if (this.debug) {
335
						$("#dialogue-erreur .alert-txt").append('<pre class="msg-debug msg">Débogage : '+debugMsg+'</pre>');
336
					}
337
				}
338
				if ($("#dialogue-erreur .msg").length > 0) {
339
					$("#dialogue-erreur").show();
340
				}
341
			}
342
		});
343
	});
344
};
345
 
3048 mathias 346
// lorsqu'on choisit un taxon dans la liste, ou qu'on en tape un à la main dans
347
// le champ "autre espèce" (avec autocomplétion)
3025 delphine 348
WidgetSaisieBellesdemarue.prototype.surChangementValeurTaxon = function() {
349
	var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
350
	var nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special');
351
	var numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val();
3048 mathias 352
	var nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').text().trim();
353
 
3025 delphine 354
	// Un nom non valide entraine automatiquement une certitude "à déterminer"
355
	if(nomSpecial || !numNomSel) {
3048 mathias 356
		$('#certitude-adeterminer').prop('checked', true);
3025 delphine 357
	} else {
3048 mathias 358
		$('#certitude-adeterminer').prop('checked', false);
3025 delphine 359
	}
3048 mathias 360
 
361
	// stockage temporaire des infos connues
362
	$('#taxon').data('nn', numNomSel);
363
	$('#taxon').data('ns', nomSel);
3025 delphine 364
};
365
 
3048 mathias 366
 
3025 delphine 367
// surcharge
368
WidgetSaisieBellesdemarue.prototype.ajouterObs = function() {
3047 mathias 369
	// Fermeture automatique des dialogue de transmission de données
370
	$('#dialogue-obs-transaction-ko').hide();
371
	$('#dialogue-obs-transaction-ok').hide();
372
 
373
	// obligation de fournir au moins une image
374
	var nbImages = $('#miniatures img').length;
375
	if (nbImages == 0) {
376
		$('#image-obligatoire').show();
377
	} else {
378
		$('#image-obligatoire').hide();
379
	}
380
 
3048 mathias 381
	if (this.validerFormulaire() == true && nbImages > 0) {
3047 mathias 382
		this.masquerPanneau('#dialogue-form-invalide');
3025 delphine 383
		this.obsNbre = this.obsNbre + 1;
3047 mathias 384
		$(".obs-nbre").text(this.obsNbre);
385
		$(".obs-nbre").triggerHandler('changement');
3025 delphine 386
		this.afficherObs();
387
		this.stockerObsData();
388
		this.supprimerMiniatures();
3047 mathias 389
		if(! this.especeImposee) {
390
			$("#taxon").val("");
3048 mathias 391
			$("#taxon").data("numNomSel", undefined);
3047 mathias 392
		}
393
		$('#barre-progression-upload').attr('aria-valuemax', this.obsNbre);
394
		$('#barre-progression-upload .sr-only').text('0/'+this.obsNbre+" observations transmises");
3025 delphine 395
	} else {
3047 mathias 396
		this.afficherPanneau('#dialogue-form-invalide');
3025 delphine 397
	}
398
};
399
 
400
// surcharge
401
WidgetSaisieBellesdemarue.prototype.afficherObs = function() {
3048 mathias 402
	// on accepte que la commune soit parfois vide
403
	var commune = $("#commune-nom").text();
404
	if (this.debug) {
405
		console.log(commune);
406
	}
407
	$("#liste-obs").prepend(
408
		'<div id="obs'+this.obsNbre+'" class="row-fluid obs obs'+this.obsNbre+'">'+
409
			'<div class="span12">'+
410
				'<div class="well">'+
411
					'<div class="obs-action pull-right has-tooltip" data-placement="bottom" '+
412
						'title="Supprimer cette observation de la liste à transmettre">'+
413
						'<button class="btn btn-danger supprimer-obs" value="'+this.obsNbre+'" title="'+this.obsNbre+'">'+
414
							'<i class="icon-trash icon-white"></i>'+
415
						'</button>'+
416
					'</div> '+
417
					'<div class="row-fluid">'+
418
						'<div class="thumbnail span2">'+
419
						this.ajouterImgMiniatureAuTransfert()+
3025 delphine 420
						'</div>'+
3048 mathias 421
						'<div class="span9">'+
422
							'<ul class="unstyled">'+
3025 delphine 423
								'<li>'+
3048 mathias 424
									'<span class="nom-sci">'+this.ajouterNomEspece()+'</span> '+
425
									this.ajouterNumNomSel()+
426
									this.ajouterNomReferentiel()+
427
								'</li>'+
428
								'<li>'+
429
									'Observé à '+
430
									'<span class="commune">'+commune+'</span> '+
431
									' ['+$("#latitude").val()+' / '+$("#longitude").val()+']'+
432
									' le '+
433
									'<span class="date">'+$("#date").val()+'</span>'+
434
								'</li>'+
435
								'<li>'+
436
									'<span>Certitude :</span> '+$('input[name="certitude"]').val()+' '+
437
								'</li>'+
438
								'<li>'+
439
									'<span>Milieu :</span> '+this.ajouterMilieu()+
440
								'</li>'+
441
								'<li>'+
442
									'Commentaires : <span class="discretion">'+$("#notes").val()+'</span>'+
443
								'</li>'+
444
							'</ul>'+
445
						'</div>'+
446
					'</div>'+
447
				'</div>'+
3025 delphine 448
			'</div>'+
449
		'</div>');
3048 mathias 450
	$('#zone-liste-obs').removeClass("hidden").show();
3025 delphine 451
};
452
 
3048 mathias 453
WidgetSaisieBellesdemarue.prototype.ajouterMilieu = function() {
454
	var milieu = $('#milieu').val();
455
	if (milieu == 'autres') {
456
		var autreMilieu = $('#milieu-autre').val();
457
		if (autreMilieu) {
458
			milieu = autreMilieu;
459
		}
460
	}
461
	return milieu;
462
};
463
 
464
WidgetSaisieBellesdemarue.prototype.ajouterNomEspece = function() {
465
	var ns = $('#taxon').data('ns');
466
	if (! ns) {
467
		ns = "inconnue";
468
	}
469
	return ns;
470
};
471
 
472
WidgetSaisieBellesdemarue.prototype.ajouterNomReferentiel = function() {
473
	var nomRef = '';
474
	if ($("#taxon").data("nn")) {
475
		nomRef = '<span class="referentiel-obs">'+
476
			' [' + this.nomSciReferentiel +']'+
477
		'</span>';
478
	}
479
	return nomRef;
480
};
481
 
482
// surcharge
483
WidgetSaisieBellesdemarue.prototype.ajouterNumNomSel = function() {
484
	var nn = '';
485
	if (! $("#taxon").data("nn")) {
486
		nn = ' <span class="alert-error">[non lié au référentiel]</span>';
3025 delphine 487
	} else {
3048 mathias 488
		nn = ' <span class="nn">[nn'+$("#taxon").data("nn")+']</span>';
3025 delphine 489
	}
3048 mathias 490
	return nn;
491
};
3025 delphine 492
 
3048 mathias 493
/*
3025 delphine 494
WidgetSaisieBellesdemarue.prototype.ajouterImgMiniatureAuTransfert = function() {
495
	var html = '',
496
		miniatures = '',
497
		indicateurs = '',
498
		premiere = true,
499
		numero = 1;
500
	if ($('#miniatures img').length == 0) {
501
		html = '<img class="miniature" alt="Aucune photo"src="'+ this.pasDePhotoIconeUrl +'" />';
502
	} else if ($('#miniatures img').length >= 1) {
503
		$('#miniatures img').each(function() {
504
			var visible = premiere ? 'miniature-selectionnee' : 'miniature-cachee',
505
				css = $(this).hasClass('b64') ? 'miniature b64' : 'miniature',
506
				src = $(this).attr('src'),
507
				alt = $(this).attr('alt');
508
 
509
			var miniature = '<img class="'+css+' '+visible+'"  alt="'+alt+'"src="'+src+'" />';
510
			miniatures += miniature;
511
 
512
			var indicateurActif = premiere ? 'active' : '';
513
			var indicateur = '<li class="' + indicateurActif + '" data-numero="' + numero++ + '"></li>';
514
			indicateurs += indicateur;
515
 
516
			premiere = false;
517
		});
518
 
519
		if ($('#miniatures img').length == 1) {
520
			html = miniatures;
521
		} else {
522
			html =
523
				'<div class="defilement">' +
524
					miniatures +
525
					'<a class="defilement-control-zone gauche">' +
526
					'	<span class="defilement-control gauche hidden">&#60;</span>' +
527
					'</a>' +
528
					'<a class="defilement-control-zone droite">' +
529
					'	<span class="defilement-control droite hidden">&#62;</span>' +
530
					'</a>' +
531
					'<ol class="defilement-indicateurs">' + indicateurs + '</ol>' +
532
				'</div>';
533
		}
534
	}
535
	return html;
536
};
537
 
538
WidgetSaisieBellesdemarue.prototype.defilerMiniatures = function(element) {
539
	var miniatureSelectionne = element.siblings('img.miniature-selectionnee');
540
	miniatureSelectionne.removeClass('miniature-selectionnee').addClass('miniature-cachee');
541
	var miniatureAffichee = miniatureSelectionne;
542
 
543
	var indicateurActif = element.parent().find('.defilement-indicateurs .active');
544
	indicateurActif.removeClass('active');
545
 
546
	if (element.hasClass('defilement-control-zone') && element.hasClass('gauche')) {
547
		if (miniatureSelectionne.prev('.miniature').length != 0) {
548
			miniatureAffichee = miniatureSelectionne.prev('.miniature');
549
			indicateurActif.prev().addClass('active');
550
		} else {
551
			miniatureAffichee = miniatureSelectionne.siblings('.miniature').last();
552
			indicateurActif.siblings().last().addClass('active');
553
		}
554
	} else {
555
		if (miniatureSelectionne.next('.miniature').length != 0) {
556
			miniatureAffichee = miniatureSelectionne.next('.miniature');
557
			indicateurActif.next().addClass('active');
558
		} else {
559
			miniatureAffichee = miniatureSelectionne.siblings('.miniature').first();
560
			indicateurActif.siblings().first().addClass('active');
561
		}
562
	}
563
	miniatureAffichee.addClass('miniature-selectionnee').removeClass('miniature-cachee');
564
};
565
 
566
// surcharge
567
WidgetSaisieBellesdemarue.prototype.stockerObsData = function() {
568
	var lthis = this;
569
	var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
570
		nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
571
		numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val();
572
	var nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
573
		nomRet = nomHorsListe ? $('#taxon').data('nomRet') : this.taxons[numNomSel]['nom_ret'],
574
		numNomRet = nomHorsListe ? $('#taxon').data('numNomRet') : this.taxons[numNomSel]['num_nom_ret'],
575
		numTaxon = nomHorsListe ? $('#taxon').data('nt') : this.taxons[numNomSel]['num_taxon'],
576
		famille = nomHorsListe ? $('#taxon').data('famille') : this.taxons[numNomSel]['famille'],
577
		referentiel = (numNomSel == undefined) ? '' : this.nomSciReferentiel,
578
		notes = (nomSpecial ? this.taxons[numNomSel]['nom_fr'] + '. ' : '') + $('#notes').val();
579
 
580
		certitude = $('input[name=certitude]:checked').val();
581
		certitude = (certitude == undefined) ? '' : certitude;
582
 
583
	$('#liste-obs').data('obsId'+this.obsNbre, {
584
		'date': $('#date').val(),
585
		'notes': notes,
586
 
587
		'station': this.getValeurStation(),
588
		'latitude': $('#latitude').val(),
589
		'longitude': $('#longitude').val(),
590
		'commune_nom': $('#commune-nom').text(),
591
		'commune_code_insee': $('#commune-code-insee').text(),
592
 
593
		'nom_sel': nomSel,
594
		'num_nom_sel': numNomSel,
595
		'nom_ret': nomRet,
596
		'num_nom_ret': numNomRet,
597
		'num_taxon': numTaxon,
598
		'famille': famille,
599
		'referentiel': referentiel,
600
		'certitude': certitude,
601
		'milieu': lthis.getMilieux(),
602
 
603
		// Ajout des champs images
604
		'image_nom': lthis.getNomsImgsOriginales(),
605
 
606
		// Ajout des champs étendus de l'obs
607
		'obs_etendue': lthis.getObsChpEtendus()
608
	});
609
	if (this.debug) {
610
		console.log($('#liste-obs').data('obsId'+this.obsNbre));
611
	}
612
};
613
 
614
WidgetSaisieBellesdemarue.prototype.getObsChpEtendus = function() {
615
	var champs = [];
616
	if (this.latLngDeb != undefined) {
617
		var latitudeDebutRue = {cle: 'latitudeDebutRue', label: 'Latitude du début de la rue', valeur: this.latLngDeb.lat().toFixed(5)};
618
		champs.push(latitudeDebutRue);
619
		var longitudeDebutRue = {cle: 'longitudeDebutRue', label: 'Longitude du début de la rue', valeur: this.latLngDeb.lng().toFixed(5)};
620
		champs.push(longitudeDebutRue);
621
	}
622
	if (this.latLngFin != undefined) {
623
		var latitudeFinRue = {cle: 'latitudeFinRue', label: 'Latitude de fin de la rue', valeur: this.latLngFin.lat().toFixed(5)};
624
		champs.push(latitudeFinRue);
625
		var longitudeFinRue = {cle: 'longitudeFinRue', label: 'Longitude de fin de la rue', valeur: this.latLngFin.lng().toFixed(5)};
626
		champs.push(longitudeFinRue);
627
	}
628
 
629
	$('.obs-chp-etendu').each(function() {
630
		var valeur = $(this).val(),
631
			cle = $(this).attr('name'),
632
			label = $(this).data('label');
633
		if (valeur != '') {
634
			var chpEtendu = {cle: cle, label: label, valeur: valeur};
635
			champs.push(chpEtendu);
636
		}
637
	});
638
	return champs;
639
};
3045 mathias 640
*/