Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | Details | 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() {
31
	var lthis = this;
32
	this.latLng = new google.maps.LatLng(50.8504500, 4.3487800);// Bruxelles par défaut
33
	//WidgetSaisie.prototype.initialiserGoogleMap.call(this);
34
 
35
	var options = {
36
			zoom: 11, // avant : 16
37
			center: this.latLng,
38
			mapTypeId: google.maps.MapTypeId.HYBRID,
39
			mapTypeControlOptions: {
40
				mapTypeIds: ['OSM',
41
					google.maps.MapTypeId.ROADMAP,
42
					google.maps.MapTypeId.HYBRID,
43
					google.maps.MapTypeId.SATELLITE,
44
					google.maps.MapTypeId.TERRAIN]}
45
		};
46
 
47
	// Ajout de la couche OSM à la carte
48
	osmMapType = new google.maps.ImageMapType({
49
		getTileUrl: function(coord, zoom) {
50
			return 'http://tile.openstreetmap.org/' + zoom + '/' + coord.x + '/' + coord.y + '.png';
51
		},
52
		tileSize: new google.maps.Size(256, 256),
53
		isPng: true,
54
		alt: 'OpenStreetMap',
55
		name: 'OSM',
56
		maxZoom: 19
57
	});
58
 
59
	// Création de la carte Google
60
	this.map = new google.maps.Map(document.getElementById('map-canvas'), options); //affiche la google map dans la div map_canvas
61
	this.map.mapTypes.set('OSM', osmMapType);
62
 
63
	// Création du Geocoder
64
	this.geocoder = new google.maps.Geocoder();
65
 
66
	// Marqueur google draggable
67
	this.marker = new google.maps.Marker({
68
		map: this.map,
69
		draggable: true,
70
		title: 'Ma station',
71
		icon: this.googleMapMarqueurUrl,
72
		position: this.latLng
73
	});
74
 
75
	this.initialiserMarker(this.latLng);
76
 
77
 
78
	// intéraction carte
79
	$("#geolocaliser").on('click', this.geolocaliser.bind(this));
80
	google.maps.event.addListener(this.marker, 'dragend', this.surDeplacementMarker.bind(this));
81
	google.maps.event.addListener(this.map, 'click', this.surClickDansCarte.bind(this));
82
};
83
 
84
//surcharge
85
WidgetSaisieBellesdemarue.prototype.initForm = function() {
86
	// super() à la main - toute autre manière de faire est über-komplex
87
	WidgetSaisie.prototype.initForm.call(this);
88
 
89
	this.surChangementTaxonListe();
90
	$('#taxon-liste').on('change', this.surChangementTaxonListe);
91
	if (this.debug) {
92
		console.log('Selected taxon:'+$('#taxon-liste option:selected').val());
93
	}
94
	$('#taxon-liste').on('blur', this.surChangementValeurTaxon);
95
	$('#taxon').on('blur', this.surChangementValeurTaxon);
96
};
97
 
98
//surcharge
99
WidgetSaisieBellesdemarue.prototype.initEvts = function() {
100
	var lthis = this;
101
	// super() à la main - toute autre manière de faire est über-komplex
102
	WidgetSaisie.prototype.initEvts.call(this);
103
 
104
	$('.dropdown-menu input, .dropdown-menu label').on('click', function(event) {
105
		event.stopPropagation();
106
	});
107
	$('#fichier').off(); // elever l'écouteur d'événements de base
108
	$('#fichier').on('click change', function(event) {
109
 
110
		if($("#photos-conteneur #miniatures .miniature").length == 1 && ! lthis.avertissementDeuxPhotosAffiche) {
111
			messageAvertissement = "Attention: \n"+
112
			"Sélectionnez uniquement les photos correspondantes à une seule plante \n"+
113
			"(c'est à dire correspondant à un seul individu d'une espèce donnée) \n"+
114
			"vue dans le tronçon de rue inventoriée ";
115
			if(window.confirm(messageAvertissement)) {
116
				lthis.avertissementDeuxPhotosAffiche = true;
117
				return true;
118
			} else {
119
				return false;
120
			}
121
		}
122
		if ($(this).val().length > 0) {
123
			arreter(event);
124
			var options = {
125
				success: lthis.afficherMiniature.bind(lthis), // post-submit callback
126
				dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type)
127
				resetForm: true // reset the form after successful submit
128
			};
129
			$('#miniature').append(
130
				'<img id="miniature-chargement" class="miniature" alt="chargement" src="'+ this.chargementImageIconeUrl +'"/>');
131
			$('#ajouter-obs').attr('disabled', 'disabled');
132
			if (lthis.verifierFormat($(this).val())) {
133
				$('#form-upload').ajaxSubmit(options);
134
			} else {
135
				$('#form-upload')[0].reset();
136
				window.alert("Le format de fichier n'est pas supporté, les formats acceptés sont "+	$('#fichier').attr('accept'));
137
			}
138
			return false;
139
		}
140
	});
