1,5 → 1,14 |
//+---------------------------------------------------------------------------------------------------------+ |
// GÉNÉRAL |
// GÉNÉRAL => OK |
$(document).ready(function() { |
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 => OK |
/** |
* Stope l'évènement courrant quand on clique sur un lien. |
* Utile pour Chrome, Safari... |
10,23 → 19,110 |
if (evenement.stopPropagation) { |
evenement.stopPropagation(); |
} |
if (evenement.preventDefault) { |
evenement.preventDefault(); |
} |
return false; |
} |
|
// TODO : voir si cette fonction est bien utile. Résoud le pb d'un warning sous chrome. |
(function(){ |
// remove layerX and layerY |
var all = $.event.props, |
len = all.length, |
res = []; |
while (len--) { |
var el = all[len]; |
if (el != 'layerX' && el != 'layerY') res.push(el); |
function extraireEnteteDebug(jqXHR) { |
var msgDebug = ''; |
if (jqXHR.getResponseHeader('X-DebugJrest-Data') != '') { |
var debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader('X-DebugJrest-Data')); |
if (debugInfos != null) { |
$.each(debugInfos, function (cle, valeur) { |
msgDebug += valeur + "\n"; |
}); |
} |
} |
$.event.props = res; |
}()); |
return msgDebug; |
} |
|
function afficherPanneau(selecteur) { |
$(selecteur).fadeIn('slow').delay(DUREE_MESSAGE).fadeOut('slow'); |
} |
|
//+----------------------------------------------------------------------------------------------------------+ |
//FORM IDENTITE : gestion de l'observateur => OK |
|
$(document).ready(function() { |
$('#courriel').on('blur', requeterIdentite); |
$('#courriel').on('keypress', testerLancementRequeteIdentite); |
}); |
|
function testerLancementRequeteIdentite(event) { |
if (event.which == 13) { |
requeterIdentite(); |
event.preventDefault(); |
event.stopPropagation(); |
} |
} |
|
function requeterIdentite() { |
var courriel = $('#courriel').val(); |
//TODO: mettre ceci en paramètre de config |
var urlAnnuaire = SERVICE_ANNUAIRE_ID_URL + courriel; |
$.ajax({ |
url: urlAnnuaire, |
type: 'GET', |
success: function(data, textStatus, jqXHR) { |
if (data != undefined && data[courriel] != undefined) { |
var infos = data[courriel]; |
$('#id_utilisateur').val(infos.id); |
$('#prenom').val(infos.prenom); |
$('#nom').val(infos.nom); |
$('#courriel_confirmation').val(courriel); |
$('#prenom, #nom, #courriel_confirmation').attr('disabled', 'disabled'); |
$('#structure').focus(); |
} else { |
surErreurCompletionCourriel(); |
} |
}, |
error: function(jqXHR, textStatus, errorThrown) { |
surErreurCompletionCourriel(); |
}, |
complete: function(jqXHR, textStatus) { |
$('#zone-prenom-nom').removeClass('hidden'); |
$('#zone-courriel-confirmation').removeClass('hidden'); |
} |
}); |
} |
|
function surErreurCompletionCourriel() { |
$('#prenom, #nom, #courriel_confirmation').val(''); |
$('#prenom, #nom, #courriel_confirmation').removeAttr('disabled'); |
afficherPanneau('#dialogue-courriel-introuvable'); |
} |
|
function formaterNom() { |
$(this).val($(this).val().toUpperCase()); |
} |
|
function formaterPrenom() { |
var prenom = new Array(), |
mots = $(this).val().split(' '); |
for (var i = 0; i < mots.length; i++) { |
var mot = mots[i]; |
if (mot.indexOf('-') >= 0) { |
var prenomCompose = new Array(), |
motsComposes = mot.split('-'); |
for (var j = 0; j < motsComposes.length; j++) { |
var motSimple = motsComposes[j], |
motMajuscule = motSimple.charAt(0).toUpperCase() + motSimple.slice(1); |
prenomCompose.push(motMajuscule); |
} |
prenom.push(prenomCompose.join('-')); |
} else { |
var motMajuscule = mot.charAt(0).toUpperCase() + mot.slice(1); |
prenom.push(motMajuscule); |
} |
} |
$(this).val(prenom.join(' ')); |
} |
|
|
|
//+----------------------------------------------------------------------------------------------------------+ |
//UPLOAD PHOTO : Traitement de l'image |
$(document).ready(function() { |
$('#effacer-miniature').click(function () { |
221,7 → 317,7 |
map: map, |
draggable: true, |
title: 'Début de la portion de rue étudiée', |
icon: MARQUEUR_ICONE_DEBUT_URL, |
icon: GOOGLE_MAP_MARQUEUR_DEBUT_URL, |
position: latLng |
}); |
|
337,7 → 433,7 |
map: map, |
draggable: true, |
title: 'Fin de la portion de rue étudiée', |
icon: MARQUEUR_ICONE_FIN_URL, |
icon: GOOGLE_MAP_MARQUEUR_FIN_URL, |
position: latLngFin |
}); |
|
462,10 → 558,28 |
} |
|
//+---------------------------------------------------------------------------------------------------------+ |
// FORMULAIRE |
//FORMULAIRE : traitements génériques |
|
$(document).ready(function() { |
$('#date').datepicker($.datepicker.regional['fr']); |
$('#prenom').on('change', formaterPrenom); |
$('#nom').on('change', formaterNom); |
|
configurerDatePicker('#date'); |
$('#taxon-liste').on('change', surChangementTaxonListe); |
$('.alert .close').on('click', fermerPanneauAlert); |
|
$('.has-tooltip').tooltip('enable'); |
$('#btn-aide').on('click', basculerAffichageAide); |
|
ajouterAutocompletionNoms(); |
|
configurerFormValidator(); |
definirReglesFormValidator(); |
|
|
//------------------------------------------------------------------------------------------------------- |
// A NETTOYER : |
|
$.validator.addMethod( |
'dateCel', |
function (value, element) { |
473,31 → 587,6 |
}, |
'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.'); |
|
$('form#saisie-obs').validate({ |
rules: { |
courriel: { |
required: true, |
email: true}, |
courriel_confirmation: { |
required: true, |
equalTo: '#courriel' |
}, |
rue_cote: 'required', |
'milieu[]': { |
required: true, |
minlength: 1 |
}, |
latitude: { |
required: true, |
range: [-90, 90]}, |
longitude: { |
required: true, |
range: [-180, 180]}, |
date: { |
required: true, |
dateCel: true}, |
taxon: 'required' |
}, |
messages: { |
'milieu[]': 'Vous devez sélectionner au moins un milieu' |
} |
678,6 → 767,112 |
}); |
}); |
|
function configurerFormValidator() { |
$.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.'); |
|
$.extend($.validator.defaults, { |
ignore: [],// Forcer Jquery Validate à examiner les éléments avec en display:none; |
highlight: function(element) { |
$(element).closest('.control-group').removeClass('success').addClass('error'); |
}, |
success: function(element) { |
element.text('OK!').addClass('valid'); |
element.closest('.control-group').removeClass('error').addClass('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', ''); |
} |
} |
} |
}); |
} |
|
function definirReglesFormValidator() { |
$('#form-observateur').validate({ |
rules: { |
courriel: { |
required: true, |
email: true}, |
courriel_confirmation: { |
required: true, |
equalTo: '#courriel'}, |
prenom: { |
required: true}, |
nom: { |
required: true} |
} |
}); |
$('#form-obs').validate({ |
rules: { |
station: { |
required: true}, |
latitude : { |
required: true, |
range: [-90, 90]}, |
longitude: { |
required: true, |
range: [-180, 180]}, |
date: { |
required: true, |
'dateCel' : true}, |
rue_cote: { |
required: true}, |
'taxon-liste': { |
required: true}, |
'milieux[]': { |
required: true, |
minlength: 1} |
}, |
errorPlacement: function(error, element) { |
if (element.attr('name') == 'date') { |
element.parent('.input-prepend').after(error); |
} else if (element.attr('name') == 'milieux[]') { |
error.insertAfter('#milieux-controls'); |
} else { |
error.insertAfter(element); |
} |
}, |
messages: { |
'milieu[]': 'Vous devez sélectionner au moins un milieu' |
} |
}); |
} |
|
function surChangementTaxonListe() { |
if ($('#taxon-liste').val() === '?') { |
$('#taxon-input-groupe').removeClass('hidden'); |
} else { |
$('#taxon-input-groupe').addClass('hidden'); |
} |
} |
|
function configurerDatePicker(selector) { |
$.datepicker.setDefaults($.datepicker.regional['fr']); |
$(selector).datepicker({ |
dateFormat: 'dd/mm/yy', |
showOn: 'button', |
buttonImageOnly: true, |
buttonImage: CALENDRIER_ICONE_URL, |
buttonText: 'Afficher le calendrier pour saisir la date.', |
showButtonPanel: true, |
onSelect: function(date) { |
$(this).valid(); |
} |
}); |
$(selector + ' + img.ui-datepicker-trigger').appendTo(selector + '-icone.add-on'); |
} |
|
function getB64ImgOriginal() { |
var b64 = ''; |
if ($("#miniature-img").hasClass('b64')) { |