Subversion Repositories eFlore/Applications.cel

Rev

Rev 2857 | Rev 2861 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/* Héritage */
function WidgetSaisieMessicoles()
{
        this.taxons = {};
}

WidgetSaisieMessicoles.prototype = new WidgetSaisie();

/* Surcharge des fonctions */

// Surcharge ajouterObs
WidgetSaisieMessicoles.prototype.ajouterObs = function() {
        // Fermeture automatique des dialogue de transmission de données
        // @WARNING TEST
        $('#dialogue-obs-transaction-ko').hide();
        $('#dialogue-obs-transaction-ok').hide();

        // vérification : si la détermination est incertaine, obligation
        // de fournir au moins une image
        var certitude = $('#identification-liste').val(),
                nbImages = $('#miniatures img').length,
                imagesOK = true;
        if (certitude != "certaine" && nbImages == 0) {
                imagesOK = false;
                $('#image-obligatoire').show();
        } else {
                $('#image-obligatoire').hide();
        }

        if ((this.validerFormulaire() == true) && imagesOK) {
                this.masquerPanneau('#dialogue-form-invalide');
                //return false;
                // suite des opérations
                this.obsNbre = this.obsNbre + 1;
                $(".obs-nbre").text(this.obsNbre);
                $(".obs-nbre").triggerHandler('changement');
                this.afficherObs();
                this.stockerObsData();
                this.supprimerMiniatures();
                if(! this.especeImposee) {
                        $("#taxon").val("");
                        $("#taxon").data("numNomSel",undefined);
                }
                $('#barre-progression-upload').attr('aria-valuemax', this.obsNbre);
                $('#barre-progression-upload .sr-only').text('0/'+this.obsNbre+" observations transmises");
        } else {
                this.afficherPanneau('#dialogue-form-invalide');
        }
};

// surcharge fonction definirReglesFormValidator()
WidgetSaisieMessicoles.prototype.definirReglesFormValidator = function() {
        // WidgetSaisie.definirReglesFormValidator();
        $("#form-observateur").validate({
                rules: {
                        courriel : {
                                required : true,
                                email : true},
                        courriel_confirmation : {
                                required : true,
                                equalTo: "#courriel"}
                }
        });
        $("#form-station").validate({
                ignore: ':hidden:not("#latitude, #longitude")', // validation des champs cachés...
                errorPlacement: function(error, element) { // ...mais erreur visible
                        error.insertBefore("#coordonnees-geo");
                },
                groups: {
                        latLon: "latitude longitude"
                },
                rules: {
                        latitude : {
                                required: true,
                                range: [-90, 90]
                        },
                        longitude : {
                                required: true,
                                range: [-180, 180]
                        }
                }
        });
        $("#form-obs").validate({
                rules: {
                        "taxon-liste" : "required",
                        taxon : "required",
                        "abondance-liste" : "required",
                        "zone-champ[]" : {
                required : true,
                minlength : 1
            }           
                },
                errorPlacement: function(error, element) { // pas top mais mieux que rien
                        error.insertBefore(element.parent());
                }
        });
        $("#form-date").validate({
                rules: {
                        date : {
                                required : true,
                                date : date
                        }
                }
        });
};

// surcharge fonction validerFormulaire()
WidgetSaisieMessicoles.prototype.validerFormulaire = function() {
        observateur = $("#form-observateur").valid();
        station = $("#form-station").valid();
        obs = $("#form-obs").valid();
        date = $("#form-date").valid();
        return (observateur && station && obs && date);
};