141
 
142
	$('.cb-milieux').on('click', function(event) {
143
		$(this).valid();
144
		event.stopPropagation();
145
	});
146
 
147
	// Défilement des photos
148
	$('body').on('click', '.defilement-control-zone', function(event) {
149
		lthis.defilerMiniatures($(this));
150
	});
151
	$('body').on('mouseover', '.defilement-control-zone', function(event) {
152
		$('.defilement-control', this).removeClass('hidden');
153
	});
154
	$('body').on('mouseout', '.defilement-control-zone', function(event) {
155
		$('.defilement-control', this).addClass('hidden');
156
	});
157
 
158
	$('#photo-placeholder').click(function(event) {
159
		$('#fichier').click();
160
	});
161
	$('#geolocaliser').on('click', this.geolocaliser.bind(this));
162
 
163
};
164
 
165
WidgetSaisieBellesdemarue.prototype.montrerFormIdentite = function() {
166
	$('#zone-courriel-confirmation, #zone-prenom-nom').css('display', 'block');
167
};
168
 
169
 
170
 
171
 
172
/**
173
 * AUTO-COMPLÉTION Noms Scientifiques => OK
174
 * sélectionne un nom et puis qu'on le remplacer par un nom non valide
175
 * Garder la trace de la valeur permet de vider le nn lorsqu'on
176
 */
177
WidgetSaisieBellesdemarue.prototype.ajouterAutocompletionNoms = function() {
178
	var lthis = this;
179
	$('#taxon').autocomplete({
180
		source: function(requete, add){
181
			// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
182
 
183
			var url = lthis.getUrlAutocompletionNomsSci();
184
			$.getJSON(url, function(data) {
185
				var suggestions = lthis.traiterRetourNomsSci(data);
186
				add(suggestions);
187
			});
188
		},
189
		html: true
190
	});
191
 
192
	$('#taxon').bind('autocompleteselect', function(event, ui) {
193
		$('#taxon').data(ui.item);
194
		lthis.valeurChamp = $('#taxon').val();
195
		if (ui.item.retenu == true) {
196
			$('#taxon').addClass('ns-retenu');
197
		} else {
198
			$('#taxon').removeClass('ns-retenu');
199
		}
200
	});
201
 
202
	$('#taxon').bind('keypress', function() {
203
		if(lthis.valeurChamp != $('#taxon').val()) {
204
			$('#taxon').data('numNomSel', '');
205
		}
206
		lthis.valeurChamp = $('#taxon').val();
207
	});
208
};
209
 
210
WidgetSaisieBellesdemarue.prototype.getUrlAutocompletionNomsSci = function() {
211
	var mots = $('#taxon').val(),
212
		url = this.serviceAutocompletionNomSciUrlTpl.replace('{referentiel}', this.nomSciReferentiel);
213
	url = url.replace('{masque}', mots);
214
	return url;
215
};
216
 
217
WidgetSaisieBellesdemarue.prototype.traiterRetourNomsSci = function(data) {
218
	var suggestions = [];
219
	if (data.resultat != undefined) {
220
		$.each(data.resultat, function(i, val) {
221
			val.nn = i;
222
			var nom = {label: '', value: '', nt: '', nomSel: '', nomSelComplet: '', numNomSel: '',
223
				nomRet: '', numNomRet: '', famille: '', retenu: false
224
			};
225
			if (suggestions.length >= this.autocompletionElementsNbre) {
226
				nom.label = '...';
227
				nom.value = $('#taxon').val();
228
				suggestions.push(nom);
229
				return false;
230
			} else {
231
				nom.label = val.nom_sci_complet;
232
				nom.value = val.nom_sci_complet;
233
				nom.nt = val.num_taxonomique;
234
				nom.nomSel = val.nom_sci;
235
				nom.nomSelComplet = val.nom_sci_complet;
236
				nom.numNomSel = val.nn;
237
				nom.nomRet = val.nom_retenu_complet;
238
				nom.numNomRet = val['nom_retenu.id'];
239
				nom.famille = val.famille;
240
				nom.retenu = (val.retenu == 'false') ? false : true;
241
 
242
				suggestions.push(nom);
243
			}
244
		});
245
	}
246
	return suggestions;
247
};
248
 
