Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1241 Rev 1249
Line 1... Line 1...
1
//+---------------------------------------------------------------------------------------------------------+
1
//+---------------------------------------------------------------------------------------------------------+
2
// GÉNÉRAL
2
// GÉNÉRAL
-
 
3
$(document).ready(function() {
-
 
4
	$(window).on('beforeunload', function(event) {
-
 
5
		return 'Êtes vous sûr de vouloir quiter la page?\nLes observations saisies mains non transmises seront perdues.';
-
 
6
	});
-
 
7
});
-
 
8
//+----------------------------------------------------------------------------------------------------------+
-
 
9
// FONCTIONS GÉNÉRIQUES
3
/**
10
/**
4
 * Stope l'évènement courrant quand on clique sur un lien.
11
 * Stope l'évènement courrant quand on clique sur un lien.
5
 * Utile pour Chrome, Safari...
12
 * Utile pour Chrome, Safari...
6
 * @param evenement
13
 * @param evenement
7
 * @return
14
 * @return
8
 */
15
 */
9
function arreter(evenement) {
16
function arreter(evenement) {
10
	if (evenement.stopPropagation) {
17
	if (evenement.stopPropagation) {
11
		evenement.stopPropagation();
18
		evenement.stopPropagation();
12
	}
19
	}
-
 
20
	if (evenement.preventDefault) {
-
 
21
		evenement.preventDefault();
-
 
22
	}
13
	return false;
23
	return false;
14
}
24
}
Line 15... Line 25...
15
 
25
 
16
// TODO : voir si cette fonction est bien utile. Résoud le pb d'un warning sous chrome.
26
function extraireEnteteDebug(jqXHR) {
17
(function(){
27
	var msgDebug = '';
-
 
28
	if (jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
18
    // remove layerX and layerY
29
		var debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
19
    var all = $.event.props,
30
		if (debugInfos != null) {
20
        len = all.length,
31
			$.each(debugInfos, function (cle, valeur) {
21
        res = [];
32
				msgDebug += valeur + "\n";
-
 
33
			});
-
 
34
		}
22
    while (len--) {
35
	}
23
      var el = all[len];
-
 
24
      if (el != 'layerX' && el != 'layerY') res.push(el);
36
	return msgDebug;
-
 
37
}
25
    }
38
 
-
 
39
function afficherPanneau(selecteur) {
26
    $.event.props = res;
40
	$(selecteur).fadeIn("slow").delay(DUREE_MESSAGE).fadeOut("slow");
Line 27... Line 41...
27
}());
41
}
28
 
42
 
29
//+----------------------------------------------------------------------------------------------------------+
43
//+----------------------------------------------------------------------------------------------------------+
Line 30... Line 44...
30
//UPLOAD PHOTO : Traitement de l'image 
44
//UPLOAD PHOTO : Traitement de l'image 
31
$(document).ready(function() {	
45
$(document).ready(function() {
32
	
46
	
Line 52... Line 66...
52
			$("#form-upload").ajaxSubmit(options);
66
			$("#form-upload").ajaxSubmit(options);
53
			return false;
67
			return false;
54
		});
68
		});
55
	}	
69
	}	
56
});
70
});
-
 
71
 
57
function isCanvasSupported(){
72
function isCanvasSupported(){
58
	var elem = document.createElement('canvas');
73
	var elem = document.createElement('canvas');
59
	return !!(elem.getContext && elem.getContext('2d'));
74
	return !!(elem.getContext && elem.getContext('2d'));
60
}
75
}
Line 93... Line 108...
93
			};
108
			};
94
		})(f);
109
		})(f);
95
	}
110
	}
96
	$("#effacer-miniature").show();
111
	$("#effacer-miniature").show();
97
}
112
}
-
 
113
 
98
function transformerImgEnCanvas(img, thumbwidth, thumbheight, crop, background) {
114
function transformerImgEnCanvas(img, thumbwidth, thumbheight, crop, background) {
99
	var canvas = document.createElement('canvas');
115
	var canvas = document.createElement('canvas');
100
	canvas.width = thumbwidth;
116
	canvas.width = thumbwidth;
101
	canvas.height = thumbheight;
117
	canvas.height = thumbheight;
102
	var dimensions = calculerDimenssions(img.width, img.height, thumbwidth, thumbheight);
118
	var dimensions = calculerDimenssions(img.width, img.height, thumbwidth, thumbheight);
Line 206... Line 222...
206
			var latLng = new google.maps.LatLng(ui.item.latitude, ui.item.longitude);
222
			var latLng = new google.maps.LatLng(ui.item.latitude, ui.item.longitude);
207
			deplacerMarker(latLng);
223
			deplacerMarker(latLng);
208
		}
224
		}
209
	});
225
	});
Line 210... Line 226...
210
	
226
	
211
	$("#geolocaliser").on('click', function() {
-
 
212
		var latitude = $('#latitude').val();
-
 
213
		var longitude = $('#longitude').val();
-
 
214
		latLng = new google.maps.LatLng(latitude, longitude);
-
 
215
		deplacerMarker(latLng);
-
 
Line 216... Line 227...
216
	});
