1,9 → 1,11 |
//+---------------------------------------------------------------------------------------------------------+ |
// GÉNÉRAL |
$(document).ready(function() { |
$(window).on('beforeunload', function(event) { |
return 'Êtes vous sûr de vouloir quiter la page?\nLes observations saisies mais non transmises seront perdues.'; |
}); |
if (DEBUG == false) { |
$(window).on('beforeunload', function(event) { |
return 'Êtes vous sûr de vouloir quiter la page?\nLes observations saisies mais non transmises seront perdues.'; |
}); |
} |
}); |
//+----------------------------------------------------------------------------------------------------------+ |
// FONCTIONS GÉNÉRIQUES |
41,19 → 43,19 |
} |
|
//+----------------------------------------------------------------------------------------------------------+ |
//UPLOAD PHOTO : Traitement de l'image |
//UPLOAD PHOTO : Traitement de l'image |
$(document).ready(function() { |
|
|
$(".effacer-miniature").click(function () { |
supprimerMiniatures($(this)); |
}); |
|
|
$("#fichier").bind('change', function (e) { |
arreter(e); |
var options = { |
success: afficherMiniature, // post-submit callback |
dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type) |
resetForm: true // reset the form after successful submit |
var options = { |
success: afficherMiniature, // post-submit callback |
dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type) |
resetForm: true // reset the form after successful submit |
}; |
$("#miniature").append('<img id="miniature-chargement" class="miniature" alt="chargement" src="'+CHARGEMENT_IMAGE_URL+'"/>'); |
$("#ajouter-obs").attr('disabled', 'disabled'); |
65,7 → 67,7 |
} |
return false; |
}); |
|
|
if(ESPECE_IMPOSEE) { |
$("#taxon").attr("disabled", "disabled"); |
$("#taxon-input-groupe").attr("title",""); |
82,7 → 84,7 |
infosAssociee.retenu = (INFOS_ESPECE_IMPOSEE.retenu == 'false') ? false : true; |
$("#taxon").data(infosAssociee); |
} |
|
|
$('.effacer-miniature').live('click', function() { |
$(this).parent().remove(); |
}); |
94,7 → 96,7 |
return (extension.toLowerCase() == 'jpeg' || extension.toLowerCase() == 'jpg'); |
} |
|
function afficherMiniature(reponse) { |
function afficherMiniature(reponse) { |
if (DEBUG) { |
var debogage = $("debogage", reponse).text(); |
//console.log("Débogage upload : "+debogage); |
105,13 → 107,13 |
} else { |
$("#miniatures").append(creerWidgetMiniature(reponse)); |
} |
$('#ajouter-obs').removeAttr('disabled'); |
$('#ajouter-obs').removeAttr('disabled'); |
} |
|
function creerWidgetMiniature(reponse) { |
var miniatureUrl = $("miniature-url", reponse).text(); |
var imgNom = $("image-nom", reponse).text(); |
var html = |
var html = |
'<div class="miniature">'+ |
'<img class="miniature-img" class="miniature" alt="'+imgNom+'" src="'+miniatureUrl+'"/>'+ |
'<button class="effacer-miniature" type="button">Effacer</button>'+ |
124,7 → 126,7 |
$("#miniature-msg").empty(); |
} |
|
//Initialise l'autocomplétion de la commune, en fonction du référentiel |
//Initialise l'autocomplétion de la commune, en fonction du référentiel |
function initialiserAutocompleteCommune() { |
var geocoderOptions = { |
}; |
186,7 → 188,7 |
$("#carte-recherche").on('mouseup', function(event) {// Pour Safari... |
event.preventDefault(); |
}); |
|
|
$("#carte-recherche").keypress(function(e) { |
if (e.which == 13) { |
e.preventDefault(); |
247,7 → 249,7 |
var latLng = new google.maps.LatLng(46.30871, 2.54395);// Centre de la France |
var zoomDefaut = 5; |
} |
|
|
var options = { |
zoom: zoomDefaut, |
center: latLng, |
268,14 → 270,14 |
name: 'OSM', |
maxZoom: 19 |
}); |
|
|
// Création de la carte Google |
map = new google.maps.Map(document.getElementById('map-canvas'), options); //affiche la google map dans la div map_canvas |
map.mapTypes.set('OSM', osmMapType); |
|
|
// Création du Geocoder |
geocoder = new google.maps.Geocoder(); |
|
|
// Marqueur google draggable |
marker = new google.maps.Marker({ |
map: map, |
284,9 → 286,9 |
icon: GOOGLE_MAP_MARQUEUR_URL, |
position: latLng |
}); |
|
|
initialiserMarker(latLng); |
|
|
// Tentative de geocalisation |
if (navigator.geolocation) { |
navigator.geolocation.getCurrentPosition(function(position) { |
321,7 → 323,7 |
|
function mettreAJourMarkerPosition(latLng) { |
var lat = latLng.lat().toFixed(5); |
var lng = latLng.lng().toFixed(5); |
var lng = latLng.lng().toFixed(5); |
remplirChampLatitude(lat); |
remplirChampLongitude(lng); |
} |
338,9 → 340,9 |
|
function trouverCommune(pos) { |
$(function() { |
|
|
var url_service = SERVICE_NOM_COMMUNE_URL; |
|
|
var urlNomCommuneFormatee = url_service.replace('{lat}', pos.lat()).replace('{lon}', pos.lng()); |
$.ajax({ |
url : urlNomCommuneFormatee, |
347,7 → 349,7 |
type : "GET", |
dataType : "jsonp", |
beforeSend : function() { |
$(".commune-info").empty(); |
$(".commune-info").empty(); |
$("#dialogue-erreur .alert-txt").empty(); |
}, |
success : function(data, textStatus, jqXHR) { |
358,7 → 360,7 |
}, |
statusCode : { |
500 : function(jqXHR, textStatus, errorThrown) { |
if (DEBUG) { |
if (DEBUG) { |
$("#dialogue-erreur .alert-txt").append('<p id="msg">Un problème est survenu lors de l\'appel au service fournissante le nom des communes.</p>'); |
reponse = jQuery.parseJSON(jqXHR.responseText); |
var erreurMsg = ""; |
367,7 → 369,7 |
erreurMsg += valeur + "<br />"; |
}); |
} |
|
|
$("#dialogue-erreur .alert-txt").append('<p class="msg-erreur">Erreur 500 : '+errorThrown+"<br />"+erreurMsg+'</p>'); |
} |
} |
382,7 → 384,7 |
erreurMsg += valeur + "<br />"; |
}); |
} |
|
|
$("#dialogue-erreur .alert-txt").append('<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>'); |
} |
}, |
418,7 → 420,7 |
function requeterIdentite() { |
var courriel = $("#courriel").val(); |
//TODO: mettre ceci en paramètre de config |
var urlAnnuaire = "http://www.tela-botanica.org/service:annuaire:utilisateur/identite-par-courriel/"+courriel;//http://localhost/applications/annuaire/jrest/ |
var urlAnnuaire = SERVICE_ANNUAIRE_ID_URL+courriel;//http://localhost/applications/annuaire/jrest/ |
$.ajax({ |
url : urlAnnuaire, |
type : "GET", |
469,9 → 471,9 |
success: function(data, textStatus, jqXHR) { |
if (data != undefined && data != "") { |
prechargerForm(data); |
} |
} |
// TODO: voir s'il est pertinent d'indiquer quelque chose en cas d'erreur ou d'obs |
// inexistante |
// inexistante |
}, |
error: function(jqXHR, textStatus, errorThrown) { |
// TODO: cf TODO ci-dessus |
479,24 → 481,24 |
}); |
} |
|
function prechargerForm(data) { |
|
function prechargerForm(data) { |
|
$("#milieu").val(data.milieu); |
|
|
$("#carte-recherche").val(data.zoneGeo); |
$("#commune-nom").text(data.zoneGeo); |
|
|
if(data.hasOwnProperty("codeZoneGeo")) { |
// TODO: trouver un moyen qui fonctionne lorsqu'on aura d'autres référentiels que INSEE |
$("#commune-code-insee").text(data.codeZoneGeo.replace('INSEE-C:', '')); |
} |
|
|
if(data.hasOwnProperty("latitude") && data.hasOwnProperty("longitude")) { |
var latLng = new google.maps.LatLng(data.latitude, data.longitude); |
mettreAJourMarkerPosition(latLng); |
marker.setPosition(latLng); |
map.setCenter(latLng); |
map.setZoom(16); |
map.setCenter(latLng); |
map.setZoom(16); |
} |
} |
|
504,40 → 506,40 |
|
$(document).ready(function() { |
$(".alert .close").on('click', fermerPanneauAlert); |
|
|
$("[rel=tooltip]").tooltip('enable'); |
$("#btn-aide").on('click', basculerAffichageAide); |
|
|
$("#prenom").on("change", formaterPrenom); |
|
|
$("#nom").on("change", formaterNom); |
|
|
configurerDatePicker(); |
|
|
ajouterAutocompletionNoms(); |
|
|
configurerFormValidator(); |
definirReglesFormValidator(); |
|
|
$("#courriel_confirmation").on('paste', bloquerCopierCollerCourriel); |
|
|
$("a.afficher-coord").on('click', basculerAffichageCoord); |
|
|
$("#ajouter-obs").on('click', ajouterObs); |
|
|
$(".obs-nbre").on('changement', surChangementNbreObs); |
|
|
$("body").on('click', ".supprimer-obs", supprimerObs); |
|
|
$("#transmettre-obs").on('click', transmettreObs); |
|
|
$("#referentiel").on('change', surChangementReferentiel); |
|
|
$("body").on('click', ".defilement-miniatures-gauche", function(event) { |
event.preventDefault(); |
defilerMiniatures($(this)); |
}); |
|
|
$("body").on('click', ".defilement-miniatures-droite", function(event) { |
event.preventDefault(); |
defilerMiniatures($(this)); |
546,10 → 548,10 |
|
function configurerFormValidator() { |
$.validator.addMethod( |
"dateCel", |
function (value, element) { |
return value == "" || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value)); |
}, |
"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."); |
$.extend($.validator.defaults, { |
errorClass: "control-group error", |
558,7 → 560,7 |
highlight: function(element, errorClass, validClass) { |
if (element.type === 'radio') { |
this.findByName(element.name).parent("div").parent("div").removeClass(validClass).addClass(errorClass); |
} else { |
} else { |
$(element).parent("div").parent("div").removeClass(validClass).addClass(errorClass); |
} |
}, |
712,8 → 714,8 |
'<button class="btn btn-danger supprimer-obs" value="'+obsNbre+'" title="'+obsNbre+'">'+ |
'<i class="icon-trash icon-white"></i>'+ |
'</button>'+ |
'</div> '+ |
'<div class="row-fluid">'+ |
'</div> '+ |
'<div class="row-fluid">'+ |
'<div class="thumbnail span2">'+ |
ajouterImgMiniatureAuTransfert()+ |
'</div>'+ |
747,9 → 749,9 |
|
function stockerObsData() { |
$("#liste-obs").data('obsId'+obsNbre, { |
'date' : $("#date").val(), |
'date' : $("#date").val(), |
'notes' : $("#notes").val(), |
|
|
'nom_sel' : $("#taxon").val(), |
'num_nom_sel' : $("#taxon").data("numNomSel"), |
'nom_ret' : $("#taxon").data("nomRet"), |
757,7 → 759,7 |
'num_taxon' : $("#taxon").data("nt"), |
'famille' : $("#taxon").data("famille"), |
'referentiel' : ($("#taxon").data("numNomSel") == undefined ? '' : NOM_SCI_PROJET), |
|
|
'latitude' : $("#latitude").val(), |
'longitude' : $("#longitude").val(), |
'commune_nom' : $("#commune-nom").text(), |
765,7 → 767,7 |
'lieudit' : $("#lieudit").val(), |
'station' : $("#station").val(), |
'milieu' : $("#milieu").val(), |
|
|
//Ajout des champs images |
'image_nom' : getNomsImgsOriginales(), |
'image_b64' : getB64ImgsOriginales() |
815,13 → 817,13 |
// or javascript n'a pas de méthode cross browsers pour extraire les clés |
// TODO: utiliser var.keys quand ça sera plus répandu |
// ou bien utiliser un vrai tableau et pas un objet |
for (var obsNum in observations) { |
obsATransmettre = new Object(); |
|
for (var obsNum in observations) { |
obsATransmettre = new Object(); |
|
obsATransmettre['projet'] = TAG_PROJET; |
obsATransmettre['tag-obs'] = TAG_OBS; |
obsATransmettre['tag-img'] = TAG_IMG; |
|
|
var utilisateur = new Object(); |
utilisateur.id_utilisateur = $("#id_utilisateur").val(); |
utilisateur.prenom = $("#prenom").val(); |
833,7 → 835,7 |
if(idObsNumerique != "") { |
envoyerObsAuCel(idObsNumerique, obsATransmettre); |
} |
|
|
break; |
} |
} |
862,7 → 864,7 |
beforeSend : function() { |
$("#dialogue-obs-transaction-ko").hide(); |
$("#dialogue-obs-transaction-ok").hide(); |
$(".alert-txt .msg").remove(); |
$(".alert-txt .msg").remove(); |
$(".alert-txt .msg-erreur").remove(); |
$(".alert-txt .msg-debug").remove(); |
$("#chargement").show(); |
899,7 → 901,7 |
}, |
complete : function(jqXHR, textStatus) { |
var debugMsg = extraireEnteteDebug(jqXHR); |
|
|
if (erreurMsg != '') { |
if (DEBUG) { |
$("#dialogue-obs-transaction-ko .alert-txt").append('<pre class="msg-erreur">'+erreurMsg+'</pre>'); |
908,11 → 910,11 |
var hrefCourriel = "mailto:cel_remarques@tela-botanica.org?"+ |
"subject=Dysfonctionnement du widget de saisie "+TAG_PROJET+ |
"&body="+erreurMsg+"%0D%0ADébogage :%0D%0A"+debugMsg; |
|
|
// mise en valeur de l'obs en erreur + scroll vers celle ci en changeant le hash |
$('#obs'+idObs+' div div').addClass('obs-erreur'); |
window.location.hash = "obs"+idObs; |
|
|
$('#dialogue-obs-transaction-ko .alert-txt').append($("#tpl-transmission-ko").clone() |
.find('.courriel-erreur') |
.attr('href', hrefCourriel) |
933,8 → 935,8 |
window.location.hash = "dialogue-obs-transaction-ok"; |
initialiserObs(); |
}, 1500); |
|
} |
|
} |
} |
} |
}); |
1021,7 → 1023,7 |
miniatures += miniature; |
}); |
visible = ($("#miniatures img").length > 1) ? '' : 'defilement-miniatures-cache'; |
var html = |
var html = |
'<div class="defilement-miniatures">'+ |
'<a href="#" class="defilement-miniatures-gauche '+visible+'"><</a>'+ |
miniatures+ |
1034,12 → 1036,12 |
} |
|
function defilerMiniatures(element) { |
|
|
var miniatureSelectionne = element.siblings("img.miniature-selectionnee"); |
miniatureSelectionne.removeClass('miniature-selectionnee'); |
miniatureSelectionne.addClass('miniature-cachee'); |
var miniatureAffichee = miniatureSelectionne; |
|
|
if(element.hasClass('defilement-miniatures-gauche')) { |
if(miniatureSelectionne.prev('.miniature').length != 0) { |
miniatureAffichee = miniatureSelectionne.prev('.miniature'); |
1073,18 → 1075,18 |
|
function ajouterAutocompletionNoms() { |
$('#taxon').autocomplete({ |
source: function(requete, add){ |
source: function(requete, add){ |
// la variable de requête doit être vidée car sinon le parametre "term" est ajouté |
requete = ""; |
var url = getUrlAutocompletionNomsSci(); |
$.getJSON(url, requete, function(data) { |
$.getJSON(url, requete, function(data) { |
var suggestions = traiterRetourNomsSci(data); |
add(suggestions); |
add(suggestions); |
}); |
}, |
html: true |
}); |
|
|
$( "#taxon" ).bind("autocompleteselect", function(event, ui) { |
$("#taxon").data(ui.item); |
if (ui.item.retenu == true) { |
1103,11 → 1105,11 |
} |
|
function traiterRetourNomsSci(data) { |
var suggestions = []; |
var suggestions = []; |
if (data.resultat != undefined) { |
$.each(data.resultat, function(i, val) { |
val.nn = i; |
var nom = {label : '', value : '', nt : '', nomSel : '', nomSelComplet : '', numNomSel : '', |
var nom = {label : '', value : '', nt : '', nomSel : '', nomSelComplet : '', numNomSel : '', |
nomRet : '', numNomRet : '', famille : '', retenu : false |
}; |
if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) { |
1128,12 → 1130,12 |
// Tester dans ce sens, permet de considérer "absent" comme "false" => est-ce opportun ? |
// en tout cas c'est harmonisé avec le CeL |
nom.retenu = (val.retenu == 'true') ? true : false; |
|
|
suggestions.push(nom); |
} |
} |
}); |
} |
|
|
return suggestions; |
} |
|
1144,13 → 1146,13 |
* Dual licensed under the MIT or GPL Version 2 licenses. |
* |
* http://github.com/scottgonzalez/jquery-ui-extensions |
* |
* |
* Adaptation par Aurélien Peronnet pour la mise en gras des noms de taxons valides |
*/ |
(function( $ ) { |
var proto = $.ui.autocomplete.prototype, |
initSource = proto._initSource; |
|
|
function filter( array, term ) { |
var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" ); |
return $.grep( array, function(value) { |
1157,7 → 1159,7 |
return matcher.test( $( "<div>" ).html( value.label || value.value || value ).text() ); |
}); |
} |
|
|
$.extend( proto, { |
_initSource: function() { |
if ( this.options.html && $.isArray(this.options.source) ) { |
1172,7 → 1174,7 |
if (item.retenu == true) { |
item.label = "<strong>"+item.label+"</strong>"; |
} |
|
|
return $( "<li></li>" ) |
.data( "item.autocomplete", item ) |
.append( $( "<a></a>" )[ this.options.html ? "html" : "text" ]( item.label ) ) |