Subversion Repositories eFlore/Applications.eflore-consultation

Rev

Rev 200 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 200 Rev 278
1
/**-------------------------- Objets globaux -----------------------------------*/
1
/**-------------------------- Objets globaux -----------------------------------*/
2
 
2
 
3
/*
3
/*
4
 * Liste des noms scientifiques reçus pour la mise en gras des noms valide
4
 * Liste des noms scientifiques reçus pour la mise en gras des noms valide
5
 */
5
 */
6
var listeNomsScientifiques = new Object();
6
var listeNomsScientifiques = new Object();
7
/*
7
/*
8
 * Les variables suivantes sont ajoutée automatiquement dans le squelette du moteur de
8
 * Les variables suivantes sont ajoutée automatiquement dans le squelette du moteur de
9
 * recherche par php, elles sont commentées ici pour qu'elles n'aient pas l'air 
9
 * recherche par php, elles sont commentées ici pour qu'elles n'aient pas l'air 
10
 * de sortir de la cuisse de Jupiter
10
 * de sortir de la cuisse de Jupiter
11
 * 
11
 * 
12
 * var urlServiceAutocompletionNomsSci : url de base du service de complétion de noms scientifiques
12
 * var urlServiceAutocompletionNomsSci : url de base du service de complétion de noms scientifiques
13
 * pour le projet en cours de consultation. 
13
 * pour le projet en cours de consultation. 
14
 * Exemple : http://localhost/service:eflore:0.1/bdtfx/noms?recherche=etendue&retour.format=min&masque=Ace%mo
14
 * Exemple : http://localhost/service:eflore:0.1/bdtfx/noms?recherche=etendue&retour.format=min&masque=Ace%mo
15
 * 
15
 * 
16
 * var urlServiceAutocompletionNomsVerna : url de base du service de complétion de noms vernaculaires
16
 * var urlServiceAutocompletionNomsVerna : url de base du service de complétion de noms vernaculaires
17
 * pour le projet en cours de consultation. 
17
 * pour le projet en cours de consultation. 
18
 * Exemple : http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires?recherche=etendue&retour.format=oss&masque=aca&masque.lg=fra 
18
 * Exemple : http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires?recherche=etendue&retour.format=oss&masque=aca&masque.lg=fra 
19
 * 
19
 * 
20
 * var valeurDefautNomSci : Contient la valeur par défaut affichée dans le formulaire en mode sci
20
 * var valeurDefautNomSci : Contient la valeur par défaut affichée dans le formulaire en mode sci
21
 * Exemple: Rechercher un nom scientifique
21
 * Exemple: Rechercher un nom scientifique
22
 * var valeurDefautNomVerna : Contient la valeur par défaut affichée dans le formulaire en mode verna
22
 * var valeurDefautNomVerna : Contient la valeur par défaut affichée dans le formulaire en mode verna
23
 * Exemple: Recherche un nom commun
23
 * Exemple: Recherche un nom commun
24
 */
24
 */
25
 
25
 
26
 
26
 
27
/**------------ Fonctions de détection de l'état du formulaire ------------------*/
27
/**------------ Fonctions de détection de l'état du formulaire ------------------*/
28
function nomSciEstDemande()  {
28
function nomSciEstDemande()  {
29
	var boutonRadioNomSci = $('#type_nom_scientifique');
29
	var boutonRadioNomSci = $('#type_nom_scientifique');
30
	return (boutonRadioNomSci.attr("checked") != "undefined" && boutonRadioNomSci.attr("checked") == "checked");
30
	return (boutonRadioNomSci.attr("checked") != "undefined" && boutonRadioNomSci.attr("checked") == "checked");
31
}
31
}
32
 
32
 
33
function nomVernaculaireEstDemande()  {
33
function nomVernaculaireEstDemande()  {
34
	var boutonRadioNomSci = $('#type_nom_vernaculaire');
34
	var boutonRadioNomSci = $('#type_nom_vernaculaire');
35
	return (boutonRadioNomSci.attr("checked") != "undefined" && boutonRadioNomSci.attr("checked") == "checked");
35
	return (boutonRadioNomSci.attr("checked") != "undefined" && boutonRadioNomSci.attr("checked") == "checked");
36
}
36
}
37
 
37
 
