Rev 200 | Blame | Last modification | View Log | RSS feed
/**-------------------------- Objets globaux -----------------------------------*//** Liste des noms scientifiques reçus pour la mise en gras des noms valide*/var listeNomsScientifiques = new Object();/** Les variables suivantes sont ajoutée automatiquement dans le squelette du moteur de* recherche par php, elles sont commentées ici pour qu'elles n'aient pas l'air* de sortir de la cuisse de Jupiter** var urlServiceAutocompletionNomsSci : url de base du service de complétion de noms scientifiques* pour le projet en cours de consultation.* Exemple : http://localhost/service:eflore:0.1/bdtfx/noms?recherche=etendue&retour.format=min&masque=Ace%mo** var urlServiceAutocompletionNomsVerna : url de base du service de complétion de noms vernaculaires* pour le projet en cours de consultation.* Exemple : http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires?recherche=etendue&retour.format=oss&masque=aca&masque.lg=fra** var valeurDefautNomSci : Contient la valeur par défaut affichée dans le formulaire en mode sci* Exemple: Rechercher un nom scientifique* var valeurDefautNomVerna : Contient la valeur par défaut affichée dans le formulaire en mode verna* Exemple: Recherche un nom commun*//**------------ Fonctions de détection de l'état du formulaire ------------------*/function nomSciEstDemande() {var boutonRadioNomSci = $('#type_nom_scientifique');return (boutonRadioNomSci.attr("checked") != "undefined" && boutonRadioNomSci.attr("checked") == "checked");}function nomVernaculaireEstDemande() {var boutonRadioNomSci = $('#type_nom_vernaculaire');return (boutonRadioNomSci.attr("checked") != "undefined" && boutonRadioNomSci.attr("checked") == "checked");}/**------------ Fonctions de gestion des urls d'autocompletion et des fiches ------------------*/function getUrlAutocompletion(baseUrl, requete, format) {return baseUrl+"?recherche=etendue&retour.format="+format+"&navigation.limite=50&masque="+requete;}function getUrlAutocompletionNomsVerna(requete) {return getUrlAutocompletion(urlServiceAutocompletionNomsVerna, requete, 'oss')+"&masque.lg=fra";}function getUrlAutocompletionNomsSci(requete) {return getUrlAutocompletion(urlServiceAutocompletionNomsSci, requete, 'min');}function getUrlAppelCompletion(requete) {var url = getUrlAutocompletionNomsSci(requete);if(nomVernaculaireEstDemande()) {requete = requete.replace(' ',' ');requete = requete.replace(' ','_');var url = getUrlAutocompletionNomsVerna(requete);}return url;}/**------------------- Fonctions de gestion de l'autocompletion ---------------------------------*/function traiterRetourNomsSci(data) {var suggestions = [];if(data.resultat != undefined) {$.each(data.resultat, function(i, val) {val.num_tax = i;listeNomsScientifiques[val.nom_sci] = val;suggestions.push(val.nom_sci);});}if(suggestions.length >= 50) {suggestions.push("...");}return suggestions;}function traiterRetourNomsVerna(data) {var suggestions = [];if(jQuery.type(data) == "array") {$.each(data[1], function(i, val){suggestions.push(val);});}if(suggestions.length >= 50) {suggestions.push("...");}return suggestions;}function ajouterAutocompletionNoms() {$('#nom').autocomplete({source: function(req, add){// la variable de requête doit être vidée car sinon le parametre "term" est ajoutéreq = "";$.getJSON(getUrlAppelCompletion($('#nom').val()), req, function(data) {if(nomVernaculaireEstDemande()) {suggestions = traiterRetourNomsVerna(data);} else {suggestions = traiterRetourNomsSci(data);}add(suggestions);});},html: true});}/**------------ Fonctions de gestion de l'affichage des valeurs par defaut ----------------------*/function ajouterActionClicSurTexteRecherche() {$('#nom').click(function() {if(formulaireAfficheValeurParDefaut()) {$('#nom').val('');}if($('#nom').hasClass('valeur-defaut-recherche')) {$('#nom').removeClass('valeur-defaut-recherche');}});}function formulaireAfficheValeurParDefaut() {valeur_form = $('#nom').val();valeur_form = $.trim(valeur_form);return valeur_form == '' || valeur_form == valeurDefautNomSci || valeur_form == valeurDefautNomVerna;}function gererAffichageValeursParDefaut() {$('input[name="type_nom"]').click(function() {afficherValeurParDefaut();});$('#nom').focus(function() {$('#nom').removeClass('valeur-defaut-recherche');if(formulaireAfficheValeurParDefaut()) {$('#nom').val('');} else {$('#nom').select();}});}function afficherValeurParDefaut() {if($('#nom') != undefined && $('#nom').val() != undefined) {valeur_form = $('#nom').val();valeur_form = $.trim(valeur_form);if(formulaireAfficheValeurParDefaut()) {if(nomSciEstDemande()) {$('#nom').val(valeurDefautNomSci);} else {$('#nom').val(valeurDefautNomVerna);}$('#nom').addClass('valeur-defaut-recherche');}}}$(document).ready(function() {ajouterAutocompletionNoms();ajouterActionClicSurTexteRecherche();gererAffichageValeursParDefaut();afficherValeurParDefaut();});/** jQuery UI Autocomplete HTML Extension** Copyright 2010, Scott González (http://scottgonzalez.com)* Dual licensed under the MIT or GPL Version 2 licenses.** http://github.com/scottgonzalez/jquery-ui-extensions** Adaptation par Aurélien Peronnet pour la mise en gras des noms de taxons valides*/(function( $ ) {var proto = $.ui.autocomplete.prototype,initSource = proto._initSource;function filter( array, term ) {var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );return $.grep( array, function(value) {return matcher.test( $( "<div>" ).html( value.label || value.value || value ).text() );});}$.extend( proto, {_initSource: function() {if ( this.options.html && $.isArray(this.options.source) ) {this.source = function( request, response ) {response( filter( this.options.source, request.term ) );};} else {initSource.call( this );}},_renderItem: function( ul, item) {if(listeNomsScientifiques[item.label] != undefined && listeNomsScientifiques[item.label].retenu == "true") {item.label = "<b>"+item.label+"</b>";}if(item.label == '...') {item.label = "<b>"+item.label+"</b>";}return $( "<li></li>" ).data( "item.autocomplete", item ).append( $( "<a></a>" )[ this.options.html ? "html" : "text" ]( item.label ) ).appendTo( ul );}});})( jQuery );