Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2688 Rev 2697
Line 1... Line 1...
1
/**
1
/**
2
 * Déclenchement des actions sur la page
-
 
3
 */
-
 
4
$(document).ready(function() {
-
 
5
	// OMG un modèle objet !!
-
 
6
	var widget = new WidgetSaisie();
-
 
7
	widget.init();
-
 
8
 
-
 
9
	// fermeture fenêtre
-
 
10
	if (DEBUG == false) {
-
 
11
		$(window).on('beforeunload', function(event) {
-
 
12
			return 'Êtes vous sûr de vouloir quiter la page?\nLes observations saisies mais non transmises seront perdues.';
-
 
13
		});
-
 
14
	}
-
 
15
});
-
 
16
 
-
 
17
// lib
-
 
18
 
-
 
19
/**
-
 
20
* Stope l'évènement courant quand on clique sur un lien.
-
 
21
* Utile pour Chrome, Safari...
-
 
22
*/
-
 
23
function arreter(evenement) {
-
 
24
	if (evenement.stopPropagation) {
-
 
25
		evenement.stopPropagation();
-
 
26
	}
-
 
27
	if (evenement.preventDefault) {
-
 
28
		evenement.preventDefault();
-
 
29
	}
-
 
30
	return false;
-
 
31
}
-
 
32
 
-
 
33
/**
-
 
34
 * Extrait les données de désinsectisation d'une requête AJAX de jQuery
-
 
35
 * @param jqXHR
-
 
36
 * @returns {String}
-
 
37
 */
-
 
38
function extraireEnteteDebug(jqXHR) {
-
 
39
	var msgDebug = '';
-
 
40
	if (jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
-
 
41
		var debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
-
 
42
		if (debugInfos != null) {
-
 
43
			$.each(debugInfos, function (cle, valeur) {
-
 
44
				msgDebug += valeur + "\n";
-
 
45
			});
-
 
46
		}
-
 
47
	}
-
 
48
	return msgDebug;
-
 
49
}
-
 
50
 
-
 
51
function afficherPanneau(selecteur) {
-
 
52
	$(selecteur).fadeIn("slow").delay(DUREE_MESSAGE).fadeOut("slow");
-
 
53
}
-
 
54
 
-
 
55
 
-
 
56
 
-
 
57
 
-
 
58
/**
-
 
59
 * Constructeur WidgetSaisie par défaut
2
 * Constructeur WidgetSaisie par défaut
60
 */
3
 */
61
function WidgetSaisie() {
4
function WidgetSaisie() {
62
	this.obsNbre = 0;
5
	this.obsNbre = 0;
63
	this.nbObsEnCours = 1;
6
	this.nbObsEnCours = 1;
Line 89... Line 32...
89
/**
32
/**
90
 * Initialise le formulaire, les validateurs, les listes de complétion...
33
 * Initialise le formulaire, les validateurs, les listes de complétion...
91
 */
34
 */
92
WidgetSaisie.prototype.initForm = function() {
35
WidgetSaisie.prototype.initForm = function() {
93
	if (OBS_ID != '') {
36
	if (OBS_ID != '') {
94
		widget.chargerInfoObs();
37
		this.chargerInfoObs();
95
	}
38
	}
Line 96... Line 39...
96
 
39
 
97
	this.configurerDatePicker();
40
	this.configurerDatePicker();
98
	this.ajouterAutocompletionNoms();
41
	this.ajouterAutocompletionNoms();
Line 141... Line 84...
141
			$('#form-upload')[0].reset();
84
			$('#form-upload')[0].reset();
142
			window.alert("Le format de fichier n'est pas supporté, les formats acceptés sont "+	$("#fichier").attr("accept"));
85
			window.alert("Le format de fichier n'est pas supporté, les formats acceptés sont "+	$("#fichier").attr("accept"));
143
		}
86
		}
144
		return false;
87
		return false;
145
	});
88
	});
146
	// idéntité
89
	// identité
147
	$("#courriel").on('blur', this.requeterIdentite.bind(this));
90
	$("#courriel").on('blur', this.requeterIdentite.bind(this));
148
	$("#courriel").on('keypress', this.testerLancementRequeteIdentite.bind(this));