38
/**------------ Fonctions de gestion des urls d'autocompletion et des fiches ------------------*/
38
/**------------ Fonctions de gestion des urls d'autocompletion et des fiches ------------------*/
39
function getUrlAutocompletion(baseUrl, requete, format) {
39
function getUrlAutocompletion(baseUrl, requete, format) {
40
	return baseUrl+"?recherche=etendue&retour.format="+format+"&navigation.limite=25&masque="+requete;
40
	return baseUrl+"?recherche=etendue&retour.format="+format+"&navigation.limite=50&masque="+requete;
41
}
41
}
42
 
42
 
43
function getUrlAutocompletionNomsVerna(requete) {
43
function getUrlAutocompletionNomsVerna(requete) {
44
	return getUrlAutocompletion(urlServiceAutocompletionNomsVerna, requete, 'oss')+"&masque.lg=fra";
44
	return getUrlAutocompletion(urlServiceAutocompletionNomsVerna, requete, 'oss')+"&masque.lg=fra";
45
}
45
}
46
 
46
 
47
function getUrlAutocompletionNomsSci(requete) {
47
function getUrlAutocompletionNomsSci(requete) {
48
	return getUrlAutocompletion(urlServiceAutocompletionNomsSci, requete, 'min');
48
	return getUrlAutocompletion(urlServiceAutocompletionNomsSci, requete, 'min');
49
}
49
}
50
 
50
 
51
function getUrlAppelCompletion(requete) {
51
function getUrlAppelCompletion(requete) {
52
	var url = getUrlAutocompletionNomsSci(requete);
52
	var url = getUrlAutocompletionNomsSci(requete);
53
	if(nomVernaculaireEstDemande()) {
53
	if(nomVernaculaireEstDemande()) {
54
		requete = requete.replace('  ',' ');
54
		requete = requete.replace('  ',' ');
55
		requete = requete.replace(' ','_');
55
		requete = requete.replace(' ','_');
56
		var url = getUrlAutocompletionNomsVerna(requete);
56
		var url = getUrlAutocompletionNomsVerna(requete);
57
	}
57
	}
58
	
58
	
59
	return url;
59
	return url;
60
}
60
}
61
 
61
 
62
 
62
 
63
 
63
 
64
/**------------------- Fonctions de gestion de l'autocompletion ---------------------------------*/
64
/**------------------- Fonctions de gestion de l'autocompletion ---------------------------------*/
65
function traiterRetourNomsSci(data) {
65
function traiterRetourNomsSci(data) {
66
	
66
	
67
	var suggestions = [];  
67
	var suggestions = [];  
68
	if(data.resultat != undefined) {
68
	if(data.resultat != undefined) {
69
		$.each(data.resultat, function(i, val) {
69
		$.each(data.resultat, function(i, val) {
70
			val.num_tax = i;
70
			val.num_tax = i;
71
			listeNomsScientifiques[val.nom_sci] = val;
71
			listeNomsScientifiques[val.nom_sci] = val;
72
			suggestions.push(val.nom_sci);
72
			suggestions.push(val.nom_sci);
73
		});
73
		});
74
	}
74
	}
75
	
75
	
76
	if(suggestions.length >= 25) {
76
	if(suggestions.length >= 50) {
77
		suggestions.push("...");
77
		suggestions.push("...");
78
	}
78
	}
79
	
79
	
80
	return suggestions;
80
	return suggestions;
81
}
81
}
82
 
82
 
83
function traiterRetourNomsVerna(data) {
83
function traiterRetourNomsVerna(data) {
84
	
84
	
85
	var suggestions = [];
85
	var suggestions = [];
86
	if(jQuery.type(data) == "array") {
86
	if(jQuery.type(data) == "array") {
87
		$.each(data[1], function(i, val){
87
		$.each(data[1], function(i, val){
88
			suggestions.push(val);
88
			suggestions.push(val);
89
		});
89
		});
90
	}
90
	}
91
	
91
	
92
	if(suggestions.length >= 25) {
92
	if(suggestions.length >= 50) {
93
		suggestions.push("...");
93
		suggestions.push("...");
94
	}
94
	}
95
	
95
	
96
	return suggestions;
96
	return suggestions;
97
}
97
}
98
 
98
 