227
	$("#geolocaliser").on('click', geolocaliser);
217
	
-
 
218
	google.maps.event.addListener(marker, 'dragend', function() {
-
 
219
		trouverCommune(marker.getPosition());
-
 
Line 220... Line 228...
220
		mettreAJourMarkerPosition(marker.getPosition());
228
	
221
	});
-
 
222
	
-
 
223
	google.maps.event.addListener(map, 'click', function(event) {
229
	google.maps.event.addListener(marker, 'dragend', surDeplacementMarker);
Line -... Line 230...
-
 
230
	
-
 
231
	google.maps.event.addListener(map, 'click', surClickDansCarte);
-
 
232
});
-
 
233
 
-
 
234
function surDeplacementMarker() {
-
 
235
	trouverCommune(marker.getPosition());
-
 
236
	mettreAJourMarkerPosition(marker.getPosition());
-
 
237
}
-
 
238
 
-
 
239
function surClickDansCarte(event) {
-
 
240
	deplacerMarker(event.latLng);
-
 
241
}
-
 
242
 
-
 
243
function geolocaliser() {
-
 
244
	var latitude = $('#latitude').val();
-
 
245
	var longitude = $('#longitude').val();
224
		deplacerMarker(event.latLng);
246
	latLng = new google.maps.LatLng(latitude, longitude);
225
	});
247
	deplacerMarker(latLng);
226
});
248
}
Line 227... Line 249...
227
 
249
 
Line 351... Line 373...
351
					
373
					
352
					$("#dialogue-erreur .alert-txt").append('<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>');
374
					$("#dialogue-erreur .alert-txt").append('<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>');
353
				}
375
				}
354
			},
376
			},
355
			complete : function(jqXHR, textStatus) {
-
 
356
				if (DEBUG && jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
377
			complete : function(jqXHR, textStatus) {
357
					var debugMsg = "";
-
 
358
					debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
378
				var debugMsg = extraireEnteteDebug(jqXHR);
359
					if (debugInfos != null) {
-
 
360
						$.each(debugInfos, function (cle, valeur) {
-
 
361
							debugMsg += valeur + "<br />";
379
				if (debugMsg != '') {
362
						});
380
					if (DEBUG) {
363
						$("#dialogue-erreur .alert-txt").append('<pre class="msg-debug msg">Débogage : '+debugMsg+'</pre>');
381
						$("#dialogue-erreur .alert-txt").append('<pre class="msg-debug msg">Débogage : '+debugMsg+'</pre>');
364
					}
382
					}
365
				}
383
				}
366
				if ($("#dialogue-erreur .msg").length > 0) {
384
				if ($("#dialogue-erreur .msg").length > 0) {
Line 371... Line 389...
371
	});
389
	});
372
}
390
}
373
//+---------------------------------------------------------------------------------------------------------+
391
//+---------------------------------------------------------------------------------------------------------+
374
// IDENTITÉ
392
// IDENTITÉ
375
$(document).ready(function() {
393
$(document).ready(function() {
376
	$("#courriel").on('blur', function() {
394
	$("#courriel").on('blur', requeterIdentite);
-
 
395
	$("#courriel").on('keypress', testerLancementRequeteIdentite);
-
 
396
});
-
 
397
 
-
 
398
function testerLancementRequeteIdentite(event) {
-
 
399
	if (event.which == 13) {
-
 
400
		requeterIdentite();
-
 
401
		event.preventDefault();
-
 
402
		event.stopPropagation();
-
 
403
	}
-
 
404
}
-
 
405
 
-
 
406
function requeterIdentite() {
377
		var courriel = $("#courriel").val();
407
	var courriel = $("#courriel").val();
378
		var urlAnnuaire = "http://www.tela-botanica.org/client/annuaire_nouveau/actuelle/jrest/utilisateur/identite-par-courriel/"+courriel;//http://localhost/applications/annuaire/jrest/
408
	var urlAnnuaire = "http://www.tela-botanica.org/client/annuaire_nouveau/actuelle/jrest/utilisateur/identite-par-courriel/"+courriel;//http://localhost/applications/annuaire/jrest/
379
		$.ajax({
409
	$.ajax({
380
			url : urlAnnuaire,
410
		url : urlAnnuaire,
381
			type : "GET",
411
		type : "GET",
382
			success : function(data, textStatus, jqXHR) {
412
		success : function(data, textStatus, jqXHR) {
-
 
413
			console.log('SUCCESS:'+textStatus);
383
				if (data != undefined) {
414
			if (data != undefined && data[courriel] != undefined) {
384
					var infos = data[courriel];
415
				var infos = data[courriel];
385
					$("#prenom").val(infos.prenom);
416
				$("#prenom").val(infos.prenom);
386
					$("#nom").val(infos.nom);
417
				$("#nom").val(infos.nom);
387
					$("#courriel_confirmation").val(courriel);
418
				$("#courriel_confirmation").val(courriel);
388
				}
-
 
389
			},
-
 
390
			error : function(jqXHR, textStatus, errorThrown) {
419
				$("#prenom, #nom, #courriel_confirmation").attr('disabled', 'disabled');
391
				console.log('ERREUR :'+textStatus);
420
				$("#date").focus();
392
			},
421
			} else {
393
			complete : function(jqXHR, textStatus) {
-
 
394
				console.log('COMPLETE :'+textStatus);
-
 
395
				$("#zone-prenom-nom").removeClass("hidden");
422
				surErreurCompletionCourriel();
396
			}
423
			}
397
		});
424
		},
-
 
425
		error : function(jqXHR, textStatus, errorThrown) {
-
 
426
			console.log('ERREUR :'+textStatus);
-
 
427
			surErreurCompletionCourriel();
-
 
428
		},
-
 
429
		complete : function(jqXHR, textStatus) {
-
 
430
			console.log('COMPLETE :'+textStatus);
-
 
431
			$("#zone-prenom-nom").removeClass("hidden");
-
 
432
			$("#zone-courriel-confirmation").removeClass("hidden");
-
 
433
		}
398
	});
434
	});
399
});
435
}
Line -... Line 436...
-
 