// surcharge fonction stockerObsData()
WidgetSaisieMessicoles.prototype.stockerObsData = function() {
        var lthis = this;
        var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
                nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
                numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val();
        var nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
                nomRet = nomHorsListe ? $('#taxon').data('nomRet') : this.taxons[numNomSel]['nom_ret'],
                numNomRet = nomHorsListe ? $('#taxon').data('numNomRet') : this.taxons[numNomSel]['num_nom_ret'],
                numTaxon = nomHorsListe ? $('#taxon').data('nt') : this.taxons[numNomSel]['num_taxon'],
                famille = nomHorsListe ? $('#taxon').data('famille') : this.taxons[numNomSel]['famille'],
                referentiel = (numNomSel == undefined) ? '' : this.nomSciReferentiel,
                notes = (nomSpecial ? this.taxons[numNomSel]['nom_fr'] + '. ' : '') + $('#notes').val(),
                zoneChamp = [],
                abondance = $('#abondance-liste option:selected').val(),
                typeCulture = $('input[name=type-culture]:checked').val(),
                certitude = $('input[name=certitude]:checked').val(),
                certitude = (certitude == undefined) ? '' : certitude;
                

        $('#liste-obs').data('obsId'+this.obsNbre, {
                'date': $('#date').val(),
                'notes': notes,

                'station': $('#station').val(),
                'latitude': $('#latitude').val(),
                'longitude': $('#longitude').val(),
                'commune_nom': $('#commune-nom').text(),
                'commune_code_insee': $('#commune-code-insee').text(),

                'nom_sel': nomSel,
                'num_nom_sel': numNomSel,
                'nom_ret': nomRet,
                'num_nom_ret': numNomRet,
                'num_taxon': numTaxon,
                'famille': famille,
                'referentiel': referentiel,
                'certitude': certitude,
                'milieu': milieu,
                'zone_champ': zoneChamp,
                'abondance': abondance,
                'type_culture': typeCulture,

                // Ajout des champs images
                //'image_nom': lthis.getNomsImgsOriginales(),

                // Ajout des champs étendus de l'obs
                //'obs_etendue': lthis.getObsChpEtendus()
        });
        if (this.debug) {
                console.log($('#liste-obs').data('obsId'+this.obsNbre));
        }
};

/**
 * Affiche une observation dans la liste des observations à transmettre
 */