99
function ajouterAutocompletionNoms() {
99
function ajouterAutocompletionNoms() {
100
	$('#nom').autocomplete({
100
	$('#nom').autocomplete({
101
		source: function(req, add){  
101
		source: function(req, add){  
102
			// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
102
			// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
103
			req = "";
103
			req = "";
104
			$.getJSON(getUrlAppelCompletion($('#nom').val()), req, function(data) {  
104
			$.getJSON(getUrlAppelCompletion($('#nom').val()), req, function(data) {  
105
 
105
 
106
				if(nomVernaculaireEstDemande()) {
106
				if(nomVernaculaireEstDemande()) {
107
					suggestions = traiterRetourNomsVerna(data);
107
					suggestions = traiterRetourNomsVerna(data);
108
				} else {
108
				} else {
109
					suggestions = traiterRetourNomsSci(data);
109
					suggestions = traiterRetourNomsSci(data);
110
				}
110
				}
111
 
111
 
112
				add(suggestions);  
112
				add(suggestions);  
113
            });
113
            });
114
        },
114
        },
115
        html: true
115
        html: true
116
	});
116
	});
117
}
117
}
118
 
118
 
119
/**------------ Fonctions de gestion de l'affichage des valeurs par defaut ----------------------*/
119
/**------------ Fonctions de gestion de l'affichage des valeurs par defaut ----------------------*/
120
function ajouterActionClicSurTexteRecherche() {
120
function ajouterActionClicSurTexteRecherche() {
121
	$('#nom').click(function() {
121
	$('#nom').click(function() {
122
		if(formulaireAfficheValeurParDefaut()) {
122
		if(formulaireAfficheValeurParDefaut()) {
123
			$('#nom').val('');
123
			$('#nom').val('');
124
		}
124
		}
125
		
125
		
126
		if($('#nom').hasClass('valeur-defaut-recherche')) {
126
		if($('#nom').hasClass('valeur-defaut-recherche')) {
127
			$('#nom').removeClass('valeur-defaut-recherche');
127
			$('#nom').removeClass('valeur-defaut-recherche');
128
		}
128
		}
129
	});
129
	});
130
}
130
}
131
 
131
 
132
function formulaireAfficheValeurParDefaut() {
132
function formulaireAfficheValeurParDefaut() {
133
	valeur_form = $('#nom').val().trim();
133
	valeur_form = $('#nom').val();
-
 
134
	valeur_form = $.trim(valeur_form);
134
	return valeur_form == '' || valeur_form == valeurDefautNomSci || valeur_form == valeurDefautNomVerna;
135
	return valeur_form == '' || valeur_form == valeurDefautNomSci || valeur_form == valeurDefautNomVerna;
135
}
136
}
136
 
137
 
137
function gererAffichageValeursParDefaut() {
138
function gererAffichageValeursParDefaut() {
138
	$('input[name="type_nom"]').click(function() {
139
	$('input[name="type_nom"]').click(function() {
139
		afficherValeurParDefaut();
140
		afficherValeurParDefaut();
140
	});
141
	});
141
	
142
	
142
	$('#nom').focus(function() {
143
	$('#nom').focus(function() {
143
		$('#nom').removeClass('valeur-defaut-recherche');
144
		$('#nom').removeClass('valeur-defaut-recherche');
144
		if(formulaireAfficheValeurParDefaut()) {
145
		if(formulaireAfficheValeurParDefaut()) {
145
			$('#nom').val('');
146
			$('#nom').val('');
146
		} else {
147
		} else {
147
			$('#nom').select();
148
			$('#nom').select();
148
		}
149
		}
149
	});
150
	});
150
}
151
}
151
 
152
 
152
function afficherValeurParDefaut() {
153
function afficherValeurParDefaut() {
153
	if($('#nom') != undefined && $('#nom').val() != undefined) { 
154
	if($('#nom') != undefined && $('#nom').val() != undefined) { 
154
		valeur_form = $('#nom').val().trim();
155
		valeur_form = $('#nom').val();
-
 
156
		valeur_form = $.trim(valeur_form);
155
		if(formulaireAfficheValeurParDefaut()) {
157
		if(formulaireAfficheValeurParDefaut()) {
156
			if(nomSciEstDemande()) {
158
			if(nomSciEstDemande()) {
157
	    		$('#nom').val(valeurDefautNomSci);
159
	    		$('#nom').val(valeurDefautNomSci);
158
	    	} else {
160
	    	} else {
159
	    		$('#nom').val(valeurDefautNomVerna);
161
	    		$('#nom').val(valeurDefautNomVerna);
160
	    	}
162
	    	}
161
			$('#nom').addClass('valeur-defaut-recherche');
163
			$('#nom').addClass('valeur-defaut-recherche');
162
		}
164
		}
163
	}
165
	}
164
}
166
}
165
 