249
// surcharge
250
WidgetSaisieBellesdemarue.prototype.configurerFormValidator = function() {
251
	$.validator.addMethod(
252
		'dateCel',
253
		function (value, element) {
254
			return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value));
255
		},
256
		'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.');
257
 
258
	$.extend($.validator.defaults, {
259
		ignore: [],// Forcer Jquery Validate à examiner les éléments avec en display:none;
260
		highlight: function(element) {
261
			$(element).closest('.control-group').removeClass('success').addClass('error');
262
		},
263
		success: function(element) {
264
			element.text('OK!').addClass('valid');
265
			element.closest('.control-group').removeClass('error').addClass('success');
266
 
267
			if (element.attr('id') == 'taxon' && $('#taxon').val() != '') {
268
				// Si le taxon n'est pas lié au référentiel, on vide le data associé
269
				if ($('#taxon').data('value') != $('#taxon').val()) {
270
					$('#taxon').data('numNomSel', '');
271
					$('#taxon').data('nomRet', '');
272
					$('#taxon').data('numNomRet', '');
273
					$('#taxon').data('nt', '');
274
					$('#taxon').data('famille', '');
275
				}
276
			}
277
		}
278
	});
279
};
280
 
281
// surcharge
282
WidgetSaisieBellesdemarue.prototype.definirReglesFormValidator = function() {
283
	$('#form-observateur').validate({
284
		rules: {
285
			courriel: {
286
				required: true,
287
				email: true},
288
			courriel_confirmation: {
289
				required: true,
290
				equalTo: '#courriel'},
291
			prenom: {
292
				required: true},
293
			nom: {
294
				required: true}
295
		}
296
	});
297
	$('#form-obs').validate({
298
		rules: {
299
			station: {
300
				required: true},
301
			latitude : {
302
				required: true,
303
				range: [-90, 90]},
304
			longitude: {
305
				required: true,
306
				range: [-180, 180]},
307
			date: {
308
				required: true,
309
				'dateCel' : true},
310
			coteRue: {
311
				required: true},
312
			'taxon-liste': {
313
				required: true},
314
			'milieux[]': {
315
				required: true,
316
				minlength: 1}
317
		},
318
		errorPlacement: function(error, element) {
319
			if (element.attr('name') == 'date') {
320
				element.parent('.input-prepend').after(error);
321
			} else if (element.attr('name') == 'milieux[]') {
322
				error.insertAfter('#milieux-controls');
323
			} else {
324
				error.insertAfter(element);
325
			}
326
		},
327
		messages: {
328
			'milieu[]': 'Vous devez sélectionner au moins un milieu'
329
		}
330
	});
331
};
332
 
333
WidgetSaisieBellesdemarue.prototype.validerFormulaire = function() {
334
	var observateur = $('#form-observateur').valid(),
335
		obs = $('#form-obs').valid(),
336
		debRue = (this.latLngDeb == undefined || this.latLngDeb == this.latLngFin) ? false : true,
337
		finRue = (this.latLngFin == undefined || this.latLngDeb == this.latLngFin) ? false : true;
338
	var ok = (observateur && obs && debRue && finRue) ? true : false;
339
	//console.log('observateur:'+observateur+'-obs:'+obs+'-debRue:'+debRue+'('+latLngDeb+')-finRue:'+finRue+'('+latLngDeb+')');
340
	return ok;
341
};
342
 
343
WidgetSaisieBellesdemarue.prototype.surChangementTaxonListe = function() {
344
	if ($('#taxon-liste').val() === '?') {
345
		$('#taxon-input-groupe').removeClass('hidden');
346
	} else {
347
		$('#taxon-input-groupe').addClass('hidden');
348
	}
349
};
350
 
