Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1213 Rev 1215
Line 334... Line 334...
334
	});
334
	});
335
}
335
}
Line 336... Line 336...
336
 
336
 
337
//+---------------------------------------------------------------------------------------------------------+
337
//+---------------------------------------------------------------------------------------------------------+
-
 
338
// FORMULAIRE
-
 
339
var obsNbre = 0;
338
// FORMULAIRE
340
 
339
$(document).ready(function() {
341
$(document).ready(function() {
340
	$("#prenom").bind("change", function(event) {
342
	$("#prenom").bind("change", function(event) {
341
		var prenom = new Array();
343
		var prenom = new Array();
342
		var mots = $(this).val().split('-');
344
		var mots = $(this).val().split('-');
Line 385... Line 387...
385
			if (element.type === 'radio') {
387
			if (element.type === 'radio') {
386
				this.findByName(element.name).parent("div").parent("div").removeClass(errorClass).addClass(validClass);
388
				this.findByName(element.name).parent("div").parent("div").removeClass(errorClass).addClass(validClass);
387
			} else {
389
			} else {
388
				if ($(element).attr('id') == 'taxon') {
390
				if ($(element).attr('id') == 'taxon') {
389
					var warningClass = "control-group warning";
391
					var warningClass = "control-group warning";
390
					if ($("#taxon").data("selection") != $("#taxon").val()) {
392
					if ($("#taxon").data("value") != $("#taxon").val()) {
391
						$("#taxon").data("selection", "");
393
						$("#taxon").removeData();
392
						$("#taxon").data("nn", "");
394
						$("#taxon").removeClass('ns-retenu');
393
						if ($("#taxon").val() != '') {
395
						if ($("#taxon").val() != '') {
394
							$("#taxon-input-groupe").removeClass(validClass)
396
							$("#taxon-input-groupe").removeClass(validClass)
395
								.removeClass(errorClass)
397
								.removeClass(errorClass)
396
								.addClass(warningClass);
398
								.addClass(warningClass);
397
							this.showLabel(element, "Nom abscent du référentiel.");
399
							this.showLabel(element, "Nom absent du référentiel.");
398
						}
400
						}
399
					} else {
401
					} else {
400
						if ($("#taxon").val() != '') {
402
						if ($("#taxon").val() != '') {
401
							$("#taxon-input-groupe").removeClass(warningClass)
403
							$("#taxon-input-groupe").removeClass(warningClass)
402
								.removeClass(errorClass)
404
								.removeClass(errorClass)
Line 454... Line 456...
454
	var obsNumero = 0;
456
	var obsNumero = 0;
455
	$("#ajouter-obs").bind('click', function(e) {
457
	$("#ajouter-obs").bind('click', function(e) {
456
		if (validerFormulaire() == true) {
458
		if (validerFormulaire() == true) {
457
			//rassemble les obs dans un tableau html
459
			//rassemble les obs dans un tableau html
458
			obsNumero = obsNumero + 1;
460
			obsNumero = obsNumero + 1;
-
 
461
			obsNbre = obsNbre + 1;
-
 
462
			$(".obs-nbre").text(obsNbre);
459
			$("#liste-obs tbody").append(
463
			$("#liste-obs tbody").append(
460
					'<tr id="obs'+obsNumero+'" class="obs">'+
464
				'<tr id="obs'+obsNumero+'" class="obs obs'+obsNumero+'">'+
461
					'<td>'+obsNumero+'</td>'+
-
 
462
					'<td>'+$("#date").val()+'</td>'+
465
					'<td rowspan="3" class="obs-miniature">'+ajouterImgMiniatureAuTransfert()+'</td>'+
463
					'<td>'+$("#taxon").val()+'</td>'+
466
					'<td>'+$("#taxon").val()+'</td>'+
-
 
467
					'<td colspan="2">'+$('#commune-nom').text()+' ('+$('#commune-code-insee').text()+') ['+$("#latitude").val()+' / '+$("#longitude").val()+']</td>'+
464
					'<td>'+$("#latitude").val()+' / '+$("#longitude").val()+'</td>'+
468
					'<td rowspan="3">'+$("#notes").val()+'</td>'+
-
 
469
					'<td rowspan="3" class="obs-action">'+
-
 
470
						'<button class="supprimer-obs" value="'+obsNumero+'" title="Supprimer l\'observation '+obsNumero+'">'+
-
 
471
						'<img src="'+SUPPRIMER_ICONE_URL+'"/></button>'+
-
 
472
					'</td>'+
-
 
473
				'</tr>'+
-
 
474
				'<tr class="obs obs'+obsNumero+'">'+
465
					'<td>'+$('#commune-nom').text()+' ('+$('#commune-code-insee').text()+')</td>'+
475
					'<td rowspan="2">'+$("#date").val()+'</td>'+
466
					'<td>'+$('#lieudit').val()+'</td>'+
476
					'<td>'+$('#lieudit').val()+'</td>'+
467
					'<td>'+$('#station').val()+'</td>'+
477
					'<td>'+$('#station').val()+'</td>'+
468
					'<td>'+$('#milieu').val()+'</td>'+
478
				'</tr>'+
469
					'<td class="obs-miniature">'+ajouterImgMiniatureAuTransfert()+'</td>'+
479
				'<tr class="obs obs'+obsNumero+'">'+
470
					'<td>'+$("#notes").val()+'</td>'+
480
					'<td colspan="2">'+$('#milieu').val()+'</td>'+
471
					'<td><button class="supprimer-obs" value="'+obsNumero+'" title="Supprimer l\'observation '+obsNumero+'">'+
-
 
472
					'<img src="'+SUPPRIMER_ICONE_URL+'"/></button></td>'+
-
 
473
				'</tr>');
481
				'</tr>');
474
			//rassemble les obs dans #liste-obs
482
			//rassemble les obs dans #liste-obs
475
			var numNomSel = $("#taxon").val();
-
 
476
			$("#liste-obs").data('obsId'+obsNumero, {
483
			$("#liste-obs").data('obsId'+obsNumero, {
477
				'date' : $("#date").val(), 
484
				'date' : $("#date").val(), 
-
 
485
				'notes' : $("#notes").val(),
-
 
486
				
478
				'num_nom_sel' : numNomSel,
487
				'nom_sel' : $("#taxon").val(),
479
				'nom_sel' : taxons[numNomSel]['nom_sel'],
488
				'num_nom_sel' : $("#taxon").data("numNomSel"),
480
				'nom_ret' : taxons[numNomSel]['nom_ret'],
489
				'nom_ret' : $("#taxon").data("nomRet"),
481
				'num_nom_ret' : taxons[numNomSel]['num_nom_ret'],
490
				'num_nom_ret' : $("#taxon").data("numNomRet"),
482
				'num_taxon' : taxons[numNomSel]['num_taxon'],
491
				'num_taxon' : $("#taxon").data("nt"),
483
				'famille' : taxons[numNomSel]['famille'],
492
				'famille' : $("#taxon").data("famille"),
484
				'nom_fr' : taxons[numNomSel]['nom_fr'],
493
				'referentiel' : NOM_SCI_REFERENTIEL,
485
				'milieu' : $('input[name=milieu]:checked').val(),
-
 
-
 
494
				
486
				'latitude' : $("#latitude").val(),
495
				'latitude' : $("#latitude").val(),
487
				'longitude' : $("#longitude").val(),
496
				'longitude' : $("#longitude").val(),
488
				'commune_nom' : $("#commune-nom").text(),
497
				'commune_nom' : $("#commune-nom").text(),
489
				'commune_code_insee' : $("#commune-code-insee").text(),
498
				'commune_code_insee' : $("#commune-code-insee").text(),
490
				'lieu_dit' : $("#rue").val(),
499
				'lieu_dit' : $("#lieu_dit").val(),
491
				'station' : $("#rue_num_debut").val()+'-'+$("#rue_num_fin").val()+'-'+$("#rue_cote").val(),
500
				'station' : $("#station").val(),
492
				'notes' : $("#notes").val(),
501
				'milieu' : $("#milieu").val(),
-
 
502
				
493
				//Ajout des champs images
503
				//Ajout des champs images
494
				'image_nom' : $("#miniature-img").attr('alt'),
504
				'image_nom' : $("#miniature-img").attr('alt'),
495
				'image_b64' : getB64ImgOriginal()
505
				'image_b64' : getB64ImgOriginal()
496
			});
506
			});
497
		}
507
		}
Line 505... Line 515...
505
		if (observations == undefined || jQuery.isEmptyObject(observations)) {
515
		if (observations == undefined || jQuery.isEmptyObject(observations)) {
506
			$("#dialogue-zero-obs").dialog();
516
			$("#dialogue-zero-obs").dialog();
507
		} else if ($("#saisie-obs").valid() == false) {
517
		} else if ($("#saisie-obs").valid() == false) {
508
			$("#dialogue-form-invalide").dialog();
518
			$("#dialogue-form-invalide").dialog();
509
		} else {
519
		} else {
510
			observations['projet'] = 'Sauvages';
520
			observations['projet'] = PROJET_TAG;
Line 511... Line 521...
511
			
521
			
512
			var utilisateur = new Object();
522
			var utilisateur = new Object();
513
			utilisateur.prenom = $("#prenom").val();
523
			utilisateur.prenom = $("#prenom").val();
514
			utilisateur.nom = $("#nom").val();
524
			utilisateur.nom = $("#nom").val();
Line 614... Line 624...
614
	var obsId = $(this).val();
624
	var obsId = $(this).val();
615
	// Problème avec IE 6 et 7
625
	// Problème avec IE 6 et 7
616
	if (obsId == "Supprimer") {
626
	if (obsId == "Supprimer") {
617
		obsId = $(this).attr("title");
627
		obsId = $(this).attr("title");
618
	}
628
	}
-
 
629
	obsNbre = obsNbre - 1;
-
 
630
	$(".obs-nbre").text(obsNbre);
Line 619... Line 631...
619
	
631
	
620
	$('#obs'+obsId).remove();
632
	$('.obs'+obsId).remove();
621
	$("#liste-obs").removeData('obsId'+obsId);
633
	$("#liste-obs").removeData('obsId'+obsId);
Line 622... Line 634...
622
}
634
}
623
 
635
 
Line 632... Line 644...
632
	return miniature;
644
	return miniature;
633
}
645
}
Line 634... Line 646...
634
 
646
 
635
//+---------------------------------------------------------------------------------------------------------+
647
//+---------------------------------------------------------------------------------------------------------+
636
// AUTO-COMPLÉTION Noms Scientifiques
-
 
Line 637... Line 648...
637
var listeNomsScientifiques = new Object();
648
// AUTO-COMPLÉTION Noms Scientifiques
638
 
649
 
639
function ajouterAutocompletionNoms() {
650
function ajouterAutocompletionNoms() {
640
	$('#taxon').autocomplete({
651
	$('#taxon').autocomplete({
641
		source: function(requete, add){  
652
		source: function(requete, add){  
-
 
653
			// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
642
			// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
654
			requete = "";
643
			requete = "";
655
			var url = getUrlAutocompletionNomsSci();
644
			$.getJSON(getUrlAutocompletionNomsSci($('#taxon').val()), requete, function(data) {  
656
			$.getJSON(url, requete, function(data) {  
645
				var suggestions = traiterRetourNomsSci(data);
657
				var suggestions = traiterRetourNomsSci(data);
646
				add(suggestions);  
658
				add(suggestions);  
647
            });
659
            });
648
        },
660
        },
-
 
661
        html: true
649
        html: true
662
	});
650
	});
663
	
-
 
664
	$( "#taxon" ).bind("autocompleteselect", function(event, ui) {
651
	$( "#taxon" ).bind("autocompleteselect", function(event, ui) {
665
		$("#taxon").data(ui.item);
-
 
666
		if (ui.item.retenu == true) {
-
 
667
			$("#taxon").addClass('ns-retenu');
-
 
668
		} else {
652
		$("#taxon").data("selection", ui.item.value);
669
			$("#taxon").removeClass('ns-retenu');
653
		$("#taxon").data("nn", ui.item.nn);
670
		}
Line 654... Line 671...
654
	});
671
	});
-
 
672
}
655
}
673
 
656
 
674
function getUrlAutocompletionNomsSci() {
657
function getUrlAutocompletionNomsSci(mots) {
675
	var mots = $('#taxon').val();
Line 658... Line 676...
658
	var url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL.replace('{masque}', mots);
676
	var url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL.replace('{masque}', mots);
659
	return url;
677
	return url;
660
}
678
}
661
 
679
 
662
function traiterRetourNomsSci(data) {
680
function traiterRetourNomsSci(data) {
-
 
681
	var suggestions = [];  
-
 
682
	if (data.resultat != undefined) {
663
	var suggestions = [];  
683
		$.each(data.resultat, function(i, val) {
664
	if (data.resultat != undefined) {
684
			val.nn = i;
665
		$.each(data.resultat, function(i, val) {
685
			var nom = {label : '', value : '', nt : '', nomSel : '', nomSelComplet : '', numNomSel : '',  
666
			val.nn = i;
686
				nomRet : '', numNomRet : '', famille : '', retenu : false
667
			var nom = {};
-
 
668
			if (suggestions.length >= 20) {
687
			};
669
				nom.label = "...";
688
			if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {
670
				nom.value = $('#taxon').val();
689
				nom.label = "...";
671
				nom.nn = "";
690
				nom.value = $('#taxon').val();
672
				suggestions.push(nom);
691
				suggestions.push(nom);
-
 
692
				return false;
-
 
693
			} else {
-
 
694
				nom.label = val.nom_sci;
673
				return false;
695
				nom.value = val.nom_sci;
-
 
696
				nom.nt = val.num_taxonomique;
-
 
697
				nom.nomSel = val.nom_sci;
674
			} else {
698
				nom.nomSelComplet = val.nom_sci_complet;
-
 
699
				nom.numNomSel = val.nn;
-
 
700
				nom.nomRet = val.nom_retenu;
-
 
701
				// TODO : remplacer val.nom_retenu par val.nom_retenu.libelle et réactiver nom_retenu.id
675
				nom.label = val.nom_sci;
702
				//nom.numNomRet = val.nom_retenu.id;
676
				nom.value = val.nom_sci;
703
				nom.famille = val.famille;
677
				nom.nn = val.nn;
704
				nom.retenu = (val.retenu == 'false') ? false : true;
678
				listeNomsScientifiques[val.nom_sci] = val;
705
				
Line 693... Line 720...
693
 * http://github.com/scottgonzalez/jquery-ui-extensions
720
 * http://github.com/scottgonzalez/jquery-ui-extensions
694
 * 
721
 * 
695
 * Adaptation par Aurélien Peronnet pour la mise en gras des noms de taxons valides
722
 * Adaptation par Aurélien Peronnet pour la mise en gras des noms de taxons valides
696
 */
723
 */
697
(function( $ ) {
724
(function( $ ) {
698
 
-
 
699
var proto = $.ui.autocomplete.prototype,
725
	var proto = $.ui.autocomplete.prototype,
700
	initSource = proto._initSource;
726
		initSource = proto._initSource;
701
 
727
	
702
function filter( array, term ) {
728
	function filter( array, term ) {
703
	var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
729
		var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
704
	return $.grep( array, function(value) {
730
		return $.grep( array, function(value) {
705
		return matcher.test( $( "<div>" ).html( value.label || value.value || value ).text() );
731
			return matcher.test( $( "<div>" ).html( value.label || value.value || value ).text() );
706
	});
732
		});
707
}
-
 
708
 
-
 
709
$.extend( proto, {
-
 
710
	_initSource: function() {
-
 
711
		if ( this.options.html && $.isArray(this.options.source) ) {
-
 
712
			this.source = function( request, response ) {
-
 
713
				response( filter( this.options.source, request.term ) );
-
 
714
			};
-
 
715
		} else {
-
 
716
			initSource.call( this );
-
 
717
		}
-
 
718
	},
-
 
719
	_renderItem: function( ul, item) {
-
 
720
		if (listeNomsScientifiques[item.label] != undefined && listeNomsScientifiques[item.label].retenu == "true") {
-
 
721
			item.label = "<b>"+item.label+"</b>";
-
 
722
		}
-
 
723
		
-
 
724
		if (item.label == '...') {
-
 
725
			item.label = "<b>"+item.label+"</b>";
-
 
726
		}
-
 
727
		
-
 
728
		return $( "<li></li>" )
-
 
729
			.data( "item.autocomplete", item )
-
 
730
			.append( $( "<a></a>" )[ this.options.html ? "html" : "text" ]( item.label ) )
-
 
731
			.appendTo( ul );
-
 
732
	}
733
	}
-
 
734
	
-
 
735
	$.extend( proto, {
-
 
736
		_initSource: function() {
-
 
737
			if ( this.options.html && $.isArray(this.options.source) ) {
-
 
738
				this.source = function( request, response ) {
-
 
739
					response( filter( this.options.source, request.term ) );
-
 
740
				};
-
 
741
			} else {
-
 
742
				initSource.call( this );
-
 
743
			}
-
 
744
		},
-
 
745
		_renderItem: function( ul, item) {
-
 
746
			if (item.retenu == true) {
-
 
747
				item.label = "<strong>"+item.label+"</strong>";
733
});
748
			}
734
 
749
			
-
 
750
			return $( "<li></li>" )
-
 
751
				.data( "item.autocomplete", item )
-
 
752
				.append( $( "<a></a>" )[ this.options.html ? "html" : "text" ]( item.label ) )
-
 
753
				.appendTo( ul );
-
 
754
		}
-
 
755
	});
735
})( jQuery );
756
})( jQuery );
736
757