Subversion Repositories eFlore/Applications.cel

Rev

Rev 3133 | Blame | Compare with Previous | Last modification | View Log | RSS feed

//+---------------------------------------------------------------------------------------------------------+
// AUTO-COMPLÉTION Noms Scientifiques
function ajouterAutocompletionNomSci() {
        $('#taxon').autocomplete({
                source: function(requete, add){  
                        // la variable de requête doit être vidée car sinon le parametre "term" est ajouté
                        requete = "";
                        var url = getUrlAutocompletionNomSci()+"/"+formaterRequeteNomSci($('#taxon').val());
                        $.getJSON(url, requete, function(data) {  
                                var suggestions = traiterRetourNomSci(data);
                                add(suggestions);  
            });
        },
        html: true
        });
}

function formaterRequeteNomSci(nomSci) {
        var nomSciCoupe = nomSci.split(' ');
        if(nomSciCoupe.length >= 2) {
                nomSci = nomSciCoupe[0]+'/'+nomSciCoupe[1];
        } else {
                nomSci = nomSciCoupe[0]+'/*';
        }
        return nomSci;
}

function traiterRetourNomSci(data) {
        var suggestions = [];  
        if (data != undefined) {
                $.each(data, function(i, val) {
                        var nom = {label : '', value : ''};
                        if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {
                                nom.label = "...";
                                nom.value = val[0];
                                suggestions.push(nom);
                                return false;
                        } else {
                                nom.label = val[0];
                                nom.value = val[0];
                                suggestions.push(nom);
                        }                       
                });
        }
                
        return suggestions;
}

function ajouterAutocompletionCommunes() {
        $('#commune').autocomplete({
                source: function(requete, add){  
                        // la variable de requête doit être vidée car sinon le parametre "term" est ajouté
                        requete = "";
                        var url = getUrlAutocompletionCommunes()+"/"+$('#commune').val();
                        $.getJSON(url, requete, function(data) {  
                                var suggestions = traiterRetourCommune(data);
                                add(suggestions);  
            });
        },
        html: true
        });
        
        $( "#commune" ).bind("autocompleteselect", function(event, ui) {
                console.log(ui.item);
                $("#commune").data(ui.item.value);
                $("#dept").data(ui.item.code);
                $("#dept").val(ui.item.code);
        });
}

function getUrlAutocompletionNomSci() {
        var url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL+"/"+REFERENTIEL_NOMS_SCI;
        return url;
}

function separerCommuneDepartement(chaine) {
        var deptCommune = chaine.split(' (');
        if(deptCommune[1] != null && deptCommune[1] != undefined) {
                deptCommune[1] = deptCommune[1].replace(')', '');
        } else {
                deptCommune[1] = '';
        }
        return deptCommune;
}

function traiterRetourCommune(data) {
        var suggestions = [];  
        if (data != undefined) {
                $.each(data, function(i, val) {
                        var nom = {label : '', value : ''};
                        if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {
                                nom.label = "...";
                                nom.value = val[0];
                                suggestions.push(nom);
                                return false;
                        } else {
                                nom.label = val[0];
                                var deptCommune = separerCommuneDepartement(val[0]);
                                nom.value = deptCommune[0];
                                nom.code = deptCommune[1];
                                suggestions.push(nom);
                        }                       
                });
        }
                
        return suggestions;
}

function getUrlAutocompletionCommunes() {
        var url = SERVICE_AUTOCOMPLETION_COMMUNE_URL;
        return url;
}

function getUrlExport() {
        var url = SERVICE_EXPORT_URL;
        return url;
}

function configurerValidationFormulaire() {
        $("#form-export-obs").validate({
                rules: {
                        utilisateur: {
                                email: true
                        },
                        date_debut: {
                                dateCel: true,
                                date_valid : $('#date_debut')
                        },
                        date_fin: {
                                dateCel: true,
                                date_valid : $('#date_fin')
                        },
                        dept: {
                                dept_valid : $('#dept')
                        },
                        num_taxon: {
                                number: true
                        }
                },
                messages: {
                        email: "L'email de l'utilisateur doit être valide",
                        num_taxon: "Le numéro taxonomique doit être un entier"
                },
                submitHandler: function(form) {
                        if($(form).valid()) {
                                validerExport();
                        }
                        return false;
                }
        });

        $.validator.addMethod(
                "dept_valid",
                function (valeur) {
                        return valeur == "" || valeur.match(/^\d+(?:,\d+)*$/);
                },
                "Le ou les département(s) doivent être sur deux chiffres, séparés par des virgules"
        );
        $.validator.addMethod(
                "date_valid",
                function (element) {
                        var valid = true;
                        var dateDebut = $('#date_debut').datepicker("getDate");
                        var dateFin = $('#date_fin').datepicker("getDate");
                        if ($('#date_debut').val() != "" && $('#date_fin').val() != "") {
                                if (dateDebut != null && dateFin != null) {
                                        valid = dateDebut <= dateFin;
                                } else {
                                        valid = dateDebut == null || dateFin == null;
                                }
                        }
                        return valid;
                },
                "Les dates de début et de fin doivent être au format jj/mm/aaaa et la première inférieur à la dernière, si les deux sont présentes"
        );
        $.validator.addMethod(
                "dateCel",
                function (value, element) {
                        return value == "" || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value));
                },
                "Format : jj/mm/aaaa"
        );
}

function validerExport() {
        var urlCalcul = getUrlExport()+'/calcul';
        var valeurs =
                $.grep($('#form-export-obs').serializeArray(), function(field, i) {
                        if($.trim(field.value) == '') return false;
                        return true;
                });

        $.get(urlCalcul, valeurs, function(data) {
                if(data.length == 1) {
                        window.location.href = data[0];
                } else {
                        $('.attention').effect("highlight", {}, 1500);
                        afficherListeTelechargements(data);
                }
        });
}

function afficherListeTelechargements(urls) {
        var htmlListe = '<ul>';
        $.each(urls, function(index, url) {
                htmlListe += '<li><a class="lien_telechargement" href="'+url+'">Feuille n°'+(index+1)+'</a></li>';
        });
        htmlListe += '</ul>';
        $('#liste_telechargements').html(htmlListe);
}

function ouvrirDansUneNouvelleFenetre(evenement, lien) {
        evenement.preventDefault();
        window.open(lien.attr("href"));
}

$(document).ready(function() {
        ajouterAutocompletionNomSci();
        ajouterAutocompletionCommunes();
        $("#date_debut").datepicker($.datepicker.regional['fr']);
        $("#date_fin").datepicker($.datepicker.regional['fr']);
        $(".lien_telechargement").live("click", function(event) {ouvrirDansUneNouvelleFenetre(event, $(this))});
        
        configurerValidationFormulaire();
});