351
WidgetSaisieBellesdemarue.prototype.surChangementValeurTaxon = function() {
352
	var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
353
	var nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special');
354
	var numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val();
355
 
356
	// Un nom non valide entraine automatiquement une certitude "à déterminer"
357
	if(nomSpecial || !numNomSel) {
358
		$('#certitude-adeterminer').attr('checked', 'checked');
359
	} else {
360
		$('#certitude-adeterminer').removeAttr('checked');
361
	}
362
};
363
 
364
// surcharge
365
WidgetSaisieBellesdemarue.prototype.ajouterObs = function() {
366
	if (this.validerFormulaire() == true) {
367
		this.obsNbre = this.obsNbre + 1;
368
		$('.obs-nbre').text(this.obsNbre);
369
		$('.obs-nbre').triggerHandler('changement');
370
		this.afficherObs();
371
		this.stockerObsData();
372
		this.supprimerMiniatures();
373
	} else {
374
		// Affichage de tous les panneau cachés avec champ obligatoire
375
		var debRue = (this.latLngDeb == undefined || this.latLngDeb == this.latLngFin) ? false : true,
376
			finRue = (this.latLngFin == undefined || this.latLngDeb == this.latLngFin) ? false : true;
377
		if (debRue == false || finRue == false) {
378
			this.afficherPanneau('#dialogue-form-invalide-rue');
379
		} else {
380
			this.afficherPanneau('#dialogue-form-invalide');
381
		}
382
		this.montrerFormIdentite();
383
	}
384
};
385
 
386
// surcharge
387
WidgetSaisieBellesdemarue.prototype.afficherObs = function() {
388
	var numNomSel = ($('#taxon-liste').val() == '?') ? $('#taxon').data('numNomSel') : $('#taxon-liste').val(),
389
		nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
390
		taxon = ($('#taxon-liste').val() == '?') ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
391
		referentiel = (numNomSel == undefined) ? '' : '['+ this.nomSciReferentiel +']',
392
		commune = $('#commune-nom').text(),
393
		codeInsee = $('#commune-code-insee').text(),
394
		station = this.getValeurStation(),
395
		lat = $('input[name="latitude"]').val(),
396
		lng = $('input[name="longitude"]').val(),
397
		date = $('#date').val(),
398
		milieux = this.getMilieux(),
399
		notes = (nomSpecial ? this.taxons[numNomSel]['nom_fr'] + ".<br />" : '') + $('#notes').val();
400
 
401
	$('#liste-obs').prepend(
402
		'<div id="obs'+this.obsNbre+'" class="row-fluid obs obs'+this.obsNbre+'">' +
403
			'<div class="span12">' +
404
				'<div class="well">' +
405
					'<div class="obs-action pull-right has-tooltip" data-placement="bottom" ' +
406
						'title="Supprimer cette observation de la liste à transmettre">' +
407
						'<button class="btn btn-danger supprimer-obs" value="'+this.obsNbre+'" title="'+this.obsNbre+'">' +
408
							'<i class="icon-trash icon-white"></i>' +
409
						'</button>' +
410
					'</div> ' +
411
					'<div class="row-fluid">' +
412
						'<div class="span2 obs-miniatures">' +
413
						this.ajouterImgMiniatureAuTransfert() +
414
						'</div>'+
415
						'<div class="span7">' +
416
							'<ul class="unstyled">' +
417
								'<li>'+
418
									'<span class="nom-sci">' + taxon + '</span> ' +
419
									this.formaterNumNomSel(numNomSel) +
420
									' observé à <br />' +
421
									'<span class="commune">' + commune + '</span> ' +
422
									'(' + codeInsee + '), ' +
423
									'<span class="station">' + station + '</span><br /> ' +
424
									' le ' +
425
									'<span class="date">' + date + '</span>' +
426
								'</li>' +
427
								'<li>' +
428
									'Milieux : ' + milieux + ' ' + ' ; ' +
429
								'</li>' +
430
								'<li>' +
431
									'Notes : ' + notes +
432
								'</li>' +
433
							'</ul>' +
434
						'</div>' +
435
					'</div>' +
436
				'</div>' +
437
			'</div>'+
438
		'</div>');
439
	$('#zone-liste-obs').removeClass("hidden");
440
};
441
 
