Rev 1324 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/**-------------------------- Objets globaux -----------------------------------*//** 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 AUTOCOMPLETION_ELEMENTS_NBRE : indique le nombre d'éléments à afficher dans la liste d'autocomplétion.** var URL_SERVICE_AUTOCOMPLETION_NOM_SCI : 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 URL_SERVICE_AUTOCOMPLETION_NOM_VERNA : 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 VALEUR_DEFAUT_NOM_SCI : Contient la valeur par défaut affichée dans le formulaire en mode sci* Exemple: Rechercher un nom scientifique** var VALEUR_DEFAUT_NOM_VERNA : Contient la valeur par défaut affichée dans le formulaire en mode verna* Exemple: Recherche un nom commun** var URL_BASE_POPUP : url de base pour les popup contenant du code un peu complexe*/var champs_ts = ["#au","#and","#anf","#nom","#bib"];var autocompletionFicheOuverte = false;var elementAutocompletionSelectionne = null;var nomRechercheEnCours = null;$(document).ready(function() {initialiserMoteur();});function initialiserMoteur() {ajouterAutocompletion();gererAffichageValeursParDefaut();gererAccesFicheFlecheDroite();gererClicIllustrationsResultats();gererAccesFicheBouton();}/**------------------- Fonctions de gestion de l'autocompletion ---------------------------------*/function ajouterAutocompletion(){ajouterAutocompletionNoms();$('.champ_autocomplete').each(function(index) {ajouterAutocompletionAvancee($(this));});}function ajouterAutocompletionAvancee(champs){champs.autocomplete({source: function(requete, add){// la variable de requête doit être vidée car sinon le parametre "term" est ajoutérequete = "";var id = champs.attr('id');var url = encodeURI(getUrlAutocompletionAvancee(id));$.getJSON(url, requete, function(data) {var suggestions = [];suggestions = traiterRetourAvance(data,champs);add(suggestions);});},html: true});}function ajouterAutocompletionNoms() {$('#nom').autocomplete({source: function(requete, add){// la variable de requête doit être vidée car sinon le parametre "term" est ajoutérequete = "";var url = encodeURI(getUrlAppelCompletion());$.getJSON(url, requete, function(data) {var suggestions = [];if (nomVernaculaireEstDemande()) {suggestions = traiterRetourNomsVerna(data);} else if (nomSciEstDemande()) {suggestions = traiterRetourNomsSci(data);}add(suggestions);});},search: function(event, ui) {nomRechercheEnCours = 'nom_sci';},focus: function(event, ui) {elementAutocompletionSelectionne = ui.item;},open: function(event, ui) {autocompletionFicheOuverte = true;var parent = $('.autocompletion_nom.ui-menu-item').parent();parent.width(parent.width() + 10);},close: function(event, ui) {autocompletionFicheFermee = false;nomRechercheEnCours = null;},html: true});$("#nom").bind("autocompleteselect", function(event, ui) {if (ui.item.retenu == true) {$("#nom").addClass('ns-retenu');} else {$("#nom").removeClass('ns-retenu');}});}// gére l'acces direct à une fiche par l'appui sur droite// dans la liste d'autocompletion des noms scientifiquesfunction gererAccesFicheFlecheDroite() {$(document).keypress(function(event) {// flèche droiteif(event.keyCode == 39) {if(autocompletionFicheOuverte && elementAutocompletionSelectionne != null && nomSciEstDemande()) {$('#nom').val(elementAutocompletionSelectionne.value);if(elementAutocompletionSelectionne.nn != undefined && elementAutocompletionSelectionne.nn != null) {var url_fiche_taxon = URL_BASE_FICHE_TAXON.replace('{num_taxon}',elementAutocompletionSelectionne.nn);window.location.href = url_fiche_taxon;}$('#nom').autocomplete( "disable" );//TODO : ajout d'un message de chargement ?}}if(event.keyCode == 13) {if(autocompletionFicheOuverte && elementAutocompletionSelectionne == null && $('#nom').is(":focus")) {$('#eflore_nomenclature_submit').click();}}});}function gererAccesFicheBouton() {$('#eflore_nomenclature_fiche').click(function(event) {if(elementAutocompletionSelectionne != null && nomSciEstDemande()) {$('#nom').val(elementAutocompletionSelectionne.value);if(elementAutocompletionSelectionne.nn != undefined && elementAutocompletionSelectionne.nn != null) {var url_fiche_taxon = URL_BASE_FICHE_TAXON.replace('{num_taxon}',elementAutocompletionSelectionne.nn);window.location.href = url_fiche_taxon;}event.preventDefault();}});}function traiterRetourNomsSci(data) {var suggestions = [];if (data.resultat != undefined) {$.each(data.resultat, function(i, val) {val.nn = i;var nom = {label : '', value : '', retenu : false};if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {nom.label = "...";nom.value = $('#nom').val();suggestions.push(nom);return false;} else {nom.label = val.nom_sci_complet;nom.value = val.nom_sci;nom.nn = val.nn;if(val.retenu != "absent") {nom.retenu = (val.retenu == 'true') ? true : false;suggestions.push(nom);}}});}return suggestions;}function traiterRetourAvance(data, champs) {var suggestions = [];if (jQuery.type(data) == "array") {$.each(data[1], function(i, val) {var ch = {label : '', value : ''};if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {ch.label = "...";ch.value = champs.val();suggestions.push(ch);return false;} else {ch.label = val;ch.value = val;suggestions.push(ch);}});}return suggestions;}function traiterRetourNomsVerna(data) {var suggestions = [];if (jQuery.type(data) == "array") {$.each(data[1], function(i, val){var nom = {label : '', value : ''};if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {nom.label = "...";nom.value = $('#nom').val();suggestions.push(nom);return false;} else {nom.label = val;nom.value = val;suggestions.push(val);}});}return suggestions;}/**------------ Fonctions de gestion des urls d'autocompletion et des fiches ------------------*/function getUrlAutocompletionAvancee(parametre) {var valeur = getValeurMasque(parametre);var ns_str = getValeurNsStructure(parametre);var url = URL_SERVICE_AUTOCOMPLETION_NOM_SCI+"?recherche=etendue&"+"navigation.limite="+AUTOCOMPLETION_ELEMENTS_NBRE +'&masque.'+parametre+'='+valeur+'&retour.format=oss&distinct=1&ns.structure='+ns_str;return url;}function getValeurMasque(parametre) {var valeur = $('#'+parametre).val();if (parametre == 'au' ){valeur = valeur +',(' + valeur + ')';} else if (parametre == 'bib' ){valeur = valeur +', %; ' + valeur ;}return valeur;}function getValeurNsStructure(parametre) {var ns = '';if (parametre == 'au' || parametre == 'bib'){ns = parametre +'_ss';} else {ns = parametre;}return ns;}function getUrlAppelCompletion() {var url = '';var mots = $('#nom').val();if (nomSciEstDemande()) {url = getUrlAutocompletionNomsSci(mots);} else if (nomVernaculaireEstDemande()) {mots = mots.replace(' ',' ');mots = mots.replace(' ','_');url = getUrlAutocompletionNomsVerna(mots);}return url;}function getUrlAutocompletionNomsSci(requete) {var url = getUrlAutocompletion(URL_SERVICE_AUTOCOMPLETION_NOM_SCI, requete, 'min')+"&ns.structure=au,an"+// tri "à la mode du CeL""&retour.tri=alpharet";return url;}function getUrlAutocompletionNomsVerna(requete) {var url = getUrlAutocompletion(URL_SERVICE_AUTOCOMPLETION_NOM_VERNA, requete, 'oss');return url;}function getUrlAutocompletion(baseUrl, requete, format) {var url = baseUrl+"?"+"masque="+requete+"&"+"recherche=etendue&"+"retour.format="+format+"&"+"navigation.limite="+AUTOCOMPLETION_ELEMENTS_NBRE;return url;}/**------------ Fonctions de détection de l'état du formulaire ------------------*/function nomSciEstDemande() {var boutonRadioNomSci = $('#type_nom_scientifique');return (($('#type_nom_vernaculaire').length <= 0) || (boutonRadioNomSci != null && boutonRadioNomSci.attr("checked") != "undefined" && boutonRadioNomSci.attr("checked") == "checked"));}function nomVernaculaireEstDemande() {var boutonRadioNomSci = $('#type_nom_vernaculaire');return (boutonRadioNomSci.length > 0 && boutonRadioNomSci.attr("checked") != "undefined" && boutonRadioNomSci.attr("checked") == "checked");}/**------------ Fonctions de gestion de l'affichage des valeurs par defaut ----------------------*/function gererAffichageValeursParDefaut() {$('input[name="type_nom"]').click(function() {changerPlaceHolderNom();});changerPlaceHolderNom();$('input').click(function() {$(this).attr('placeholder', '');});}function changerPlaceHolderNom() {if(nomSciEstDemande()) {$('#nom').attr('placeholder',VALEUR_DEFAUT_NOM_SCI);} else {$('#nom').attr('placeholder',VALEUR_DEFAUT_NOM_VERNA);}}/**------------ Fonctions de gestion du zoom sur les images affichées dans les résultats de recherche ----------------------*/function gererClicIllustrationsResultats() {$('.illustration_resultat_cel').click(function() {var url = $(this).attr('src');var titre = trouverNomTaxon($(this));var url = URL_BASE_POPUP+"?module=popup-galerie&action=fiche&num_nom="+$(this).attr('data-num-nom')+"&titre="+titre+"&referentiel="+REFERENTIEL;window.open(url, '', 'directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no, width='+(700)+', height='+(650));});$('.illustration_resultat_choro').click(function() {var url = $(this).attr('src').replace('108x101','432x404');var titre = 'Chorologie du taxon '+trouverNomTaxon($(this));ouvrirFenetreIllustrationResultat(url, titre, 432, 404);});$('.illustration_resultat_coste').click(function() {var url = $(this).attr('src');var titre = 'Illustration de Coste du taxon '+trouverNomTaxon($(this));ouvrirFenetreIllustrationResultat(url, titre, 400, 400);});}function trouverNomTaxon(objet) {nom = "";if(nomVernaculaireEstDemande()) {nom = objet.parent().parent().find('a.lien_fiche_eflore').text();} else {nom = objet.parent().find('.nom-sci a.lien_fiche_eflore').text();}return nom;}function ouvrirFenetreIllustrationResultat(url, titre, hauteur, largeur) {var fenetre = window.open('_blank', '','directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no, width='+(largeur+17)+', height='+(hauteur+17));var tmp = fenetre.document;tmp.write('<html><head><title>'+titre+'</title>');tmp.write('</head><body>');tmp.write('<p style="height='+hauteur+'px;text-align:center;line-height='+hauteur+'px;"><img id="image_agrandie" height="'+hauteur+'" width="'+largeur+'" style="vertical-align:middle;" src="'+url+'" /></p>');tmp.write('</body></html>');tmp.close();}/** 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 (item.retenu == true) {item.label = "<strong>"+item.label+"</strong>";}var classe = (nomRechercheEnCours == 'nom_sci' && nomSciEstDemande()) ? 'class="autocompletion_nom"' : '';return $("<li "+classe+"></li>").data("item.autocomplete", item).append( $("<a></a>")[ this.options.html ? "html" : "text" ](item.label)).appendTo(ul);}});})( jQuery );