Rev 3010 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/* Héritage */function WidgetSaisieMessicoles(){this.taxons = {};}WidgetSaisieMessicoles.prototype = new WidgetSaisie();/* Surcharge des fonctions */// Surcharge ajouterObsWidgetSaisieMessicoles.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 imagevar 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érationsthis.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);}$('#form-obs').each(function(){this.reset();});$('#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-releve").validate({rules: {date : {required : true,'dateCel' : true},"type-culture" : "required"},errorPlacement: function(error, element) {error.insertBefore(element.parent());}});$("#form-station").validate({ignore: ':hidden:not("#latitude, #longitude")', // validation des champs cachés...errorPlacement: function(error, element) { // ...mais erreur visibleerror.insertBefore("#coordonnees-geo");},groups: {latLon: "latitude longitude"},rules: {latitude : {required: true,range: [-90, 90]},longitude : {required: true,range: [-180, 180]}},messages: {// astuce pour simuler un message personnalisé pour le groupe "latLon"latitude: "Veuillez géolocaliser votre observation en déplaçant le curseur sur la carte",longitude: "Veuillez géolocaliser votre observation en déplaçant le curseur sur la carte"}});$("#form-obs").validate({rules: {"taxon-liste" : "required","abondance-liste" : "required","zone-champ[]" : {required : true,minlength : 1}},errorPlacement: function(error, element) {error.insertBefore(element.parent());}});};// surcharge fonction validerFormulaire()WidgetSaisieMessicoles.prototype.validerFormulaire = function() {observateur = $("#form-observateur").valid();releve = $("#form-releve").valid();station = $("#form-station").valid();obs = $("#form-obs").valid();return (observateur && station && obs && releve);};// surcharge fonction stockerObsData()WidgetSaisieMessicoles.prototype.stockerObsData = function() {var lthis = this;var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;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 = $('#notes').val();// champs spécifques aux messicolesvar abondance = $('#abondance-liste').val(),certitude = $('#identification-liste').val();$('#liste-obs').data('obsId'+this.obsNbre, {'date': $('#date').val(),'notes': notes,'latitude': $('#latitude').val(),'longitude': $('#longitude').val(),'commune_nom': $('#commune-nom').text(),'commune_code_insee': $('#commune-code-insee').text(),'lieudit' : $("#lieudit").val(),'station' : $("#station").val(),'milieu' : $("#milieu").val(),'nom_sel': nomSel,'num_nom_sel': numNomSel,'nom_ret': nomRet,'num_nom_ret': numNomRet,'num_taxon': numTaxon,'famille': famille,'referentiel': referentiel,'certitude': certitude,'abondance': abondance,// Ajout des champs images'image_nom' : lthis.getNomsImgsOriginales(),'image_b64' : lthis.getB64ImgsOriginales(),// 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() {console.log(this.taxons);var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false,numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val();var nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),//famille = nomHorsListe ? $('#taxon').data('famille') : this.taxons[numNomSel]['famille'],referentiel = (numNomSel == undefined) ? '' : this.nomSciReferentiel;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 latitude = $("#latitude").val();var longitude = $("#longitude").val();var lieudit = ($('#lieudit').val() != "" ? $('#lieudit').val() : "aucun lieu-dit saisi");var station = ($('#station').val() != "" ? $('#station').val() : "aucune station saisie");var milieu = ($('#milieu').val() != "" ? $('#milieu').val() : "aucun milieu saisi");var notes = ($('#notes').val() != "" ? $('#notes').val() : "<b>aucunes notes saisies</b>");var date = $("#date").val();// champs spécifques aux messicolesvar culture = ($('input[name=type-culture]').is(':checked') ? $('input[name=type-culture]:checked').data('titre') : "?");var cultureDetails = ($('input[name=type-culture]').is(':checked') ? $('input[name=type-culture]:checked').parent().find('input[type=text]').val() : '?');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'));});// 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 gras">'+nomSel+'</span> '+this.ajouterNumNomSel(numNomSel, referentiel)+' 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 <span class="gras">'+cultureDetails+'</span> 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();};WidgetSaisieMessicoles.prototype.surAutocompletionTaxon = function(event, ui) {$("#taxon").data(ui.item);if (ui.item.retenu == true) {$("#taxon").addClass('ns-retenu');} else {$("#taxon").removeClass('ns-retenu');}// détection de si c'est un(e?) messicole ou pasvar panneauAvertissementNonMessicole = $('#avertissement-non-messicole');panneauAvertissementNonMessicole.hide();if (nnr_messicoles.indexOf(parseInt(ui.item.numNomRet)) == -1) {panneauAvertissementNonMessicole.show();}};WidgetSaisieMessicoles.prototype.ajouterNumNomSel = function(numNom, referentiel) {var nn = '';if (numNom == '' || numNom == undefined) {nn = '<span class="alert-error">[non lié au référentiel]</span>';} else {nn = '<span class="nn">[nn'+numNom+']</span>'+ '<span class="referentiel-obs"> '+ referentiel+'</span>';}return nn;};// surcharge, abadon du mécanisme générique et bidouillage en dur (plus facile// car champs radio / checkboxes)WidgetSaisieMessicoles.prototype.getObsChpEtendus = function() {var champs = [];var zoneChamp = [];$('input[name="zone-champ[]"]:checked').each(function() {zoneChamp.push($(this).val());});//console.log("zc:", zoneChamp);// obligatoire donc jamais vide (on croise les doigts)champs.push({cle: "zoneDuChamp",label: "Zone du champ",valeur: zoneChamp.join()});var typeCulture = $('input[name=type-culture]:checked').data('titre');//console.log("tc:", typeCulture);if (typeCulture != '') {champs.push({cle: "typeDeCulture",label: "Type de culture",valeur: (typeCulture == undefined ? "" : typeCulture)});}var typeCultureDetails = $('input[name=type-culture]:checked').parent().find('input[type=text]').val();//console.log("tcd:", typeCultureDetails);if (typeCultureDetails != '') {champs.push({cle: "typeDeCultureDetails",label: "Details de la culture",valeur: typeCultureDetails});}return champs;}/* 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 un type de champfunction gererAffichageChampCulture(){$('.culture input[type=text]').hide();var radio = $('.culture input[type=radio]:checked');var input = radio.parent().find('input[type=text]');(radio.is(':checked')) ? input.show() && input.focus() : input.hide();}$('.culture').change(gererAffichageChampCulture);// ... et aussi au chargement du widget, si la sélection est restée sur un champgererAffichageChampCulture();// Affichage de l'espèce liée au référentiel sélectionné lors de la sélection 'Autres' (espèce)function gererAffichageChampAutreEspece() {var option = $('#taxon-liste').val();var taxonCompletion = $('#taxon-input-groupe');if (option == '?') {taxonCompletion.show();$('#taxon').focus();}else {taxonCompletion.hide();}}$('#taxon-liste').change(gererAffichageChampAutreEspece);// ... et aussi au chargement du widget, si la sélection est restée sur "Autre espèce"gererAffichageChampAutreEspece();// 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();}});