436
 
-
 
437
function surErreurCompletionCourriel() {
-
 
438
	$("#prenom, #nom, #courriel_confirmation").val('');
-
 
439
	$("#prenom, #nom, #courriel_confirmation").removeAttr('disabled');
-
 
440
	afficherPanneau("#dialogue-courriel-introuvable");
-
 
441
}
-
 
442
//+---------------------------------------------------------------------------------------------------------+
-
 
443
//FORMULAIRE VALIDATION
-
 
444
$(document).ready(function() {
-
 
445
	
-
 
446
	
400
 
447
});
401
//+---------------------------------------------------------------------------------------------------------+
448
//+---------------------------------------------------------------------------------------------------------+
402
// FORMULAIRE
449
// FORMULAIRE
Line 403... Line 450...
403
var obsNbre = 0;
450
var obsNbre = 0;
404
 
451
 
405
$(document).ready(function() {
-
 
406
	$(".alert .close").on('click', function() {
-
 
Line 407... Line 452...
407
		$(this).parentsUntil(".zone-alerte", ".alert").hide();
452
$(document).ready(function() {
408
	});
-
 
409
	
-
 
410
	$("#btn-aide").on('click', function() {
-
 
411
		if ($(this).hasClass('btn-warning')) {
-
 
412
			$("[rel=tooltip]").tooltip('enable');
-
 
413
			$(this).removeClass('btn-warning').addClass('btn-success');
-
 
414
			$('#btn-aide-txt', this).text("Désactiver l'aide");
-
 
415
		} else {
-
 
416
			$("[rel=tooltip]").tooltip('disable');
-
 
417
			$(this).removeClass('btn-success').addClass('btn-warning');
-
 
Line -... Line 453...
-
 
453
	$(".alert .close").on('click', fermerPanneauAlert);
Line 418... Line -...
418
			$('#btn-aide-txt', this).text("Activer l'aide");
-
 
419
		}
-
 
420
	});
-
 
421
	
-
 
422
	
-
 
423
	$("#prenom").on("change", function(event) {
-
 
424
		var prenom = new Array();
-
 
425
		var mots = $(this).val().split('-');
-
 
426
        for(var i = 0; i < mots.length; i++) {
-
 
427
        	var mot = mots[i];
-
 
428
        	var motMajuscule = mot.charAt(0).toUpperCase() + mot.slice(1);
454
	
429
        	prenom.push(motMajuscule);
-
 
430
        }
-
 
Line 431... Line -...
431
		$(this).val(prenom.join('-'));
-
 
432
	});
455
	$("#btn-aide").on('click', basculerAffichageAide);
433
	$("#nom").on("change", function(event) {
-
 
434
		$(this).val($(this).val().toUpperCase());
-
 
435
	});
-
 
436
	
-
 
437
	$.datepicker.setDefaults($.datepicker.regional["fr"]);
-
 
438
	$("#date").datepicker({
-
 
439
		dateFormat: "dd/mm/yy",  
-
 
440
		showOn: "button",
-
 
Line 441... Line 456...
441
		buttonImageOnly: true,  
456
	
Line -... Line 457...
-
 
457
	$("#prenom").on("change", formaterPrenom);
-
 
458
	
-
 
459
	$("#nom").on("change", formaterNom);
-
 
460
	
-
 
461
	configurerDatePicker();
-
 
462
	
-
 
463
	ajouterAutocompletionNoms();
-
 
464
	
-
 
465
	configurerFormValidator();
-
 
466
	definirReglesFormValidator();
-
 
467
		
-
 
468
	$("#courriel_confirmation").on('paste', bloquerCopierCollerCourriel);
-
 
469
		
-
 
470
	$("a.afficher-coord").on('click', basculerAffichageCoord);
-
 
471
	
-
 
472
	$("#ajouter-obs").on('click', ajouterObs);
-
 
473
	
442
		buttonImage: CALENDRIER_ICONE_URL,
474
	$(".obs-nbre").on('changement', surChangementNbreObs);
443
		buttonText: "Afficher le calendrier pour saisir la date.",
475
	
444
		showButtonPanel: true
476
	$("body").on('click', ".supprimer-obs", supprimerObs);
445
	});
477
	
446
	$("img.ui-datepicker-trigger").appendTo("#date-icone");
478
	$("#transmettre-obs").on('click', transmettreObs);
Line 492... Line 524...
492
					$(element).next(" span.help-inline").remove();
524
					$(element).next(" span.help-inline").remove();
493
				}
525
				}
494
			}
526
			}