91
	$("#courriel").on('keypress', this.testerLancementRequeteIdentite.bind(this));
149
	$(".alert .close").on('click', this.fermerPanneauAlert);
92
	$(".alert .close").on('click', this.fermerPanneauAlert);
150
	$("[rel=tooltip]").tooltip('enable');
93
	$("[rel=tooltip]").tooltip('enable');
151
	$("#btn-aide").on('click', this.basculerAffichageAide);
94
	$("#btn-aide").on('click', this.basculerAffichageAide);
Line 498... Line 441...
498
				}
441
				}
499
			}
442
			}
500
		});
443
		});
501
	});
444
	});
502
};
445
};
503
//+---------------------------------------------------------------------------------------------------------+
-
 
504
// IDENTITÉ
-
 
Line 505... Line 446...
505
 
446
 
506
WidgetSaisie.prototype.testerLancementRequeteIdentite = function(event) {
447
WidgetSaisie.prototype.testerLancementRequeteIdentite = function(event) {
507
	if (event.which == 13) {
448
	if (event.which == 13) {
508
		this.requeterIdentite();
449
		this.requeterIdentite();
Line 537... Line 478...
537
			//console.log('ERREUR :'+textStatus);
478
			//console.log('ERREUR :'+textStatus);
538
			lthis.surErreurCompletionCourriel();
479
			lthis.surErreurCompletionCourriel();
539
		},
480
		},
540
		complete : function(jqXHR, textStatus) {
481
		complete : function(jqXHR, textStatus) {
541
			//console.log('COMPLETE :'+textStatus);
482
			//console.log('COMPLETE :'+textStatus);
-
 
483
			// @TODO harmoniser class="hidden" VS style="display:none;"
542
			$("#zone-prenom-nom").removeClass("hidden");
484
			$("#zone-prenom-nom").removeClass("hidden").show();
543
			$("#zone-courriel-confirmation").removeClass("hidden");
485
			$("#zone-courriel-confirmation").removeClass("hidden").show();
544
		}
486
		}
545
	});
487
	});
546
};
488
};
Line 547... Line 489...
547
 
489
 
Line 866... Line 808...
866
	// dont on a besoin de n'extraire que le premier élément
808
	// dont on a besoin de n'extraire que le premier élément
867
	// or javascript n'a pas de méthode cross browsers pour extraire les clés
809
	// or javascript n'a pas de méthode cross browsers pour extraire les clés
868
	// TODO: utiliser var.keys quand ça sera plus répandu
810
	// TODO: utiliser var.keys quand ça sera plus répandu
869
	// ou bien utiliser un vrai tableau et pas un objet
811
	// ou bien utiliser un vrai tableau et pas un objet