WidgetSaisieMessicoles.prototype.afficherObs = function() {
        
        var commune = $("#commune-nom").text();
        commune = commune.trim() != "" ? commune : $("#carte-recherche").val();
        
        var code_insee = $('#commune-code-insee').text();
        code_insee = code_insee.trim() != "" ? "("+code_insee+")" : "";
        
        var taxonListe = $("#taxon-liste option:selected").data('nom-a-sauver');
        var taxon = $("#taxon").val();
        var numNomSel = $("#taxon").data("numNomSel");
        var latitude = $("#latitude").val();
        var longitude = $("#longitude").val();
        var date = $("#date").val();
        var lieudit = ($('#lieudit').val() != "" ? $('#lieudit').val() : "pas de lieu-dit saisi");
        var station = ($('#station').val() != "" ? $('#station').val() : "pas de station saisie");
        var milieu = ($('#milieu').val() != "" ? $('#milieu').val() : "pas de milieu saisi");
        var culture = ($('#culture-autres-radio').is(':checked') ? $('#culture-autres-input').val() : $('input[name=type-culture]:checked').data('titre'));
        var identification = $('#identification-liste option:selected').data('titre');
        var abondance = $('#abondance-liste option:selected').data('titre');
        var zoneChamp = [];
        // récupération des cases à cocher multiples dans un tableau pour l'abondance
        $('input[name="zone-champ[]"]:checked').each(function() {
                zoneChamp.push(' '+$(this).data('titre'));
        });
        var notes = $("#notes").val();

        if (this.debug) {
                console.log(commune+'  -  '+code_insee);
        }

        // affichage des données de l'observation à transmettre
        $("#liste-obs").prepend(
                '<div id="obs'+this.obsNbre+'" class="row-fluid obs obs'+this.obsNbre+'">'+
                        '<div class="span12">'+
                                '<div class="well">'+
                                        '<div class="obs-action pull-right has-tooltip" data-placement="bottom" '+
                                                'title="Supprimer cette observation de la liste à transmettre">'+
                                                '<button class="btn btn-danger supprimer-obs" value="'+this.obsNbre+'" title="'+this.obsNbre+'">'+
                                                        '<i class="icon-trash icon-white"></i>'+
                                                '</button>'+
                                        '</div> '+
                                        '<div class="row-fluid">'+
                                                '<div class="thumbnail span2">'+
                                                this.ajouterImgMiniatureAuTransfert()+
                                                '</div>'+
                                                '<div class="span9">'+
                                                        '<ul class="unstyled">'+
                                                                '<li>'+
                                                                        '<span class="nom-sci">'+taxonListe+taxon+'</span> '+
                                                                        this.ajouterNumNomSel()+'<span class="referentiel-obs">'+
                                                                        (numNomSel == undefined ? '' : '['+ this.nomSciReferentiel +']')+'</span>'+
                                                                        ' observé à <span class="gras">'+commune+' '+code_insee+'</span> ['+latitude+' / '+longitude+']'+' le <span class="gras">'+' '+date+'</span>'+
                                                                '</li>'+
                                                                '<li>'+
                                                                        '<div class="row-fluid">'+
                                                                                '<span class="span4">Lieu-dit : <span class="gras">'+lieudit+'</span></span>'+
                                                                                '<span class="span4">Station : <span class="gras">'+station+'</span></span>'+
                                                                                '<span class="span4">Milieu : <span class="gras">'+milieu+'</span></span>'+
                                                                        '</div>'+
                                                                '</li>'+
                                                                '<li>'+ 
                                                                        '<div class="row-fluid">'+
                                                                                '<span class="span4">Culture de type <span class="gras">'+culture+'</span></span>'+
                                                                                '<span class="span4">Identification <span class="gras">'+identification+'</span></span>'+
                                                                                '<span class="span4">Abondance de <span class="gras">'+abondance+'</span></span>'+
                                                                        '</div>'+
                                                                '</li>'+
                                                                '<li>'+ 
                                                                        'Espèce située en <span class="gras">'+zoneChamp+'</span> du champ'+
                                                                '</li>'+
                                                                '<li>'+
                                                                        'Notes : <span class="discretion">'+notes+'</span>'+
                                                                '</li>'+
                                                        '</ul>'+
                                                '</div>'+
                                        '</div>'+
                                '</div>'+
                        '</div>'+
                '</div>');
        $('#zone-liste-obs').removeClass("hidden").show();
};




/* jQuery en vrac */
$(document).ready(function() {
        // super popover qui va chercher son contenu dans un div à côté (pour les
        // boutons d'aide des types de champs, etc.)
        $('[data-toggle="popover"]').popover({
        html : true, 
        content: function() {
                        var parentFor = $(this).parent().attr("for");
                        var popoverHtmlContentDiv = $('.popover-html-content[data-for="' + parentFor + '"]');
                        return popoverHtmlContentDiv.html();
        }
    });

    // Activation de la saisie si on clique sur 'Autres' (type de champ)
    $('.culture').change(function() {
        var input = $('#culture-autres-input');
                ($('#culture-autres-radio').is(':checked')) ? input.show() && input.focus() : input.hide();
    });

    // Affichage de l'espèce liée au référentiel sélectionné lors de la sélection 'Autres' (espèce)
    $('#taxon-liste').change(function() {
        var option = $('#taxon-liste').val();
        var taxonCompletion = $('#taxon-input-groupe');
        if (option == '?') {
                taxonCompletion.show();
                $('#taxon').focus();
        }
        else {
                taxonCompletion.hide();
        }
    });

    // On masque l'option par défaut pour l'abondance puisque le choix est obligatoire
    $('#abondance-liste').click(masquerTitreListe('abondance'));
    function masquerTitreListe(element) {
                $('#' + element + '-liste .a-masquer').hide();
        }
});