Subversion Repositories Sites.obs-saisons.fr

Compare Revisions

Ignore whitespace Rev 53 → Rev 54

/trunk/applications/saisie/squelettes/js/saisie.js
New file
0,0 → 1,368
/**
************************************************************************************************
************************************************************************************************
Fonction permettant de transformer les élements de la classe pliage en accordéon
************************************************************************************************
************************************************************************************************
**/
function initialiserElementsPliables() {
 
$('.pliage h4').addClass('lien_pliage');
 
$('.pliage ul').hide();
$('.pliage > ul:first-child').hide();
 
$('.lien_pliage').bind('click', function() {
$(this).nextAll('ul').slideToggle();
return false;
});
}
 
$('.pliage').ready(function() {
initialiserElementsPliables();
});
 
 
 
 
/**
************************************************************************************************
************************************************************************************************
Fonctions de gestion des onglets du formulaire de saisie d'espèce
************************************************************************************************
************************************************************************************************
**/
function initialiserOnglets() {
$(".contenu_onglet").hide();
$("ul.liste_onglets li:first").addClass("active").show();
$(".contenu_onglet:first").show();
 
$("ul.liste_onglets li").click(function() {
 
$("ul.liste_onglets li").removeClass("active");
$(this).addClass("active");
$(".contenu_onglet").hide();
 
var activeTab = $(this).find("a").attr("href");
$(activeTab).fadeIn();
return false;
});
}
 
$('.contenu_onglet').ready(function() {
initialiserOnglets();
});
 
function agrandirZoneCLicBoutonsRadios() {
$('.formulaire_informations_espece_mini').addClass("element_cliquable");
$('#form_saisie_espece').children('input[type="submit"]').hide();
$('.formulaire_informations_espece_mini').children('input[type="radio"]').hide();
$('.titre_type').hide();
$('.formulaire_informations_espece_mini').bind('click',function() {
$(this).children('input[type="radio"]').attr('checked','checked');
$('.formulaire_informations_espece_mini').removeClass('element_clique');
$(this).addClass('element_clique');
$('#form_saisie_espece').submit();
});
}
 
$('#form_saisie_espece').ready(function() {
agrandirZoneCLicBoutonsRadios();
});
 
 
 
 
/**
************************************************************************************************
************************************************************************************************
Fonctions permettant de transformer les cases du tableau d'évenements en mini formulaire
************************************************************************************************
************************************************************************************************
**/
 
htmlEnCours = '';
elementEnCours = null;
 
function initialiserLignesCliquables() {
$('.conteneur_element_modifier').hide();
$(".date_observation_individu").each(function() {
$(this).bind('click', function() {
if($(this).hasClass('element_clique')) {
return false;
} else {
conteneur_obs = $(this).children('span');
id_formulaire = conteneur_obs.attr('id');
remplacerElementDateParFormulaireAjax(id_formulaire, $(this));
return false;
}
});
});
}
 
function initialiserCalendrierFormulaire() {
anneeEnCours = $("#annee_en_cours").attr("value");
if(typeof(anneeEnCours)=='undefined'){
dateCourante = new Date();
anneeEnCours = dateCourante.getFullYear();
}
$(".calendrier").each(function() {
$(this).find("input").datepicker({
disabled: true,
altFormat: 'dd/mm/yyyy',
minDate: '01/01/'+anneeEnCours,
maxDate: '31/12/'+anneeEnCours
});
});
}
 
$(document).ready(function() {
initialiserCalendrierFormulaire();
 
});
 
/** Fonctions de manipulation des éléments du tableau pour les transformer en élements cliquables et calendriers **/
function initialiserMiniCalendrierFormulaire(id_element) {
anneeEnCours = jQuery.trim($("#annee_en_cours").html());
if(typeof(anneeEnCours)=='undefined'){
dateCourante = new Date();
anneeEnCours = dateCourante.getFullYear();
}
$('#'+id_element).datepicker({
disabled: true,
altFormat: 'dd/mm/yyyy',
minDate: '01/01/'+anneeEnCours,
maxDate: '31/12/'+anneeEnCours
});
}
 
function remplacerElementDateParFormulaireAjax(id_element, conteneur_selectionne) {
if(elementEnCours != null) {
elementEnCours.removeClass('element_clique');
elementEnCours.html(htmlEnCours);
}
elementEnCours = conteneur_selectionne;
htmlEnCours = conteneur_selectionne.html();
conteneur_obs = $('#'+id_element);
valeur_date = conteneur_obs.html();
valeur_date = valeur_date.replace('-','');
conteneur_selectionne.addClass('element_clique');
conteneur_selectionne.html('<span class="calendrier"><input type="text" value="'+jQuery.trim(valeur_date)+'" class="calendrier" id="'+id_formulaire+'" size="10" maxlenght="10" /><input id="valider_formulaire_ajax" class="valider_formulaire" type="button" value="OK" /></div>');
initialiserMiniCalendrierFormulaire(id_formulaire);
$('#valider_formulaire_ajax').bind('click', function() {
donnees_obs = collecterDonneesMiniFormulaire(id_formulaire);
envoyerRequeteAjaxValidationMiniFormulaire(donnees_obs, id_formulaire);
return true;
});
}
 
