New file |
0,0 → 1,389 |
/* 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); |
} |
$('#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, |
date : date |
}, |
"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 visible |
error.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 messicoles |
var 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 messicoles |
|
|
var 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 pas |
var 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 champ |
function 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 champ |
gererAffichageChampCulture(); |
|
|
|
|
|
// 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(); |
} |
}); |