Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1848 Rev 1916
Line 1... Line 1...
1
//+---------------------------------------------------------------------------------------------------------+
1
//+---------------------------------------------------------------------------------------------------------+
2
// GÉNÉRAL
2
// GÉNÉRAL => OK
-
 
3
$(document).ready(function() {
-
 
4
	if (DEBUG == false) {
-
 
5
		$(window).on('beforeunload', function(event) {
-
 
6
			return 'Êtes vous sûr de vouloir quiter la page?\nLes observations saisies mais non transmises seront perdues.';
-
 
7
		});
-
 
8
	}
-
 
9
});
-
 
10
//+----------------------------------------------------------------------------------------------------------+
-
 
11
// FONCTIONS GÉNÉRIQUES => OK
3
/**
12
/**
4
 * Stope l'évènement courrant quand on clique sur un lien.
13
 * Stope l'évènement courrant quand on clique sur un lien.
5
 * Utile pour Chrome, Safari...
14
 * Utile pour Chrome, Safari...
6
 * @param evenement
15
 * @param evenement
7
 * @return
16
 * @return
8
 */
17
 */
9
function arreter(evenement) {
18
function arreter(evenement) {
10
	if (evenement.stopPropagation) {
19
	if (evenement.stopPropagation) {
11
		evenement.stopPropagation();
20
		evenement.stopPropagation();
12
	}
21
	}
-
 
22
	if (evenement.preventDefault) {
-
 
23
		evenement.preventDefault();
-
 
24
	}
13
	return false;
25
	return false;
14
}
26
}
Line 15... Line 27...
15
 
27
 