442
WidgetSaisieBellesdemarue.prototype.getValeurStation = function() {
443
	var station = "";
444
	var valeurSelectionnee = $("#indication-nom-rue-nom").text().trim();
445
	if(valeurSelectionnee == this.aucuneRueSelectionnee || valeurSelectionnee == this.nomDeRueInconnue) {
446
		station = $('input[name="adresse"]').val().trim()
447
	} else {
448
		station = $("#indication-nom-rue-nom").text().trim();
449
	}
450
 
451
	return station;
452
}
453
 
454
WidgetSaisieBellesdemarue.prototype.getMilieux = function() {
455
	var milieuxStr = '',
456
		milieux = [];
457
	$('.cb-milieux:checked').each(function() {
458
		milieux.push($(this).val());
459
	});
460
 
461
	milieuxStr = Array.prototype.slice.call(milieux).join(', ');
462
	return milieuxStr;
463
};
464
 
465
WidgetSaisieBellesdemarue.prototype.ajouterImgMiniatureAuTransfert = function() {
466
	var html = '',
467
		miniatures = '',
468
		indicateurs = '',
469
		premiere = true,
470
		numero = 1;
471
	if ($('#miniatures img').length == 0) {
472
		html = '<img class="miniature" alt="Aucune photo"src="'+ this.pasDePhotoIconeUrl +'" />';
473
	} else if ($('#miniatures img').length >= 1) {
474
		$('#miniatures img').each(function() {
475
			var visible = premiere ? 'miniature-selectionnee' : 'miniature-cachee',
476
				css = $(this).hasClass('b64') ? 'miniature b64' : 'miniature',
477
				src = $(this).attr('src'),
478
				alt = $(this).attr('alt');
479
 
480
			var miniature = '<img class="'+css+' '+visible+'"  alt="'+alt+'"src="'+src+'" />';
481
			miniatures += miniature;
482
 
483
			var indicateurActif = premiere ? 'active' : '';
484
			var indicateur = '<li class="' + indicateurActif + '" data-numero="' + numero++ + '"></li>';
485
			indicateurs += indicateur;
486
 
487
			premiere = false;
488
		});
489
 
490
		if ($('#miniatures img').length == 1) {
491
			html = miniatures;
492
		} else {
493
			html =
494
				'<div class="defilement">' +
495
					miniatures +
496
					'<a class="defilement-control-zone gauche">' +
497
					'	<span class="defilement-control gauche hidden">&#60;</span>' +
498
					'</a>' +
499
					'<a class="defilement-control-zone droite">' +
500
					'	<span class="defilement-control droite hidden">&#62;</span>' +
501
					'</a>' +
502
					'<ol class="defilement-indicateurs">' + indicateurs + '</ol>' +
503
				'</div>';
504
		}
505
	}
506
	return html;
507
};
508
 
509
WidgetSaisieBellesdemarue.prototype.defilerMiniatures = function(element) {
510
	var miniatureSelectionne = element.siblings('img.miniature-selectionnee');
511
	miniatureSelectionne.removeClass('miniature-selectionnee').addClass('miniature-cachee');
512
	var miniatureAffichee = miniatureSelectionne;
513
 
514
	var indicateurActif = element.parent().find('.defilement-indicateurs .active');
515
	indicateurActif.removeClass('active');
516
 
517
	if (element.hasClass('defilement-control-zone') && element.hasClass('gauche')) {
518
		if (miniatureSelectionne.prev('.miniature').length != 0) {
519
			miniatureAffichee = miniatureSelectionne.prev('.miniature');
520
			indicateurActif.prev().addClass('active');
521
		} else {
522
			miniatureAffichee = miniatureSelectionne.siblings('.miniature').last();
523
			indicateurActif.siblings().last().addClass('active');
524
		}
525
	} else {
526
		if (miniatureSelectionne.next('.miniature').length != 0) {
527
			miniatureAffichee = miniatureSelectionne.next('.miniature');
528
			indicateurActif.next().addClass('active');
529
		} else {
530
			miniatureAffichee = miniatureSelectionne.siblings('.miniature').first();
531
			indicateurActif.siblings().first().addClass('active');
532
		}
533
	}
534
	miniatureAffichee.addClass('miniature-selectionnee').removeClass('miniature-cachee');
535
};
536
 