495
		}
527
		}
496
	});
528
	});
-
 
529
}
-
 
530
 
-
 
531
function definirReglesFormValidator() {
497
	$("#form-observateur").validate({
532
	$("#form-observateur").validate({
498
		rules: {
533
		rules: {
499
			courriel : {
534
			courriel : {
500
				required : true,
535
				required : true,
501
				email : true},
536
				email : true},
Line 518... Line 553...
518
		rules: {
553
		rules: {
519
			date : "dateCel",
554
			date : "dateCel",
520
			taxon : "required"
555
			taxon : "required"
521
		}
556
		}
522
	});
557
	});
-
 
558
}
523
	
559
 
-
 
560
function configurerDatePicker() {
524
	$("#courriel_confirmation").on('paste', function(e) {
561
	$.datepicker.setDefaults($.datepicker.regional["fr"]);
525
		$("#dialogue-bloquer-copier-coller").show();
562
	$("#date").datepicker({
-
 
563
		dateFormat: "dd/mm/yy",  
526
		return false;
564
		showOn: "button",
-
 
565
		buttonImageOnly: true,  
-
 
566
		buttonImage: CALENDRIER_ICONE_URL,
-
 
567
		buttonText: "Afficher le calendrier pour saisir la date.",
-
 
568
		showButtonPanel: true
527
	});
569
	});
-
 
570
	$("img.ui-datepicker-trigger").appendTo("#date-icone");
-
 
571
}
528
		
572
 
-
 
573
function fermerPanneauAlert() {
-
 
574
	$(this).parentsUntil(".zone-alerte", ".alert").hide();
-
 
575
}
-
 
576
 
-
 
577
function formaterNom() {
-
 
578
	$(this).val($(this).val().toUpperCase());
-
 
579
}
-
 
580
 
-
 
581
function formaterPrenom() {
-
 
582
	var prenom = new Array();
-
 
583
	var mots = $(this).val().split(' ');
-
 
584
	for (var i = 0; i < mots.length; i++) {
-
 
585
		var mot = mots[i];
-
 
586
		if (mot.indexOf('-') >= 0) {
-
 
587
			var prenomCompose = new Array();
-
 
588
			var motsComposes = mot.split('-');
-
 
589
		    for (var j = 0; j < motsComposes.length; j++) {
-
 
590
		    	var motSimple = motsComposes[j];
-
 
591
		    	var motMajuscule = motSimple.charAt(0).toUpperCase() + motSimple.slice(1);
-
 
592
		    	prenomCompose.push(motMajuscule);
-
 
593
		    }
-
 
594
		    prenom.push(prenomCompose.join('-'));
-
 
595
		} else {
-
 
596
			var motMajuscule = mot.charAt(0).toUpperCase() + mot.slice(1);
-
 
597
			prenom.push(motMajuscule);
-
 
598
		}
-
 
599
	}
-
 
600
	$(this).val(prenom.join(' '));
-
 
601
}
-
 
602
 
529
	//bascule le texte d'afficher à masquer
603
function basculerAffichageAide()  {
-
 
604
	if ($(this).hasClass('btn-warning')) {
-
 
605
		$("[rel=tooltip]").tooltip('enable');
-
 
606
		$(this).removeClass('btn-warning').addClass('btn-success');
-
 
607
		$('#btn-aide-txt', this).text("Désactiver l'aide");
-
 
608
	} else {
-
 
609
		$("[rel=tooltip]").tooltip('disable');
-
 
610
		$(this).removeClass('btn-success').addClass('btn-warning');
-
 
611
		$('#btn-aide-txt', this).text("Activer l'aide");
-
 
612
	}
-
 
613
}
-
 
614
 
-
 
615
function bloquerCopierCollerCourriel() {
530
	$("a.afficher-coord").on('click', function() {
616
	$("#dialogue-bloquer-copier-coller").show();
-
 
617
	return false;
-
 
618
}
-
 
619
 
-
 
620
function basculerAffichageCoord() {
531
		$("a.afficher-coord").toggle();
621
	$("a.afficher-coord").toggle();
532
		$("#coordonnees-geo").toggle('slow');
622
	$("#coordonnees-geo").toggle('slow');
533
		//valeur false pour que le lien ne soit pas suivi
623
	//valeur false pour que le lien ne soit pas suivi
534
		return false;
624
	return false;
535
	});
625
}
536
	
626
 
537
	var obsNumero = 0;
627
function ajouterObs() {
538
	$("#ajouter-obs").on('click', function(e) {
-
 
539
		if (validerFormulaire() == true) {
628
	if (validerFormulaire() == true) {
540
			//rassemble les obs dans un tableau html
-
 
541
			obsNumero = obsNumero + 1;
629
		obsNbre = obsNbre + 1;
542
			obsNbre = obsNbre + 1;
630
		$(".obs-nbre").text(obsNbre);
543
			$(".obs-nbre").text(obsNbre);
631
		$(".obs-nbre").triggerHandler('changement');
-
 
632
		afficherObs();
-
 
633
		stockerObsData();
-
 
634
		supprimerMiniature();
-
 
635
	} else {
-
 
636
		afficherPanneau('#dialogue-form-invalide');
-
 
637
	}
-
 
638
}
-
 
639
 
-
 
640
function afficherObs() {
544
			$("#liste-obs").prepend(
641
	$("#liste-obs").prepend(
545
				'<div id="obs'+obsNumero+'" class="row-fluid obs obs'+obsNumero+'">'+
642
		'<div id="obs'+obsNbre+'" class="row-fluid obs obs'+obsNbre+'">'+
546
					'<div class="span12">'+
643
			'<div class="span12">'+
547
						'<div class="well" >'+
644
				'<div class="well" >'+
548
							'<div class="obs-action pull-right"  rel="tooltip" title="Supprimer cette observation">'+
645
					'<div class="obs-action pull-right"  rel="tooltip" title="Supprimer cette observation">'+
549
								'<button class="btn btn-danger supprimer-obs" value="'+obsNumero+'" title="'+obsNumero+'">'+
646
						'<button class="btn btn-danger supprimer-obs" value="'+obsNbre+'" title="'+obsNbre+'">'+
550
									'<i class="icon-trash icon-white"></i>'+
647
							'<i class="icon-trash icon-white"></i>'+
551
								'</button>'+
648
						'</button>'+
552
							'</div> '+		
649
					'</div> '+		
553
							'<div class="row-fluid">'+	
650
					'<div class="row-fluid">'+	
554
								'<div class="thumbnail span2">'+
651
						'<div class="thumbnail span2">'+
555
									ajouterImgMiniatureAuTransfert()+
652
							ajouterImgMiniatureAuTransfert()+
556
								'</div>'+
653
						'</div>'+
557
								'<div class="span9">'+
654
						'<div class="span9">'+
558
									'<ul class="unstyled">'+
655
							'<ul class="unstyled">'+
559
										'<li>'+
656
								'<li>'+
560
											'<span class="nom-sci">'+$("#taxon").val()+'</span> '+
657
									'<span class="nom-sci">'+$("#taxon").val()+'</span> '+
561
											ajouterNumNomSel()+
658
									ajouterNumNomSel()+
562
											' observé à '+
659
									' observé à '+
563
											'<span class="commune">'+$('#commune-nom').text()+'</span> '+
660
									'<span class="commune">'+$('#commune-nom').text()+'</span> '+
564
											'('+$('#commune-code-insee').text()+') ['+$("#latitude").val()+' / '+$("#longitude").val()+']'+
661
									'('+$('#commune-code-insee').text()+') ['+$("#latitude").val()+' / '+$("#longitude").val()+']'+
565
											' le '+
662
									' le '+
566
											'<span class="date">'+$("#date").val()+'</span>'+
663
									'<span class="date">'+$("#date").val()+'</span>'+
567
										'</li>'+
664
								'</li>'+
568
										'<li>'+
665
								'<li>'+
569
											'<span>Lieu-dit :</span> '+$('#lieudit').val()+' '+
666
									'<span>Lieu-dit :</span> '+$('#lieudit').val()+' '+
570
											'<span>Station :</span> '+$('#station').val()+' '+
667
									'<span>Station :</span> '+$('#station').val()+' '+
571
											'<span>Milieu :</span> '+$('#milieu').val()+' '+
668
									'<span>Milieu :</span> '+$('#milieu').val()+' '+
572
										'</li>'+
669
								'</li>'+
573
										'<li>'+
670
								'<li>'+
574
											'Commentaires : <span class="discretion">'+$("#notes").val()+'</span>'+
671
									'Commentaires : <span class="discretion">'+$("#notes").val()+'</span>'+
575
										'</li>'+
672
								'</li>'+
576
									'</ul>'+
673
							'</ul>'+
577
								'</div>'+
-
 
578
							'</div>'+
-
 
579
						'</div>'+
674
						'</div>'+
580
					'</div>'+
675
					'</div>'+
581
				'</div>');
676
				'</div>'+
-
 
677
			'</div>'+
-
 
678
		'</div>');
-
 
679
}
-
 
680
 
582
			//rassemble les obs dans #liste-obs
681
function stockerObsData() {
583
			$("#liste-obs").data('obsId'+obsNumero, {
682
	$("#liste-obs").data('obsId'+obsNbre, {
584
				'date' : $("#date").val(), 
683
		'date' : $("#date").val(), 
585
				'notes' : $("#notes").val(),
684
		'notes' : $("#notes").val(),
586
				
685
		
587
				'nom_sel' : $("#taxon").val(),
686
		'nom_sel' : $("#taxon").val(),
588
				'num_nom_sel' : $("#taxon").data("numNomSel"),
687
		'num_nom_sel' : $("#taxon").data("numNomSel"),
589
				'nom_ret' : $("#taxon").data("nomRet"),
688
		'nom_ret' : $("#taxon").data("nomRet"),
590
				'num_nom_ret' : $("#taxon").data("numNomRet"),
689
		'num_nom_ret' : $("#taxon").data("numNomRet"),
591
				'num_taxon' : $("#taxon").data("nt"),
690
		'num_taxon' : $("#taxon").data("nt"),
592
				'famille' : $("#taxon").data("famille"),
691
		'famille' : $("#taxon").data("famille"),
593
				'referentiel' : ($("#taxon").data("numNomSel") == undefined ? '' : NOM_SCI_REFERENTIEL),
692
		'referentiel' : ($("#taxon").data("numNomSel") == undefined ? '' : NOM_SCI_REFERENTIEL),
594
				
693
		
595
				'latitude' : $("#latitude").val(),
694
		'latitude' : $("#latitude").val(),
596
				'longitude' : $("#longitude").val(),
695
		'longitude' : $("#longitude").val(),
597
				'commune_nom' : $("#commune-nom").text(),
696
		'commune_nom' : $("#commune-nom").text(),
598
				'commune_code_insee' : $("#commune-code-insee").text(),
697
		'commune_code_insee' : $("#commune-code-insee").text(),
599
				'lieu_dit' : $("#lieu_dit").val(),
698
		'lieu_dit' : $("#lieu_dit").val(),
600
				'station' : $("#station").val(),
699
		'station' : $("#station").val(),
601
				'milieu' : $("#milieu").val(),
700
		'milieu' : $("#milieu").val(),
602
				
701
		
603
				//Ajout des champs images
702
		//Ajout des champs images
604
				'image_nom' : $("#miniature-img").attr('alt'),
703
		'image_nom' : $("#miniature-img").attr('alt'),
605
				'image_b64' : getB64ImgOriginal()
704
		'image_b64' : getB64ImgOriginal()
606
			});
-
 
607
			supprimerMiniature();
-
 
608
			$(".obs-nbre").triggerHandler('changement');
-
 
609
		}
-
 
610
	});
-
 
611
	
-
 
612
	$(".obs-nbre").on('changement', function() {
-
 
613
		if (obsNbre == 0) {
-
 
614
			$("#transmettre-obs").attr('disabled', 'disabled');
-
 
615
			$("#ajouter-obs").removeAttr('disabled');
-
 
616
		} else if (obsNbre > 0 && obsNbre < OBS_MAX_NBRE) {
-
 
617
			$("#transmettre-obs").removeAttr('disabled');
-
 
618
			$("#ajouter-obs").removeAttr('disabled');
-
 
619
		} else if (obsNbre >= OBS_MAX_NBRE) {
-
 
620
			$("#ajouter-obs").attr('disabled', 'disabled');
-
 
621
		}
-
 
622
	});
705
	});
-
 
706
}
-
 
707
 
-
 
708
function surChangementNbreObs() {
-
 
709
	if (obsNbre == 0) {
-
 
710
		$("#transmettre-obs").attr('disabled', 'disabled');
-
 
711
		$("#ajouter-obs").removeAttr('disabled');
-
 
712
	} else if (obsNbre > 0 && obsNbre < OBS_MAX_NBRE) {
-
 
713
		$("#transmettre-obs").removeAttr('disabled');
-
 
714
		$("#ajouter-obs").removeAttr('disabled');
-
 
715
	} else if (obsNbre >= OBS_MAX_NBRE) {
-
 
716
		$("#ajouter-obs").attr('disabled', 'disabled');
-
 
717
		afficherPanneau("#dialogue-bloquer-creer-obs");
-
 
718
	}
-
 
719
}
-
 
720
 
-
 
721
function transmettreObs() {
-
 
722
	var observations = $("#liste-obs").data();
Line -... Line 723...
-
 
723
	
623
	
724
	if (observations == undefined || jQuery.isEmptyObject(observations)) {
624
	$("body").on('click', ".supprimer-obs", supprimerObs);
725
		afficherPanneau("#dialogue-zero-obs");
-
 
726
	} else {
625
	
727
		observations['projet'] = TAG_PROJET;
626
	$("#transmettre-obs").on('click', function(e) {
728
		observations['tag-obs'] = TAG_OBS;
Line 627... Line 729...
627
		var observations = $("#liste-obs").data();
729
		observations['tag-img'] = TAG_IMG;
628
		
730
		
629
		if (observations == undefined || jQuery.isEmptyObject(observations)) {
731
		var utilisateur = new Object();
630
			$("#dialogue-zero-obs").show();
732
		utilisateur.prenom = $("#prenom").val();
631
		} else {
733
		utilisateur.nom = $("#nom").val();
-
 
734
		utilisateur.courriel = $("#courriel").val();
632
			observations['projet'] = TAG_PROJET;
735
		observations['utilisateur'] = utilisateur;
-
 
736
		
-
 
737
		envoyerObsAuCel(observations);
-
 
738
	}
633
			observations['tag-obs'] = TAG_OBS;
739
	return false;
-
 
740
}
-
 
741
 
-
 
742
function envoyerObsAuCel(observations) {
-
 
743
	var erreurMsg = "";
-
 
744
	$.ajax({
-
 
745
		url : SERVICE_SAISIE_URL,
-
 
746
		type : "POST",
-
 
747
		data : observations,
634
			observations['tag-img'] = TAG_IMG;
748
		dataType : "json",
635
			
749
		beforeSend : function() {
636
			var utilisateur = new Object();
750
			$(".alert-txt .msg").remove();	
-
 
751
			$(".alert-txt .msg-erreur").remove();
-
 
752
			$(".alert-txt .msg-debug").remove();
-
 
753
			$("#chargement").show();
-
 
754
		},
-
 
755
		success : function(data, textStatus, jqXHR) {
-
 
756
			$('#dialogue-obs-transaction-ok .alert-txt').append($("#tpl-transmission-ok").clone().html());
-
 
757
			supprimerMiniature();
-
 
758
		},
-
 
759
		statusCode : {
-
 
760
			500 : function(jqXHR, textStatus, errorThrown) {
-
 
761
				erreurMsg += "Erreur 500 :\ntype : "+textStatus+' '+errorThrown+"\n";
-
 
762
		    }
-
 
763
		},
-
 
764
		error : function(jqXHR, textStatus, errorThrown) {
-
 
765
			erreurMsg += "Erreur Ajax :\ntype : "+textStatus+' '+errorThrown+"\n";
-
 
766
			try {
637
			utilisateur.prenom = $("#prenom").val();
767
				reponse = jQuery.parseJSON(jqXHR.responseText);
638
			utilisateur.nom = $("#nom").val();
768
				if (reponse != null) {
-
 
769
					$.each(reponse, function (cle, valeur) {
-
 
770
						erreurMsg += valeur + "\n";
-
 
771
					});
-
 
772
				}
-
 
773
			} catch(e) {
-
 
774
				erreurMsg += "L'erreur n'était pas en JSON.";
-
 
775
			}
-
 
776
		},
-
 
777
		complete : function(jqXHR, textStatus) {
Line 639... Line 778...
639
			utilisateur.courriel = $("#courriel").val();
778
			$("#chargement").hide();
640
			observations['utilisateur'] = utilisateur;
-
 
641
			
-
 
642
			var erreurMsg = "";
-
 
643
			$.ajax({
-
 
644
				url : SERVICE_SAISIE_URL,
-
 
645
				type : "POST",
-
 
646
				data : observations,
-
 
647
				dataType : "json",
-
 
648
				beforeSend : function() {
-
 
649
					$(".msg").remove();	
-
 
650
					$(".msg-erreur").remove();
-
 
651
					$(".msg-debug").remove();
-
 
652
					$("#chargement").show();
-
 
653
				},
-
 
654
				success : function(data, textStatus, jqXHR) {
-
 
655
					$("#dialogue-obs-transaction .alert-txt").append(
-
 
656
						'<p class="msg">Vos observations ont bien été transmises au réseau. '+
-
 
657
						"Elles sont désormais consultables à travers les différents outils de visualisation "+
-
 
658
						'du réseau (<a href="http://www.tela-botanica.org/site:botanique">eFlore</a>, '+
-
 
659
						'<a href="http://www.tela-botanica.org/page:cel_galerie">galerie d\'images</a>, '+
-
 
660
						'<a href="http://www.tela-botanica.org/widget:cel:carto">cartographie (widget)</a>...).'+
-
 
661
						"Si vous souhaitez les modifier ou les supprimer, vous pouvez les retrouvez en vous "+
-
 
662
						'connectant à votre <a href="http://www.tela-botanica.org/appli:cel">Carnet en ligne.</p>');
-
 
663
					supprimerMiniature();
-
 
664
				},
-
 
665
				statusCode : {
-
 
666
					500 : function(jqXHR, textStatus, errorThrown) {
-
 
667
						$("#chargement").hide();
-
 
668
						erreurMsg += "Erreur 500 :\ntype : "+textStatus+' '+errorThrown+"\n";
-
 
669
						if (DEBUG) {
-
 
670
							$("#dialogue-obs-transaction .alert-txt").append('<pre class="msg-erreur">'+erreurMsg+'</pre>');
-
 
671
						}
-
 
672
				    }
-
 
673
				},
-
 
674
				error : function(jqXHR, textStatus, errorThrown) {
-
 
675
					erreurMsg += "Erreur Ajax :\ntype : "+textStatus+' '+errorThrown+"\n";
-
 
676
					try {
-
 
677
						reponse = jQuery.parseJSON(jqXHR.responseText);
-
 
678
						if (reponse != null) {
-
 
679
							$.each(reponse, function (cle, valeur) {
-
 
680
								erreurMsg += valeur + "\n";
-
 
681
							});
-
 
682
						}
-
 
683
					} catch(e) {
-
 
684
						erreurMsg += "L'erreur n'était pas en JSON.";
779
			var debugMsg = extraireEnteteDebug(jqXHR);
685
					}
780
			
686
					
-
 
687
					if (DEBUG) {
-
 
688
						$("#dialogue-obs-transaction .alert-txt").append('<pre class="msg-erreur">'+erreurMsg+'</pre>');
-
 
689
					}
-
 
690
				},
-
 
691
				complete : function(jqXHR, textStatus) {
-
 
692
					$("#chargement").hide();
-
 
693
					var debugMsg = '';
-
 
694
					if (jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
-
 
695
						debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
-
 
696
						if (debugInfos != null) {
-
 
697
							$.each(debugInfos, function (cle, valeur) {
-
 
698
								debugMsg += valeur + "\n";
-
 
699
							});
-
 
700
						}
-
 
701
					}
-
 
702
					if (erreurMsg != '') {
-
 
703
						$("#dialogue-obs-transaction .alert-txt").append('<p class="msg">'+
-
 
704
								'Une erreur est survenue lors de la transmission de vos observations.'+'<br />'+
-
 
705
								'Vous pouvez signaler le disfonctionnement à <a href="'+
-
 
706
								'mailto:cel@tela-botanica.org'+'?'+
-
 
707
								'subject=Disfonctionnement du widget de saisie Biodiversite34'+
-
 
708
								"&body="+erreurMsg+"\nDébogage :\n"+debugMsg+
-
 
709
								'">cel@tela-botanica.org</a>.'+
-
 
710
								'</p>');
781
			if (erreurMsg != '') {
711
					}
-
 
712
					if (DEBUG) {
-
 
713
						$("#dialogue-obs-transaction .alert-txt").append('<pre class="msg-debug">Débogage : '+debugMsg+'</pre>');
-
 
714
					}
-
 
715
					
-
 
716
					$("#dialogue-obs-transaction").show();
-
 
717
					$("#liste-obs").removeData();
-
 
718
					$('.obs').remove();
782
				if (DEBUG) {
-
 
783
					$("#dialogue-obs-transaction-ko .alert-txt").append('<pre class="msg-erreur">'+erreurMsg+'</pre>');
-
 
784
					$("#dialogue-obs-transaction-ko .alert-txt").append('<pre class="msg-debug">Débogage : '+debugMsg+'</pre>');
-
 
785
				}
-
 
786
				var hrefCourriel = "mailto:cel@tela-botanica.org?"+
-
 
787
					"subject=Disfonctionnement du widget de saisie "+TAG_PROJET+
-
 
788
					"&body="+erreurMsg+"\nDébogage :\n"+debugMsg;
-
 
789
				
-
 
790
				$('#dialogue-obs-transaction-ko .alert-txt').append($("#tpl-transmission-ko").clone()
-
 
791
					.find('.courriel-erreur')
-
 
792
					.attr('href', hrefCourriel)
-
 
793
					.end()
-
 
794
					.html());
-
 
795
				$("#dialogue-obs-transaction-ko").show();
-
 
796
			} else {
-
 
797
				if (DEBUG) {
-
 
798
					$("#dialogue-obs-transaction-ok .alert-txt").append('<pre class="msg-debug">Débogage : '+debugMsg+'</pre>');
719
					obsNumero = 0;
799
				}
720
					initialiserNbreObs();
800
				$("#dialogue-obs-transaction-ok").show();
721
				}
-
 
722
			});
801
				initialiserObs();
723
		}
802
			}					
Line 724... Line 803...
724
		return false;
803
		}
725
	});
804
	});
726
});
805
}
727
 
806
 
Line 754... Line 833...
754
	
833
	
755
	$('.obs'+obsId).remove();
834
	$('.obs'+obsId).remove();
756
	$("#liste-obs").removeData('obsId'+obsId);
835
	$("#liste-obs").removeData('obsId'+obsId);
Line 757... Line 836...
757
}
836
}
758
 
837
 
759
function initialiserNbreObs() {
838
function initialiserObs() {
-
 
839
	obsNbre = 0;
-
 
840
	$(".obs-nbre").text(obsNbre);
-
 
841
	$(".obs-nbre").triggerHandler('changement');
-
 
842
	$("#liste-obs").removeData();
760
	obsNbre = 0;
843
	$('.obs').remove();
Line 761... Line 844...
761
	$(".obs-nbre").text(obsNbre);
844
	$("#dialogue-bloquer-creer-obs").hide();
762
}
845
}
763
 
846