16
// TODO : voir si cette fonction est bien utile. Résoud le pb d'un warning sous chrome.
28
function extraireEnteteDebug(jqXHR) {
-
 
29
	var msgDebug = '';
-
 
30
	if (jqXHR.getResponseHeader('X-DebugJrest-Data') != '') {
17
(function(){
31
		var debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader('X-DebugJrest-Data'));
18
	// remove layerX and layerY
32
		if (debugInfos != null) {
19
	var all = $.event.props,
33
			$.each(debugInfos, function (cle, valeur) {
20
		len = all.length,
34
				msgDebug += valeur + "\n";
21
		res = [];
35
			});
22
	while (len--) {
-
 
23
		var el = all[len];
-
 
24
		if (el != 'layerX' && el != 'layerY') res.push(el);
36
		}
-
 
37
	}
-
 
38
	return msgDebug;
-
 
39
}
-
 
40
 
-
 
41
function afficherPanneau(selecteur) {
-
 
42
	$(selecteur).fadeIn('slow').delay(DUREE_MESSAGE).fadeOut('slow');
-
 
43
}
-
 
44
 
-
 
45
//+----------------------------------------------------------------------------------------------------------+
-
 
46
//FORM IDENTITE : gestion de l'observateur => OK
-
 
47
 
-
 
48
$(document).ready(function() {
-
 
49
	$('#courriel').on('blur', requeterIdentite);
-
 
50
	$('#courriel').on('keypress', testerLancementRequeteIdentite);
-
 
51
});
-
 
52
 
-
 
53
function testerLancementRequeteIdentite(event) {
-
 
54
	if (event.which == 13) {
-
 
55
		requeterIdentite();
25
	}
56
		event.preventDefault();
-
 
57
		event.stopPropagation();
-
 
58
	}
-
 
59
}
-
 
60
 
-
 
61
function requeterIdentite() {
-
 
62
	var courriel = $('#courriel').val();
-
 
63
	//TODO: mettre ceci en paramètre de config
-
 
64
	var urlAnnuaire = SERVICE_ANNUAIRE_ID_URL + courriel;
-
 
65
	$.ajax({
-
 
66
		url: urlAnnuaire,
-
 
67
		type: 'GET',
-
 
68
		success: function(data, textStatus, jqXHR) {
-
 
69
			if (data != undefined && data[courriel] != undefined) {
-
 
70
				var infos = data[courriel];
-
 
71
				$('#id_utilisateur').val(infos.id);
-
 
72
				$('#prenom').val(infos.prenom);
-
 
73
				$('#nom').val(infos.nom);
-
 
74
				$('#courriel_confirmation').val(courriel);
-
 
75
				$('#prenom, #nom, #courriel_confirmation').attr('disabled', 'disabled');
-
 
76
				$('#structure').focus();
-
 
77
			} else {
-
 
78
				surErreurCompletionCourriel();
-
 
79
			}
-
 
80
		},
-
 
81
		error: function(jqXHR, textStatus, errorThrown) {
-
 
82
			surErreurCompletionCourriel();
-
 
83
		},
-
 
84
		complete: function(jqXHR, textStatus) {
-
 
85
			$('#zone-prenom-nom').removeClass('hidden');
-
 
86
			$('#zone-courriel-confirmation').removeClass('hidden');
26
	$.event.props = res;
87
		}
-
 
88
	});
-
 
89
}
-
 
90
 
-
 
91
function surErreurCompletionCourriel() {
-
 
92
	$('#prenom, #nom, #courriel_confirmation').val('');
-
 
93
	$('#prenom, #nom, #courriel_confirmation').removeAttr('disabled');
-
 
94
	afficherPanneau('#dialogue-courriel-introuvable');
-
 
95
}
-
 
96
 
-
 
97
function formaterNom() {
-
 
98
	$(this).val($(this).val().toUpperCase());
-
 
99
}
-
 
100
 
-
 
101
function formaterPrenom() {
-
 
102
	var prenom = new Array(),
-
 
103
		mots = $(this).val().split(' ');
-
 
104
	for (var i = 0; i < mots.length; i++) {
-
 
105
		var mot = mots[i];
-
 
106
		if (mot.indexOf('-') >= 0) {
-
 
107
			var prenomCompose = new Array(),
-
 
108
				motsComposes = mot.split('-');
-
 
109
			for (var j = 0; j < motsComposes.length; j++) {
-
 
110
				var motSimple = motsComposes[j],
-
 
111
					motMajuscule = motSimple.charAt(0).toUpperCase() + motSimple.slice(1);
-
 
112
				prenomCompose.push(motMajuscule);
-
 
113
			}
-
 
114
			prenom.push(prenomCompose.join('-'));
-
 
115
		} else {
-
 
116
			var motMajuscule = mot.charAt(0).toUpperCase() + mot.slice(1);
-
 
117
			prenom.push(motMajuscule);
-
 
118
		}
-
 
119
	}
-
 
120
	$(this).val(prenom.join(' '));
-
 
121
}
-
 
122
 
Line 27... Line 123...
27
}());
123
 
28
 
124
 
29
//+----------------------------------------------------------------------------------------------------------+
125
//+----------------------------------------------------------------------------------------------------------+
30
//UPLOAD PHOTO : Traitement de l'image 
126
//UPLOAD PHOTO : Traitement de l'image 
Line 219... Line 315...
219
	// Marqueur google draggable
315
	// Marqueur google draggable
220
	marker = new google.maps.Marker({
316
	marker = new google.maps.Marker({
221
		map: map,
317
		map: map,
222
		draggable: true,
318
		draggable: true,
223
		title: 'Début de la portion de rue étudiée',
319
		title: 'Début de la portion de rue étudiée',
224
		icon: MARQUEUR_ICONE_DEBUT_URL,
320
		icon: GOOGLE_MAP_MARQUEUR_DEBUT_URL,
225
		position: latLng
321
		position: latLng
226
	});
322
	});
Line 227... Line 323...
227
	
323
	
Line 335... Line 431...
335
			// Marqueur google draggable
431
			// Marqueur google draggable
336
			markerFin = new google.maps.Marker({
432
			markerFin = new google.maps.Marker({
337
				map: map,
433
				map: map,
338
				draggable: true,
434
				draggable: true,
339
				title: 'Fin de la portion de rue étudiée',
435
				title: 'Fin de la portion de rue étudiée',
340
				icon: MARQUEUR_ICONE_FIN_URL,
436
				icon: GOOGLE_MAP_MARQUEUR_FIN_URL,
341
				position: latLngFin
437
				position: latLngFin
342
			});
438
			});