function remplacerMiniFormulaireParElementDate(id_element) {
elementEnCours.html('<span id="'+id_element+'">'+valeur_date_pour_stade+' </span>');
elementEnCours.removeClass('element_clique');
elementEnCours = null;
elementEnCours = null;
}
 
 
/** Fonctions d'envoi et de récupération des élements du formulaire ajax **/
function envoyerRequeteAjaxValidationMiniFormulaire(donnees_obs, id_formulaire) {
url_page_courante = document.URL.replace('module=Individu&action=afficherListeIndividu','module=Observation&action=validerFormulaireModificationObservationAjax');
$.post(url_page_courante, donnees_obs, function(data) {
var obj_retour = jQuery.parseJSON(data);
if(obj_retour.reponse === 'OK') {
remplacerMiniFormulaireParElementDate(id_formulaire);
}
});
}
 
function collecterDonneesMiniFormulaire(id_formulaire) {
valeur_date_pour_stade = $('#'+id_formulaire).val();
if(valeur_date_pour_stade == null || jQuery.trim(valeur_date_pour_stade) == '') {
return false ;
}
id_individu_stade_obs = id_formulaire.split('_');
stade_obs = 'observation_'+id_individu_stade_obs[3];
date_annee_en_cours = jQuery.trim($("#annee_en_cours").html());
donnees_obs = { "id_individu": id_individu_stade_obs[1],
"annee_en_cours": date_annee_en_cours ,
};
donnees_obs['observation_'+id_individu_stade_obs[3]] = valeur_date_pour_stade;
return donnees_obs;
}
 
 
$('#saisie_liste_evenements').ready(function() {
initialiserLignesCliquables();
});
 
 
 
 
/**
************************************************************************************************
************************************************************************************************
Fonctions concernant la carte permettant de pointer d'afficher l'emplacement des stations
************************************************************************************************
************************************************************************************************
**/
var map;
var marker;
 
function ajouterListenerFormulaireSaisieLatLon() {
$('#cacher_afficher_lien').bind('click', function() {
$('#conteneur_form_liens_lat_lon').slideToggle();
return false;
});
$('input#station_lat').bind('blur', function() {
verifierEtLocaliserCoordonnees();
});
$('input#station_lon').bind('blur', function() {
verifierEtLocaliserCoordonnees();
});
$('input#localiser_lat_lon').click(function() {
verifierEtLocaliserCoordonnees();
});
$('#conteneur_form_liens_lat_lon').hide();
}
 
function carteEstEnSaisie() {
return ($('#conteneur_form_liens_lat_lon').length > 0);
}
 
function verifierEtLocaliserCoordonnees() {
lat ;
lon;
if(carteEstEnSaisie()) {
lat = $('#station_lat').val();
lon = $('#station_lon').val();
} else {
var lat = jQuery.trim($('#station_lat').html());
var lon = jQuery.trim($('#station_lon').html());
}
if(jQuery.trim(lat) == '' || jQuery.trim(lon) == '') {
return;
}
if(!isNaN(lat) && lat.length > 0 && !isNaN(lon) && lon.length > 0) {
} else {
window.alert("coordonnées invalides");
}
var positionMarker = new google.maps.LatLng(lat, lon);
marker.setPosition(positionMarker);
map.setCenter(positionMarker);
}
 
function mettreAJourValeursFormulaire(latlon) {
 
latlon = latlon.toString().split(',');
$('#station_lat').val(latlon[0].replace('(', ''));
$('#station_lon').val(latlon[1].replace(')', ''));
}
 
function initialiserCarte() {
 
if($('#map_canvas').length == 0) {
return;
}
 
var latlng = new google.maps.LatLng(47.0504, 2.2347);
var myOptions = {
zoom: 6,
center: latlng,
mapTypeId: google.maps.MapTypeId.HYBRID
};
 
map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
marker = new google.maps.Marker({
position: latlng,
title:""
});
if (carteEstEnSaisie()) {
marker.setDraggable(true);
google.maps.event.addListener(marker, 'dragend', function() {
mettreAJourValeursFormulaire(marker.getPosition());
});
$('#conteneur_form_liens_lat_lon').ready(function() {
verifierEtLocaliserCoordonnees();
ajouterListenerFormulaireSaisieLatLon();
});
} else {
marker.setDraggable(false);
$('#conteneur_liens_lat_lon').ready(function() {
verifierEtLocaliserCoordonnees();
});
}
marker.setClickable(true);
// To add the marker to the map, call setMap();
marker.setMap(map);
}
 
$('#map_canvas').ready(function() {
initialiserCarte();
});