New file |
0,0 → 1,402 |
// Héritage |
WidgetSaisieArbresTetards = function() { |
this.serviceAltitudeUrl = null; |
this.taxons = {}; |
} |
WidgetSaisieArbresTetards.prototype = new WidgetSaisie(); |
|
WidgetSaisieArbresTetards.prototype.initEvts = function() { |
// super() |
WidgetSaisie.prototype.initEvts.call(this); |
|
var lthis = this; |
$('body').on('click', '.fermer', function(event) { |
event.preventDefault(); |
lthis.basculerOuvertureFermetureCadre($(this).find('.icone')); |
}); |
|
this.surChangementTaxonListe();// Vérif lors du chargement de la page |
$('#taxon-liste').on('change', this.surChangementTaxonListe.bind(this)); |
this.surChangementFormation();// Vérif lors du chargement de la page |
$('#formation').on('change', this.surChangementFormation.bind(this)); |
|
// Gestion des obs |
this.configurerMilieux(); |
this.surChangementNbreObs(); |
}; |
|
WidgetSaisieArbresTetards.prototype.focusChampFormulaire = function() { |
$("#carte-recherche").focus(); |
}; |
|
WidgetSaisieArbresTetards.prototype.mettreAJourMarkerPosition = function(latLng) { |
this.trouverCommune(latLng); |
this.trouverAltitude(latLng); |
|
var lat = latLng.lat().toFixed(5), |
lng = latLng.lng().toFixed(5); |
this.remplirChampLatitude(lat); |
this.remplirChampLongitude(lng); |
this.remplirChampsLambert93(lat, lng); |
}; |
|
proj4.defs([ |
['EPSG:4326', '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'], |
['EPSG:2154', '+title=RGF93 / Lambert-93 +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'] |
]); |
WidgetSaisieArbresTetards.prototype.remplirChampsLambert93 = function(lat, lng) { |
// Prendre en compte l'initialisation des projections |
var coordinate = {x: lng,y: lat}; |
proj4(proj4.defs('EPSG:4326'), proj4.defs('EPSG:2154')).forward(coordinate); |
$('#l93-x').val(coordinate.x.toFixed(0)); |
$('#l93-y').val(coordinate.y.toFixed(0)); |
}; |
|
WidgetSaisieArbresTetards.prototype.trouverAltitude = function(pos) { |
var url_service = this.serviceAltitudeUrl, |
urlAltFormatee = url_service.replace('{lat}', pos.lat()).replace('{lon}', pos.lng()); |
var lthis = this; |
$.ajax({ |
url: urlAltFormatee, |
type: 'GET', |
dataType: 'jsonp', |
beforeSend : function() { |
$('#altitude').empty(); |
$('#dialogue-erreur .alert-txt').empty(); |
}, |
success : function(data, textStatus, jqXHR) { |
$('#altitude').empty().append(data.altitude); |
$('#marqueur-altitude').data('altitude', data.altitude); |
}, |
statusCode : { |
500 : function(jqXHR, textStatus, errorThrown) { |
if (lthis.debug) { |
$('#dialogue-erreur .alert-txt').append('<p id="msg">Un problème est survenu lors de l\'appel au service fournissant l\'altitude.</p>'); |
reponse = jQuery.parseJSON(jqXHR.responseText); |
var erreurMsg = ''; |
if (reponse != null) { |
$.each(reponse, function (cle, valeur) { |
erreurMsg += valeur + '<br />'; |
}); |
} |
|
$('#dialogue-erreur .alert-txt').append('<p class="msg-erreur">Erreur 500 : '+errorThrown+"<br />"+erreurMsg+'</p>'); |
} |
} |
}, |
error : function(jqXHR, textStatus, errorThrown) { |
if (lthis.debug) { |
$("#dialogue-erreur .alert-txt").append('<p class="msg">Une erreur Ajax est survenue lors de l\'appel au service fournissant l\'altitude.</p>'); |
reponse = jQuery.parseJSON(jqXHR.responseText); |
var erreurMsg = ''; |
if (reponse != null) { |
$.each(reponse, function (cle, valeur) { |
erreurMsg += valeur + '<br />'; |
}); |
} |
|
$('#dialogue-erreur .alert-txt').append('<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>'); |
} |
}, |
complete : function(jqXHR, textStatus) { |
var debugMsg = extraireEnteteDebug(jqXHR); |
if (debugMsg != '') { |
if (lthis.debug) { |
$('#dialogue-erreur .alert-txt').append('<pre class="msg-debug msg">Débogage : '+debugMsg+'</pre>'); |
} |
} |
if ($('#dialogue-erreur .msg').length > 0) { |
$('#dialogue-erreur').show(); |
} |
} |
}); |
}; |
|
WidgetSaisieArbresTetards.prototype.surChangementTaxonListe = function() { |
if ($('#taxon-liste').val() === '?') { |
$('#taxon-input-groupe').removeClass('hidden'); |
$('#taxon').valid(); |
} else { |
$('#taxon-input-groupe').addClass('hidden'); |
} |
}; |
|
WidgetSaisieArbresTetards.prototype.surChangementFormation = function() { |
if ($('#formation').val() === 'alignement') { |
$('#aligne-nbre-groupe').removeClass('hidden'); |
$('#aligne-nbre').valid(); |
} else { |
$('#aligne-nbre-groupe').addClass('hidden'); |
} |
}; |
|
WidgetSaisieArbresTetards.prototype.configurerFormValidator = function() { |
$.validator.addMethod( |
'dateCel', |
function (value, element) { |
return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value)); |
}, |
'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.'); |
|
$.validator.addMethod( |
'aligneNbre', |
function (value, element) { |
var ok = true; |
if ($('#formation').val() === 'alignement') { |
ok = (value != '' && /^[0-9]+$/.test(value) && value > 1); |
} |
return ok; |
}, |
"Veuillez indiquer le nombre d'arbres d'alignement."); |
|
$.validator.addMethod( |
'autreSp', |
function (value, element) { |
var taxonListe = $('#taxon-liste').val(); |
return taxonListe !== '?' || (taxonListe === '?' && value != ''); |
}, |
"Veuillez sélectionner une espèce ou une indication sur la plante."); |
|
// Modification des méthodes par défaut de Jquery Validation pour Boostrap 3 |
$.validator.setDefaults({ |
ignore: [],// Forcer Jquery Validate à examiner les éléments en "display:none;" |
highlight: function(element) { |
$(element).closest('.form-group').addClass('has-error'); |
}, |
unhighlight: function(element) { |
$(element).closest('.form-group').removeClass('has-error'); |
}, |
success: function(element) { |
$(element).closest('.form-group').removeClass('has-error').addClass('has-success'); |
|
if ($(element).attr('id') == 'taxon' && $('#taxon').val() != '') { |
// Si le taxon n'est pas lié au référentiel, on vide le data associé |
if ($('#taxon').data('value') != $('#taxon').val()) { |
$('#taxon').data('numNomSel', ''); |
$('#taxon').data('nomRet', ''); |
$('#taxon').data('numNomRet', ''); |
$('#taxon').data('nt', ''); |
$('#taxon').data('famille', ''); |
} |
} |
}, |
errorElement: 'span', |
errorClass: 'help-block', |
errorPlacement: function(error, element) { |
//console.log(element.attr('name') +'-'+ element.parent('.input-group').length); |
if (element.parent('.input-group').length) { |
error.insertAfter(element.parent()); |
} else { |
error.insertAfter(element); |
} |
} |
}); |
}; |
|
WidgetSaisieArbresTetards.prototype.definirReglesFormValidator = function() { |
$('#form-observateur').validate({ |
rules: { |
courriel : { |
required : true, |
email : true}, |
courriel_confirmation : { |
required : true, |
equalTo: '#courriel'} |
} |
}); |
$('#form-station').validate({ |
rules: { |
latitude : { |
range: [-90, 90], |
required: true}, |
longitude : { |
range: [-180, 180], |
required: true}, |
'l93-x': 'required', |
'l93-y': 'required' |
} |
}); |
$('#form-obs').validate({ |
rules: { |
date: { |
required: true, |
'dateCel' : true}, |
'taxon-liste': {required: true}, |
taxon: {autreSp: true}, |
certitude: 'required', |
arbreTetardFormation: 'required', |
arbreTetardAligneNbre: {aligneNbre: true} |
} |
}); |
}; |
|
WidgetSaisieArbresTetards.prototype.configurerMilieux = function() { |
$('.cb-milieux').on('click', function(event) { |
$(this).valid(); |
event.stopPropagation(); |
}); |
}; |
|
WidgetSaisieArbresTetards.prototype.basculerOuvertureFermetureCadre = function(element) { |
if (element.hasClass('glyphicon-plus-sign')) { |
element.removeClass('glyphicon-plus-sign').addClass('glyphicon-minus-sign'); |
} else { |
element.removeClass('glyphicon-minus-sign').addClass('glyphicon-plus-sign'); |
} |
}; |
|
WidgetSaisieArbresTetards.prototype.basculerAffichageCoord = function() { |
var textActuel = $(this).text(), |
textARemplacer = $(this).data('toggle-text'); |
$(this).text(textARemplacer).data('toggle-text', textActuel); |
|
if ($(this).hasClass('cacher-coord')) { |
$(this).removeClass('cacher-coord').addClass('afficher-coord'); |
$('#coordonnees-geo').addClass('hidden'); |
} else { |
$(this).removeClass('afficher-coord').addClass('cacher-coord'); |
$('#coordonnees-geo').removeClass('hidden'); |
} |
|
return false; |
}; |
|
WidgetSaisieArbresTetards.prototype.afficherObs = function() { |
var numNomSel = ($('#taxon-liste').val() == '?') ? $('#taxon').data('numNomSel') : $('#taxon-liste').val(), |
nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'), |
taxon = ($('#taxon-liste').val() == '?') ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'), |
referentiel = (numNomSel == undefined) ? '' : '['+ this.nomSciReferentiel +']', |
commune = $('#commune-nom').text(), |
codeInsee = $('#commune-code-insee').text(), |
lat = $('input[name="latitude"]').val(), |
lng = $('input[name="longitude"]').val(), |
date = $('#date').val(), |
formation = this.getTextOptionSelectionne('formation'), |
nbreAligne = ($('#aligne-nbre').val() != undefined ? ' (' + $('#aligne-nbre').val() + ')' : ''), |
cavites = this.getTextOptionSelectionne('cavites'), |
circonference = this.getTextOptionSelectionne('circonference'), |
hauteurTete = this.getTextOptionSelectionne('hauteur-tete'), |
presenceSp = $('#presence-sp').val(), |
taille = this.getTextOptionSelectionne('taille-type'), |
entretien = this.getTextOptionSelectionne('entretien'), |
etatSanitaire = this.getTextOptionSelectionne('etat-sanitaire'), |
milieux = this.getMilieux(), |
notes = (nomSpecial ? this.taxons[numNomSel]['nom_fr'] + ".<br />" : '') + $('#notes').val(); |
|
$('#liste-obs').prepend( |
'<div id="obs'+this.obsNbre+'" class="obs obs'+this.obsNbre+'">'+ |
'<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+'">'+ |
'<span class="glyphicon glyphicon-trash icon-white"></i>'+ |
'</button>'+ |
'</div> '+ |
'<div class="row">'+ |
'<div class="col-md-2 obs-miniatures">'+ |
this.ajouterImgMiniatureAuTransfert()+ |
'</div>'+ |
'<div class="col-md-8">'+ |
'<ul class="list-unstyled obs-entete">'+ |
'<li>'+ |
'<span class="nom-sci">' + taxon + '</span> ' + |
this.formaterNumNomSel(numNomSel)+ |
'<span class="referentiel-obs">' + referentiel + '</span>' + |
' observé à ' + |
'<span class="commune">' + commune + '</span> ' + |
'(' + codeInsee + ') [' + lat +' / ' + lng + ']' + |
' le ' + |
'<span class="date">' + date + '</span>' + |
'</li>' + |
'</ul>'+ |
'<ul class="list-unstyled obs-details">'+ |
'<li>' + |
'<span>Situation(s) :</span> ' + milieux + ' ; ' + |
'<span>Formation :</span> ' + formation + nbreAligne + ' ; ' + |
'<span>Cavités :</span> ' + cavites + ' ; ' + |
'<span>Circonférence :</span> ' + circonference + ' ; ' + |
'<span>Hauteur de la tête :</span> ' + hauteurTete + ' ; ' + |
'</li>' + |
'<li>' + |
'<span>Présences sur l\'arbre :</span> ' + presenceSp + ' ' + |
'</li>' + |
'<li>' + |
'<span>Type taille :</span> ' + taille + ' ; ' + |
'<span>Entretien :</span> ' + entretien + ' ; ' + |
'<span>État sanitaire :</span> ' + etatSanitaire + ' ; ' + |
'</li>' + |
'<li>' + |
'<span>Commentaires :</span> ' + notes + |
'</li>'+ |
'</ul>'+ |
'</div>'+ |
'</div>'+ |
'</div>'+ |
'</div>'); |
}; |
|
WidgetSaisieArbresTetards.prototype.formaterNumNomSel = function(numNomSel) { |
var nn = ''; |
if (numNomSel == undefined) { |
nn = '<span class="alert-error">[non lié au référentiel]</span>'; |
} else { |
nn = '<span class="nn">[nn'+numNomSel+']</span>'; |
} |
return nn; |
}; |
|
WidgetSaisieArbresTetards.prototype.getMilieux = function() { |
var milieuxStr = '', |
milieux = []; |
$('.cb-milieux:checked').each(function() { |
milieux.push($(this).val()); |
}); |
|
milieuxStr = Array.prototype.slice.call(milieux).join(', '); |
return milieuxStr; |
}; |
|
WidgetSaisieArbresTetards.prototype.getTextOptionSelectionne = function(id) { |
return ($('#' + id).val() != undefined ? $('#' + id + ' option:selected').text() : ''); |
}; |
|
// @TODO harmoniser (altitude) |
WidgetSaisieArbresTetards.prototype.stockerObsData = function() { |
var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false; |
nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'), |
numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val(), |
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; |
|
$('#liste-obs').data('obsId'+this.obsNbre, { |
'date' : $('#date').val(), |
'notes' : $('#notes').val(), |
|
'nom_sel': nomSel, |
'num_nom_sel': numNomSel, |
'nom_ret': nomRet, |
'num_nom_ret': numNomRet, |
'num_taxon': numTaxon, |
'famille': famille, |
'referentiel': referentiel, |
|
'latitude' : $('#latitude').val(), |
'longitude' : $('#longitude').val(), |
'commune_nom' : $('#commune-nom').text(), |
'commune_code_insee' : $('#commune-code-insee').text(), |
'altitude': $('#altitude').text(), |
'lieudit': $('#lieudit').val(), |
'milieu': this.getMilieux(), |
'certitude': $('#certitude').val(), |
|
//Ajout des champs images |
'image_nom' :this. getNomsImgsOriginales(), |
|
// Ajout des champs étendus de l'obs |
'obs_etendue': this.getObsChpEtendus() |
}); |
}; |