1,4 → 1,40 |
//+---------------------------------------------------------------------------------------------------------+ |
// GÉNÉRAL |
var DEBUG = false; // Mettre à true pour afficher les messages de débogage |
/** |
* Stope l'évènement courrant quand on clique sur un lien. |
* Utile pour Chrome, Safari... |
* @param evenement |
* @return |
*/ |
function arreter(evenement) { |
if (evenement.stopPropagation) { |
evenement.stopPropagation(); |
} |
return false; |
} |
|
//+---------------------------------------------------------------------------------------------------------+ |
// FORMULAIRE |
|
$(function() { |
$("#saisie-obs").validate({ |
rules: { |
prenom : "required", |
nom : "required", |
courriel : { |
required : true, |
email : true}, |
courriel_confirmation : { |
required : true, |
equalTo: "#courriel" |
}, |
milieu : "required", |
latitude : "required", |
longitude : "required" |
} |
}); |
|
$("#date").datepicker($.datepicker.regional['fr']); |
|
$("#courriel-confirmation").bind('paste', function(e) { |
6,37 → 42,254 |
return false; |
}); |
|
$("#localiser-gg-map").fancybox({ |
'modal' : true, |
'autoDimensions' : true, |
'titleShow' : false, |
'onClosed' : function() { |
$("#gg-map").hide(); |
}, |
'onStart' : function(e) { |
arreter(e); |
$("#gg-map-localisation").height($(window).height() - 100); |
$("#gg-map-carte").height($(window).height() - 230); |
$("#gg-map-localisation").width($(window).width() - 100); |
}, |
'onComplete' : function() { |
initialiserCarte(); |
} |
}); |
|
$("#valider-coordonnees").click(function(e) { |
var coordonnees = $("#marqueur-coordonnees").data('latLon'); |
if (coordonnees != undefined) { |
$("#latitude").val(coordonnees.lat); |
$("#longitude").val(coordonnees.lon); |
} |
$.fancybox.close(); |
}); |
$("#annuler-coordonnees").bind('click', function(e) { |
$.fancybox.close(); |
}); |
|
var obsNumero = 0; |
$("#ajouter-obs").click(function(e) { |
obsNumero = obsNumero + 1; |
$("#liste-obs tbody").append( |
'<tr id="obs-'+obsNumero+'">'+ |
'<td>'+obsNumero+'</td>'+ |
'<td>'+$("#date").val()+'</td>'+ |
'<td>'+$("#taxon option:selected").text()+'</td>'+ |
'<td>'+$("#notes").val()+'</td>'+ |
'<td><button class="supprimer-obs" value="'+obsNumero+'">Supprimer</button></td>'+ |
'</tr>'); |
$("#liste-obs").data('obs-id:'+obsNumero, {'date' : $("#date").val(), 'taxon' : $("#taxon").val()}); |
$("#ajouter-obs").bind('click', function(e) { |
if ($("#saisie-obs").valid() == false) { |
$("#dialogue-form-invalide").dialog(); |
} else { |
obsNumero = obsNumero + 1; |
$("#liste-obs tbody").append( |
'<tr id="obs'+obsNumero+'" class="obs">'+ |
'<td>'+obsNumero+'</td>'+ |
'<td>'+$("#date").val()+'</td>'+ |
'<td>'+$("#taxon option:selected").text()+'</td>'+ |
'<td>'+$("#milieu option:selected").text()+'</td>'+ |
'<td>'+$("#latitude").val()+'</td>'+ |
'<td>'+$("#longitude").val()+'</td>'+ |
'<td>'+$("#notes").val()+'</td>'+ |
'<td><button class="supprimer-obs" value="'+obsNumero+'" title="'+obsNumero+'">Supprimer</button></td>'+ |
'</tr>'); |
var numNomSel = $("#taxon").val(); |
$("#liste-obs").data('obsId'+obsNumero, { |
'date' : $("#date").val(), |
'num_nom_sel' : numNomSel, |
'nom_sel' : taxons[numNomSel]['nom_sel'], |
'nom_ret' : taxons[numNomSel]['nom_ret'], |
'num_nom_ret' : taxons[numNomSel]['num_nom_ret'], |
'num_taxon' : taxons[numNomSel]['num_taxon'], |
'famille' : taxons[numNomSel]['famille'], |
'nom_fr' : taxons[numNomSel]['nom_fr'], |
'milieu' : $("#milieu option:selected").val(), |
'latitude' : $("#latitude").val(), |
'longitude' : $("#longitude").val(), |
'tag' : 'Biodiversite34', |
'notes' : $("#notes").val()}); |
} |
}); |
|
$(".supprimer-obs").live('click', function() { |
var obsId = $(this).val(); |
$('#obs-'+obsId).remove(); |
$("#liste-obs").removeData('obs-id:'+obsId) |
// Problème avec IE 6 et 7 |
if (obsId == "Supprimer") { |
obsId = $(this).attr("title"); |
} |
|
$('#obs'+obsId).remove(); |
$("#liste-obs").removeData('obsId'+obsId) |
}); |
|
$( "#tramsmettre-obs").click(function(e) { |
$("#tramsmettre-obs").click(function(e) { |
var observations = $("#liste-obs").data(); |
if (observations == undefined) { |
|
if (observations == undefined || jQuery.isEmptyObject(observations)) { |
$("#dialogue-zero-obs").dialog(); |
} else if ($("#saisie-obs").valid() == false) { |
$("#dialogue-form-invalide").dialog(); |
} else { |
$.each(observations, function (obsId, value) { |
$.each(value, function (key, value) { |
alert(obsId+' : '+key + '=' + value); |
}); |
var utilisateur = new Object(); |
utilisateur.prenom = $("#prenom").val(); |
utilisateur.nom = $("#nom").val(); |
utilisateur.courriel = $("#courriel").val(); |
observations['utilisateur'] = utilisateur; |
|
//"http://localhost/cel-jrest/CelWidgetSaisie" |
$.ajax({ |
url : "http://www.tela-botanica.org/eflore-test/cel2/jrest/CelWidgetSaisie", |
type : "POST", |
data : observations, |
context : document.body, |
beforeSend : function() { |
$("#msg").remove(); |
$("#msg-erreur").remove(); |
$("#msg-debug").remove(); |
}, |
statusCode : { |
500 : function(jqXHR, textStatus, errorThrown) { |
$("#dialogue-obs-transaction").append('<p id="msg">Un problème est survenu lors de la transmission de vos observations.</p>'); |
reponse = jQuery.parseJSON(jqXHR.responseText); |
var erreurMsg = ""; |
if (reponse != null) { |
$.each(reponse, function (cle, valeur) { |
erreurMsg += valeur + "<br />"; |
}); |
} |
|
$("#dialogue-obs-transaction").append('<p id="msg-erreur">Erreur 500 : '+errorThrown+"<br />"+erreurMsg+'</p>'); |
} |
}, |
success : function(data, textStatus, jqXHR) { |
$("#dialogue-obs-transaction").append('<p id="msg">Vos observations ont bien été transmises.</p>'); |
}, |
complete : function(jqXHR, textStatus) { |
var debugMsg = ""; |
if (DEBUG && jqXHR.getResponseHeader("X-DebugJrest-Data") != '') { |
debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data")); |
if (debugInfos != null) { |
$.each(debugInfos, function (cle, valeur) { |
debugMsg += valeur + "<br />"; |
}); |
$("#dialogue-obs-transaction").append('<pre id="msg-debug">Débogage : '+debugMsg+'</pre>'); |
} |
} |
|
$("#dialogue-obs-transaction").dialog(); |
$("#liste-obs").removeData(); |
$('.obs').remove(); |
obsNumero = 0; |
}, |
|
}); |
} |
return false; |
}); |
}); |
|
//+---------------------------------------------------------------------------------------------------------+ |
// GOOGLE MAP |
|
var geocoder; |
var latLng; |
var map; |
var marker; |
var osmMapType; |
function initialiserCarte() { |
geocoder = new google.maps.Geocoder(); |
latLng = new google.maps.LatLng(43.577, 3.455); |
osmMapType = new google.maps.ImageMapType({ |
getTileUrl: function(coord, zoom) { |
return "http://tile.openstreetmap.org/" + |
zoom + "/" + coord.x + "/" + coord.y + ".png"; |
}, |
tileSize: new google.maps.Size(256, 256), |
isPng: true, |
alt: "OpenStreetMap", |
name: "OSM", |
maxZoom: 19 |
}); |
}); |
map = new google.maps.Map(document.getElementById('gg-map-carte'), { |
zoom: 9, |
center: latLng, |
mapTypeId: google.maps.MapTypeId.ROADMAP, |
mapTypeControlOptions: { |
mapTypeIds: ['OSM', google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.HYBRID, google.maps.MapTypeId.SATELLITE, google.maps.MapTypeId.TERRAIN], |
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU} |
}); |
|
map.mapTypes.set('OSM', osmMapType); |
map.setMapTypeId(google.maps.MapTypeId.HYBRID); |
|
marker = new google.maps.Marker({ |
position: latLng, |
title: 'Ma station', |
map: map, |
draggable: true |
}); |
|
// Update current position info. |
mettreAJourMarkerPosition(latLng); |
geocoderPosition(latLng); |
|
// Add dragging event listeners. |
google.maps.event.addListener(marker, 'dragstart', function() { |
mettreAJourMarkerAdresse('Marqueur de station début du déplacement...'); |
}); |
|
google.maps.event.addListener(marker, 'drag', function() { |
mettreAJourMarkerStatut('Marqueur de station en cours de déplacement...'); |
mettreAJourMarkerPosition(marker.getPosition()); |
}); |
|
google.maps.event.addListener(marker, 'dragend', function() { |
mettreAJourMarkerStatut('Marqueur de station déplacé (glisser/déposer).'); |
mettreAJourMarkerPosition(marker.getPosition()); |
geocoderPosition(marker.getPosition()); |
}); |
|
google.maps.event.addListener(map, 'click', function(event) { |
deplacerMarker(event.latLng); |
}); |
} |
|
function geocoderPosition(pos) { |
if (geocoder != undefined) { |
geocoder.geocode({ |
latLng: pos |
}, function(responses, status) { |
if (status == google.maps.GeocoderStatus.OK) { |
if (responses && responses.length > 0) { |
mettreAJourMarkerAdresse(responses[0].formatted_address); |
console.log(responses); |
} else { |
mettreAJourMarkerAdresse("Impossible de trouver d'adresse pour cette position."); |
} |
} else { |
mettreAJourMarkerAdresse("Un problème de géolocalisation est survenu : "+status+"."); |
} |
}); |
} |
} |
|
function mettreAJourMarkerStatut(str) { |
document.getElementById('marqueur-statut').innerHTML = str; |
} |
|
function mettreAJourMarkerPosition(latLng) { |
document.getElementById('marqueur-coordonnees').innerHTML = [ |
latLng.lat().toFixed(5), |
latLng.lng().toFixed(5) |
].join(', '); |
$("#marqueur-coordonnees").data('latLon', {'lat' : latLng.lat().toFixed(5), 'lon' : latLng.lng().toFixed(5)}); |
} |
|
function mettreAJourMarkerAdresse(str) { |
document.getElementById('marqueur-adresse').innerHTML = str; |
} |
|
function deplacerMarker(latLon) { |
if (marker != undefined) { |
marker.setPosition(latLon); |
mettreAJourMarkerStatut('Marqueur de station déplacé (clic).'); |
mettreAJourMarkerPosition(marker.getPosition()); |
geocoderPosition(marker.getPosition()); |
} |
} |