870
	for (var obsNum in observations) {
812
	for (var obsNum in observations) {
871
		obsATransmettre = {
813
		var obsATransmettre = {
872
			'projet' : TAG_PROJET,
814
			'projet' : TAG_PROJET,
873
			'tag-obs' : TAG_OBS,
815
			'tag-obs' : TAG_OBS,
874
			'tag-img' : TAG_IMG
816
			'tag-img' : TAG_IMG
875
		};
817
		};
876
 
-
 
877
		var utilisateur = new Object();
818
		var utilisateur = {
878
		utilisateur.id_utilisateur = $("#id_utilisateur").val();
819
			id_utilisateur : $("#id_utilisateur").val(),
879
		utilisateur.prenom = $("#prenom").val();
820
			prenom : $("#prenom").val(),
880
		utilisateur.nom = $("#nom").val();
821
			nom : $("#nom").val(),
881
		utilisateur.courriel = $("#courriel").val();
822
			courriel : $("#courriel").val()
-
 
823
		};
882
		obsATransmettre['utilisateur'] = utilisateur;
824
		obsATransmettre['utilisateur'] = utilisateur;
883
		obsATransmettre[obsNum] = observations[obsNum];
825
		obsATransmettre[obsNum] = observations[obsNum];
884
		var idObsNumerique = obsNum.replace('obsId', '');
826
		var idObsNumerique = obsNum.replace('obsId', '');
885
		if(idObsNumerique != "") {
827
		if(idObsNumerique != "") {
886
			this.envoyerObsAuCel(idObsNumerique, obsATransmettre);
828
			this.envoyerObsAuCel(idObsNumerique, obsATransmettre);
Line 912... Line 854...
912
		data : observation,
854
		data : observation,
913
		dataType : "json",
855
		dataType : "json",
914
		beforeSend : function() {
856
		beforeSend : function() {
915
			$("#dialogue-obs-transaction-ko").hide();
857
			$("#dialogue-obs-transaction-ko").hide();
916
			$("#dialogue-obs-transaction-ok").hide();
858
			$("#dialogue-obs-transaction-ok").hide();
917
			$(".alert-txt .msg").remove();
859
			$('.alert-txt').empty();
918
			$(".alert-txt .msg-erreur").remove();
-
 
919
			$(".alert-txt .msg-debug").remove();
-
 
920
			$("#chargement").show();
860
			$("#chargement").show();
921
		},
861
		},
922
		success : function(data, textStatus, jqXHR) {
862
		success : function(data, textStatus, jqXHR) {
923
			// mise à jour du nombre d'obs à transmettre
863
			// mise à jour du nombre d'obs à transmettre
924
			// et suppression de l'obs
864
			// et suppression de l'obs
Line 1123... Line 1063...
1123
		nn = '<span class="nn">[nn'+$("#taxon").data("numNomSel")+']</span>';
1063
		nn = '<span class="nn">[nn'+$("#taxon").data("numNomSel")+']</span>';
1124
	}
1064
	}
1125
	return nn;
1065
	return nn;
1126
};
1066
};
Line 1127... Line -...
1127
 
-
 
1128
//+---------------------------------------------------------------------------------------------------------+
-
 
1129
// AUTO-COMPLÉTION Noms Scientifiques
-
 
1130
 
1067
 
1131
WidgetSaisie.prototype.ajouterAutocompletionNoms = function() {
1068
WidgetSaisie.prototype.ajouterAutocompletionNoms = function() {
1132
	var lthis = this;
1069
	var lthis = this;
1133
	$('#taxon').autocomplete({
1070
	$('#taxon').autocomplete({
1134
		source: function(requete, add){
1071
		source: function(requete, add){
Line 1195... Line 1132...
1195
	}
1132
	}
Line 1196... Line 1133...
1196
 
1133
 
1197
	return suggestions;
1134
	return suggestions;
Line -... Line 1135...
-
 
1135
};
-
 
1136
 
-
 
1137
// lib hors objet --
-
 
1138
 
-
 
1139
/**
-
 
1140
* Stope l'évènement courant quand on clique sur un lien.
-
 
1141
* Utile pour Chrome, Safari...
-
 
1142
*/
-
 
1143
function arreter(evenement) {
-
 
1144
	if (evenement.stopPropagation) {
-
 
1145
		evenement.stopPropagation();
-
 
1146
	}
-
 
1147
	if (evenement.preventDefault) {
-
 
1148
		evenement.preventDefault();
-
 
1149
	}
-
 
1150
	return false;
-
 
1151
}
-
 
1152
 
-
 
1153
/**
-
 
1154
 * Extrait les données de désinsectisation d'une requête AJAX de jQuery
-
 
1155
 * @param jqXHR
-
 
1156
 * @returns {String}
-
 
1157
 */
-
 
1158
function extraireEnteteDebug(jqXHR) {
-
 
1159
	var msgDebug = '';
-
 
1160
	if (jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
-
 
1161
		var debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
-
 
1162
		if (debugInfos != null) {
-
 
1163
			$.each(debugInfos, function (cle, valeur) {
-
 
1164
				msgDebug += valeur + "\n";
-
 
1165
			});
-
 
1166
		}
-
 
1167
	}
-
 
1168
	return msgDebug;
-
 
1169
}
-
 
1170
 
-
 
1171
function afficherPanneau(selecteur) {
-
 
1172
	$(selecteur).fadeIn("slow").delay(DUREE_MESSAGE).fadeOut("slow");
1198
};
1173
}
1199
 
1174
 
1200
/*
1175
/*
1201
 * jQuery UI Autocomplete HTML Extension
1176
 * jQuery UI Autocomplete HTML Extension
1202
 *
1177
 *