167
 
166
$(document).ready(function() {
168
$(document).ready(function() {
167
	ajouterAutocompletionNoms();
169
	ajouterAutocompletionNoms();
168
	ajouterActionClicSurTexteRecherche();
170
	ajouterActionClicSurTexteRecherche();
169
	gererAffichageValeursParDefaut();
171
	gererAffichageValeursParDefaut();
170
	afficherValeurParDefaut();
172
	afficherValeurParDefaut();
171
});
173
});
172
 
174
 
173
/*
175
/*
174
 * jQuery UI Autocomplete HTML Extension
176
 * jQuery UI Autocomplete HTML Extension
175
 *
177
 *
176
 * Copyright 2010, Scott González (http://scottgonzalez.com)
178
 * Copyright 2010, Scott González (http://scottgonzalez.com)
177
 * Dual licensed under the MIT or GPL Version 2 licenses.
179
 * Dual licensed under the MIT or GPL Version 2 licenses.
178
 *
180
 *
179
 * http://github.com/scottgonzalez/jquery-ui-extensions
181
 * http://github.com/scottgonzalez/jquery-ui-extensions
180
 * 
182
 * 
181
 * Adaptation par Aurélien Peronnet pour la mise en gras des noms de taxons valides
183
 * Adaptation par Aurélien Peronnet pour la mise en gras des noms de taxons valides
182
 */
184
 */
183
(function( $ ) {
185
(function( $ ) {
184
 
186
 
185
var proto = $.ui.autocomplete.prototype,
187
var proto = $.ui.autocomplete.prototype,
186
	initSource = proto._initSource;
188
	initSource = proto._initSource;
187
 
189
 
188
function filter( array, term ) {
190
function filter( array, term ) {
189
	var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
191
	var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
190
	return $.grep( array, function(value) {
192
	return $.grep( array, function(value) {
191
		return matcher.test( $( "<div>" ).html( value.label || value.value || value ).text() );
193
		return matcher.test( $( "<div>" ).html( value.label || value.value || value ).text() );
192
	});
194
	});
193
}
195
}
194
 
196
 
195
$.extend( proto, {
197
$.extend( proto, {
196
	_initSource: function() {
198
	_initSource: function() {
197
		if ( this.options.html && $.isArray(this.options.source) ) {
199
		if ( this.options.html && $.isArray(this.options.source) ) {
198
			this.source = function( request, response ) {
200
			this.source = function( request, response ) {
199
				response( filter( this.options.source, request.term ) );
201
				response( filter( this.options.source, request.term ) );
200
			};
202
			};
201
		} else {
203
		} else {
202
			initSource.call( this );
204
			initSource.call( this );
203
		}
205
		}
204
	},
206
	},
205
	_renderItem: function( ul, item) {
207
	_renderItem: function( ul, item) {
206
		if(listeNomsScientifiques[item.label] != undefined && listeNomsScientifiques[item.label].retenu == "true") {
208
		if(listeNomsScientifiques[item.label] != undefined && listeNomsScientifiques[item.label].retenu == "true") {
207
			item.label = "<b>"+item.label+"</b>";
209
			item.label = "<b>"+item.label+"</b>";
208
		}
210
		}
209
		
211
		
210
		if(item.label == '...') {
212
		if(item.label == '...') {
211
			item.label = "<b>"+item.label+"</b>";
213
			item.label = "<b>"+item.label+"</b>";
212
		}
214
		}
213
		
215
		
214
		return $( "<li></li>" )
216
		return $( "<li></li>" )
215
			.data( "item.autocomplete", item )
217
			.data( "item.autocomplete", item )
216
			.append( $( "<a></a>" )[ this.options.html ? "html" : "text" ]( item.label ) )
218
			.append( $( "<a></a>" )[ this.options.html ? "html" : "text" ]( item.label ) )
217
			.appendTo( ul );
219
			.appendTo( ul );
218
	}
220
	}
219
});
221
});
220
 
222
 
221
})( jQuery );
223
})( jQuery );