Line 343... Line 439...
343
			
439
			
344
			google.maps.event.addListener(markerFin, 'dragend', function() {
440
			google.maps.event.addListener(markerFin, 'dragend', function() {
Line 460... Line 556...
460
		});
556
		});
461
	});
557
	});
462
}
558
}
Line 463... Line 559...
463
 
559
 
464
//+---------------------------------------------------------------------------------------------------------+
560
//+---------------------------------------------------------------------------------------------------------+
-
 
561
//FORMULAIRE : traitements génériques
465
// FORMULAIRE
562
 
-
 
563
$(document).ready(function() {
-
 
564
	$('#prenom').on('change', formaterPrenom);
-
 
565
	$('#nom').on('change', formaterNom);
-
 
566
 
-
 
567
	configurerDatePicker('#date');
-
 
568
	$('#taxon-liste').on('change', surChangementTaxonListe);
-
 
569
	$('.alert .close').on('click', fermerPanneauAlert);
-
 
570
	
466
$(document).ready(function() {
571
	$('.has-tooltip').tooltip('enable');
-
 
572
	$('#btn-aide').on('click', basculerAffichageAide);
-
 
573
	
-
 
574
	ajouterAutocompletionNoms();
-
 
575
	
-
 
576
	configurerFormValidator();
-
 
577
	definirReglesFormValidator();
-
 
578
	
-
 
579
	
-
 
580
	//-------------------------------------------------------------------------------------------------------
Line 467... Line 581...
467
	$('#date').datepicker($.datepicker.regional['fr']);
581
	// A NETTOYER :
468
 
582
 
469
	$.validator.addMethod(
583
	$.validator.addMethod(
470
		'dateCel', 
584
		'dateCel', 
471
		function (value, element) { 
585
		function (value, element) { 
472
			return /^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value); 
586
			return /^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value); 
Line 473... Line -...
473
		}, 
-
 
474
		'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.');
-
 
475
	
-
 
476
	$('form#saisie-obs').validate({
-
 
477
		rules: {
-
 
478
			courriel: {
-
 
479
				required: true,
-
 
480
				email: true},
-
 
481
			courriel_confirmation: {
-
 
482
				required: true,
-
 
483
				equalTo: '#courriel'
-
 
484
			},
-
 
485
			rue_cote: 'required',
-
 
486
			'milieu[]': {
-
 
487
				required: true,
-
 
488
				minlength: 1
-
 
489
			},
-
 
490
			latitude: {
-
 
491
				required: true,
-
 
492
				range: [-90, 90]},
-
 
493
			longitude: {
-
 
494
				required: true,
-
 
495
				range: [-180, 180]},
-
 
496
			date: {
-
 
497
				required: true,
-
 
498
				dateCel: true},
587
		}, 
499
			taxon: 'required'
588
		'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.');
500
		},
589
	
501
		messages: {
590
		messages: {
Line 676... Line 765...
676
		}
765
		}
677
		return false;
766
		return false;
678
	});
767
	});
679
});
768
});
Line -... Line 769...
-
 
769
 
-
 
770
function configurerFormValidator() {
-
 
771
	$.validator.addMethod(
-
 
772
		'dateCel', 
-
 
773
		function (value, element) { 
-
 
774
			return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value)); 
-
 
775
		}, 
-
 
776
		'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.');
-
 
777
	
-
 