537
WidgetSaisieBellesdemarue.prototype.formaterNumNomSel = function(numNomSel) {
538
	var nn = '';
539
	if (numNomSel == undefined) {
540
		nn = '<span class="alert-error">[non lié au référentiel]</span>';
541
	} else {
542
		nn = '<span class="nn">[nn'+numNomSel+']</span>';
543
	}
544
	return nn;
545
};
546
 
547
// surcharge
548
WidgetSaisieBellesdemarue.prototype.surChangementReferentiel = function() {
549
	this.nomSciReferentiel = $('#referentiel').val();
550
	$('#taxon').val('');
551
};
552
 
553
// surcharge
554
WidgetSaisieBellesdemarue.prototype.stockerObsData = function() {
555
	var lthis = this;
556
	var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
557
		nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
558
		numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val();
559
	var nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
560
		nomRet = nomHorsListe ? $('#taxon').data('nomRet') : this.taxons[numNomSel]['nom_ret'],
561
		numNomRet = nomHorsListe ? $('#taxon').data('numNomRet') : this.taxons[numNomSel]['num_nom_ret'],
562
		numTaxon = nomHorsListe ? $('#taxon').data('nt') : this.taxons[numNomSel]['num_taxon'],
563
		famille = nomHorsListe ? $('#taxon').data('famille') : this.taxons[numNomSel]['famille'],
564
		referentiel = (numNomSel == undefined) ? '' : this.nomSciReferentiel,
565
		notes = (nomSpecial ? this.taxons[numNomSel]['nom_fr'] + '. ' : '') + $('#notes').val();
566
 
567
		certitude = $('input[name=certitude]:checked').val();
568
		certitude = (certitude == undefined) ? '' : certitude;
569
 
570
	$('#liste-obs').data('obsId'+this.obsNbre, {
571
		'date': $('#date').val(),
572
		'notes': notes,
573
 
574
		'station': this.getValeurStation(),
575
		'latitude': $('#latitude').val(),
576
		'longitude': $('#longitude').val(),
577
		'commune_nom': $('#commune-nom').text(),
578
		'commune_code_insee': $('#commune-code-insee').text(),
579
 
580
		'nom_sel': nomSel,
581
		'num_nom_sel': numNomSel,
582
		'nom_ret': nomRet,
583
		'num_nom_ret': numNomRet,
584
		'num_taxon': numTaxon,
585
		'famille': famille,
586
		'referentiel': referentiel,
587
		'certitude': certitude,
588
		'milieu': lthis.getMilieux(),
589
 
590
		// Ajout des champs images
591
		'image_nom': lthis.getNomsImgsOriginales(),
592
 
593
		// Ajout des champs étendus de l'obs
594
		'obs_etendue': lthis.getObsChpEtendus()
595
	});
596
	if (this.debug) {
597
		console.log($('#liste-obs').data('obsId'+this.obsNbre));
598
	}
599
};
600
 
601
WidgetSaisieBellesdemarue.prototype.getObsChpEtendus = function() {
602
	var champs = [];
603
	if (this.latLngDeb != undefined) {
604
		var latitudeDebutRue = {cle: 'latitudeDebutRue', label: 'Latitude du début de la rue', valeur: this.latLngDeb.lat().toFixed(5)};
605
		champs.push(latitudeDebutRue);
606
		var longitudeDebutRue = {cle: 'longitudeDebutRue', label: 'Longitude du début de la rue', valeur: this.latLngDeb.lng().toFixed(5)};
607
		champs.push(longitudeDebutRue);
608
	}
609
	if (this.latLngFin != undefined) {
610
		var latitudeFinRue = {cle: 'latitudeFinRue', label: 'Latitude de fin de la rue', valeur: this.latLngFin.lat().toFixed(5)};
611
		champs.push(latitudeFinRue);
612
		var longitudeFinRue = {cle: 'longitudeFinRue', label: 'Longitude de fin de la rue', valeur: this.latLngFin.lng().toFixed(5)};
613
		champs.push(longitudeFinRue);
614
	}
615
 
616
	$('.obs-chp-etendu').each(function() {
617
		var valeur = $(this).val(),
618
			cle = $(this).attr('name'),
619
			label = $(this).data('label');
620
		if (valeur != '') {
621
			var chpEtendu = {cle: cle, label: label, valeur: valeur};
622
			champs.push(chpEtendu);
623
		}
624
	});
625
	return champs;
626
};