778
	$.extend($.validator.defaults, {
-
 
779
		ignore: [],// Forcer Jquery Validate à examiner les éléments avec en display:none;
-
 
780
		highlight: function(element) {
-
 
781
			$(element).closest('.control-group').removeClass('success').addClass('error');
-
 
782
		},
-
 
783
		success: function(element) {
-
 
784
			element.text('OK!').addClass('valid');
-
 
785
			element.closest('.control-group').removeClass('error').addClass('success');
-
 
786
			
-
 
787
			if (element.attr('id') == 'taxon' && $('#taxon').val() != '') {
-
 
788
				// Si le taxon n'est pas lié au référentiel, on vide le data associé
-
 
789
				if ($('#taxon').data('value') != $('#taxon').val()) {
-
 
790
					$('#taxon').data('numNomSel', '');
-
 
791
					$('#taxon').data('nomRet', '');
-
 
792
					$('#taxon').data('numNomRet', '');
-
 
793
					$('#taxon').data('nt', '');
-
 
794
					$('#taxon').data('famille', '');
-
 
795
				}
-
 
796
			}
-
 
797
		}
-
 
798
	});
-
 
799
}
-
 
800
 
-
 
801
function definirReglesFormValidator() {
-
 
802
	$('#form-observateur').validate({
-
 
803
		rules: {
-
 
804
			courriel: {
-
 
805
				required: true,
-
 
806
				email: true},
-
 
807
			courriel_confirmation: {
-
 
808
				required: true,
-
 
809
				equalTo: '#courriel'},
-
 
810
			prenom: {
-
 
811
				required: true},
-
 
812
			nom: {
-
 
813
				required: true}
-
 
814
		}
-
 
815
	});
-
 
816
	$('#form-obs').validate({
-
 
817
		rules: {
-
 
818
			station: {
-
 
819
				required: true},
-
 
820
			latitude : {
-
 
821
				required: true,
-
 
822
				range: [-90, 90]},
-
 
823
			longitude: {
-
 
824
				required: true,
-
 
825
				range: [-180, 180]},
-
 
826
			date: {
-
 
827
				required: true,
-
 
828
				'dateCel' : true},
-
 
829
			rue_cote: {
-
 
830
				required: true},
-
 
831
			'taxon-liste': {
-
 
832
				required: true},
-
 
833
			'milieux[]': {
-
 
834
				required: true,
-
 
835
				minlength: 1}
-
 
836
		},
-
 
837
		errorPlacement: function(error, element) {
-
 
838
			if (element.attr('name') == 'date') {
-
 
839
				element.parent('.input-prepend').after(error);
-
 
840
			} else if (element.attr('name') == 'milieux[]') {
-
 
841
				error.insertAfter('#milieux-controls');
-
 
842
			} else {
-
 
843
				error.insertAfter(element);
-
 
844
			}
-
 
845
		},
-
 
846
		messages: {
-
 
847
			'milieu[]': 'Vous devez sélectionner au moins un milieu'
-
 
848
		}
-
 
849
	});
-
 
850
}
-
 
851
 
-
 
852
function surChangementTaxonListe() {
-
 
853
	if ($('#taxon-liste').val() === '?') {
-
 
854
		$('#taxon-input-groupe').removeClass('hidden');
-
 
855
	} else {
-
 
856
		$('#taxon-input-groupe').addClass('hidden');
-
 
857
	}
-
 
858
}
-
 
859
 
-
 
860
function configurerDatePicker(selector) {
-
 
861
	$.datepicker.setDefaults($.datepicker.regional['fr']);
-
 
862
	$(selector).datepicker({
-
 
863
		dateFormat: 'dd/mm/yy',
-
 
864
		showOn: 'button',
-
 
865
		buttonImageOnly: true,
-
 
866
		buttonImage: CALENDRIER_ICONE_URL,
-
 
867
		buttonText: 'Afficher le calendrier pour saisir la date.',
-
 
868
		showButtonPanel: true,
-
 
869
		onSelect: function(date) {
-
 
870
			$(this).valid();
-
 
871
		}
-
 
872
	});
-
 
873
	$(selector + ' + img.ui-datepicker-trigger').appendTo(selector + '-icone.add-on');
-
 
874
}
680
 
875
 
681
function getB64ImgOriginal() {
876
function getB64ImgOriginal() {
682
	var b64 = '';
877
	var b64 = '';
683
	if ($("#miniature-img").hasClass('b64')) {
878
	if ($("#miniature-img").hasClass('b64')) {
684
		b64 = $("#miniature-img").attr('src');
879
		b64 = $("#miniature-img").attr('src');