Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 302 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 302 Rev 320
Line 1... Line 1...
1
function getUrlBaseJrest() {
1
function getUrlBaseJrest() {
2
	return urlBaseJrest;
2
	return urlBaseJrest;
3
}
3
}
Line 4... Line 4...
4
 
4
 
5
/** 
5
/**
6
	************************************************************************************************
6
	************************************************************************************************
7
	************************************************************************************************
7
	************************************************************************************************
8
	
8
 
9
	   Fonction permettant de transformer les élements de la classe pliage en accordéon
9
	   Fonction permettant de transformer les élements de la classe pliage en accordéon
10
	
10
 
11
	************************************************************************************************
11
	************************************************************************************************
12
	************************************************************************************************
12
	************************************************************************************************
13
**/  
13
**/
Line 14... Line 14...
14
function initialiserElementsPliables() {
14
function initialiserElementsPliables() {
Line 15... Line 15...
15
 
15
 
Line 20... Line 20...
20
 
20
 
21
	$('.1er_element_date ul').show();
21
	$('.1er_element_date ul').show();
Line 22... Line 22...
22
	$('.1er_element_date > ul:first-child').show();
22
	$('.1er_element_date > ul:first-child').show();
23
 
23
 
24
	$('.lien_pliage').bind('click', function() {
24
	$('.lien_pliage').bind('click', function() {
25
		
25
 
26
		$(this).nextAll('ul').slideToggle();
26
		$(this).nextAll('ul').slideToggle();
27
		return false;
27
		return false;
Line 28... Line 28...
28
	});
28
	});
29
}
29
}
30
 
30
 
Line 31... Line 31...
31
$('.pliage').ready(function() {
31
$('.pliage').ready(function() {
32
	initialiserElementsPliables();
32
	initialiserElementsPliables();
33
});
33
});
34
 
34
 
35
 
35
 
36
/** 
36
/**
37
	************************************************************************************************
37
	************************************************************************************************
38
	************************************************************************************************
38
	************************************************************************************************
39
	
39
 
40
	   Fonctions de gestion des onglets du formulaire de saisie d'espèce
40
	   Fonctions de gestion des onglets du formulaire de saisie d'espèce
41
	
41
 
42
	************************************************************************************************
42
	************************************************************************************************
43
	************************************************************************************************
43
	************************************************************************************************
Line 44... Line 44...
44
**/  
44
**/
Line 45... Line 45...
45
function initialiserOnglets() {
45
function initialiserOnglets() {
46
	$(".contenu_onglet").hide(); 
46
	$(".contenu_onglet").hide();
47
	$("ul.liste_onglets li:first").addClass("active").show(); 
47
	$("ul.liste_onglets li:first").addClass("active").show();
Line 48... Line 48...
48
	$(".contenu_onglet:first").show();
48
	$(".contenu_onglet:first").show();
49
 
49
 
50
	$("ul.liste_onglets li").click(function() {
50
	$("ul.liste_onglets li").click(function() {
51
 
51
 
52
		$("ul.liste_onglets li").removeClass("active"); 
52
		$("ul.liste_onglets li").removeClass("active");
Line 53... Line 53...
53
		$(this).addClass("active"); 
53
		$(this).addClass("active");
54
		$(".contenu_onglet").hide();
54
		$(".contenu_onglet").hide();
55
 
55
 
Line 56... Line 56...
56
		var activeTab = $(this).find("a").attr("href"); 
56
		var activeTab = $(this).find("a").attr("href");
57
		$(activeTab).fadeIn();
57
		$(activeTab).fadeIn();
58
		return false;
58
		return false;
59
	});
59
	});
60
}
60
}
61
 
61
 
62
$('.contenu_onglet').ready(function() {
62
$('.contenu_onglet').ready(function() {
63
	initialiserOnglets();
63
	initialiserOnglets();
64
});
64
});
65
 
65
 
66
function agrandirZoneCLicBoutonsRadios() {
66
function agrandirZoneCLicBoutonsRadios() {
67
	
67
 
68
	$('.formulaire_informations_espece_mini').addClass("element_cliquable");
68
	$('.formulaire_informations_espece_mini').addClass("element_cliquable");
69
	
69
 
70
	$('#form_saisie_espece').children('input[type="submit"]').hide();
70
	$('#form_saisie_espece').children('input[type="submit"]').hide();
71
	$('.formulaire_informations_espece_mini').children('input[type="radio"]').hide();
71
	$('.formulaire_informations_espece_mini').children('input[type="radio"]').hide();
Line 72... Line 72...
72
	$('.titre_type').hide();
72
	$('.titre_type').hide();
73
	
73
 
74
	$('.formulaire_informations_espece_mini').bind('click',function() {
74
	$('.formulaire_informations_espece_mini').bind('click',function() {
Line 75... Line 75...
75
		$(this).children('input[type="radio"]').attr('checked','checked');
75
		$(this).children('input[type="radio"]').attr('checked','checked');
76
		$('.formulaire_informations_espece_mini').removeClass('element_clique');
76
		$('.formulaire_informations_espece_mini').removeClass('element_clique');
77
		$(this).addClass('element_clique');
77
		$(this).addClass('element_clique');
78
		
78
 
79
		$('#form_saisie_espece').submit();
79
		$('#form_saisie_espece').submit();
80
	});	
80
	});
81
}
81
}
82
 
82
 
83
$('#form_saisie_espece').ready(function() {
83
$('#form_saisie_espece').ready(function() {
Line 84... Line 84...
84
	agrandirZoneCLicBoutonsRadios();
84
	agrandirZoneCLicBoutonsRadios();
85
});
85
});
86
 
86
 
-
 
87
 
Line 87... Line 88...
87
 
88
 
88
 
89
 
89
 
90
/**
90
/** 
-
 
91
	************************************************************************************************
-
 
92
	************************************************************************************************
-
 
93
	
-
 
94
	   Fonctions permettant de transformer les cases du tableau d'évenements en mini formulaire
-
 
95
	
-
 
96
	************************************************************************************************
-
 
97
	************************************************************************************************
-
 
98
**/
-
 
99
 
-
 
100
htmlEnCours = '';
-
 
101
elementEnCours = null;
-
 
102
ancienneValeurEnCours = null;
-
 
103
 
-
 
104
function initialiserLignesCliquables() {
-
 
105
	
-
 
106
	$('.conteneur_element_modifier').hide();
-
 
107
	
-
 
108
	$(".date_observation_individu").each(function() {
-
 
Line 109... Line -...
109
		
-
 
110
		$(this).bind('click', function() {
-
 
111
			
-
 
112
			if($(this).hasClass('element_clique')) {
-
 
113
				return false;
-
 
114
			} else {
91
	************************************************************************************************
115
				
-
 
116
				conteneur_obs = $(this).children('span');
-
 
117
				id_formulaire = conteneur_obs.attr('id');
-
 
118
				
-
 
119
				remplacerElementDateParFormulaireAjax(id_formulaire, $(this));
92
	************************************************************************************************
120
										
-
 
121
				return false;
-
 
122
			}
-
 
123
		});
-
 
Line 124... Line 93...
124
	});	
93
 
125
}
94
	   Fonctions permettant de transformer les cases du tableau d'évenements en mini formulaire
-
 
95
 
Line -... Line 96...
-
 
96
	************************************************************************************************
-
 
97
	************************************************************************************************
-
 
98
**/
-
 
99
 
-
 
100
htmlEnCours = '';
-
 
101
elementEnCours = null;
-
 
102
ancienneValeurEnCours = null;
-
 
103
id_formulaire = null;
-
 
104
 
126
 
105
function initialiserLignesCliquables() {
Line -... Line 106...
-
 
106
 
-
 
107
	$('.conteneur_element_modifier').hide();
-
 
108
 
127
function initialiserCalendrierFormulaire() {
109
	$(".date_observation_individu").live("click", function(e) {
128
	
110
		e.preventDefault();
129
	dateMin = getDateMinCalendrier();
111
 
130
	dateMax = getDateMaxCalendrier();
112
		if($(e.target).hasClass('conteneur_supprimer_observation') || $(e.target).hasClass('supprimer_observation')) {
-
 
113
			return;
Line 131... Line 114...
131
	
114
		}
132
	$(".calendrier").each(function() {
-
 
133
		$(this).find("input").datepicker({
115
 
134
			disabled: true,
-
 
135
			altFormat: 'dd/mm/yyyy',
116
		$('.element_clique').removeClass('element_clique');
136
			minDate: dateMin,
117
		if($(this).hasClass('element_clique')) {
137
			maxDate: dateMax
118
			fermerDatePicker();
138
		
119
			return false;
139
		});
120
		} else {
140
	});
-
 
141
}
121
			$(this).addClass('element_clique');
Line 142... Line 122...
142
 
122
			afficherSaisieObservation($(this));
143
$(document).ready(function() {
-
 
144
	initialiserCalendrierFormulaire();
-
 
145
 
-
 
146
});
-
 
147
 
-
 
Line 148... Line 123...
148
function estUneDateValide(peutEtreUneDate) {
123
			return false;
149
	var reg= new RegExp("^[0-3][0-9][/]{1}[0-1][0-2][/]{1}[0-9]{4}$","g");
124
		}
150
	return reg.test(peutEtreUneDate);
125
	});
151
}
-
 
152
 
126
 
153
function getAnneeEnCoursDeConsultation() {
127
	$(".date_observation_individu .conteneur_supprimer_observation").live("click", function(e) {
-
 
128
		e.preventDefault();
154
	
129
		if(window.confirm('Êtes-vous sûr de vouloir supprimer cette observation ?')) {
155
	anneeEnCours = jQuery.trim($("#annee_en_cours").html());
-
 
-
 
130
			// les obs ne sont jamais vraiment supprimées
-
 
131
			// mais seulement remplacées par des dates au format 00/00/yyyy
-
 
132
			envoyerRequeteAjaxSaisieObservation('', $(this).parent('.date_observation_individu'));
156
	
133
		}
157
	if(typeof(anneeEnCours)=='undefined'){ 
134
	});
158
		dateCourante = new Date(); 
135
 
159
		anneeEnCours = dateCourante.getFullYear(); 
-
 
160
	}
-
 
161
	
-
 
Line 162... Line -...
162
	return anneeEnCours;
-
 
163
}
-
 
164
 
-
 
165
function getDateMinCalendrier() {
136
	// pour fermer le datepicker sur esc
166
	anneeEnCours = getAnneeEnCoursDeConsultation();
-
 
167
	dateMin = '01/01/'+anneeEnCours;
-
 
168
	
-
 
169
	return dateMin;
-
 
170
}
137
	$(document).keyup(function(e) {
171
 
138
	  if (e.keyCode === 27) {
172
function getDateMaxCalendrier() {
139
			$('.element_clique').removeClass('element_clique');
173
	
140
			fermerDatePicker();   // esc
174
	anneeEnCours = getAnneeEnCoursDeConsultation();
141
		}
-
 
142
	});
-
 
143
}
175
	
144
 
176
	dateMax = '31/12/'+anneeEnCours;
145
function afficherSaisieObservation($obs) {
177
	
-
 
178
	dateCourante = new Date();
-
 
179
	
146
 
180
	if(anneeEnCours == dateCourante.getFullYear()) {
147
	fermerDatePicker();
-
 
148
 
-
 
149
	var dateMin = getDateMinCalendrier();
181
		dateMax = dateCourante.getDate()+'/'+(dateCourante.getMonth()+ 1)+'/'+anneeEnCours;
150
	var dateMax = getDateMaxCalendrier();
182
	}
151
 
183
	
152
	var dateCouranteStr = $obs.data('date-observation');
Line 184... Line 153...
184
	return dateMax;
153
	var dateCourante = new Date();
-
 
154
	if(!!dateCouranteStr && dateCouranteStr != '' && dateCouranteStr != '+') {
185
}
155
		var jour   = parseInt(dateCouranteStr.substring(0,2));
Line 186... Line 156...
186
 
156
		var mois  = parseInt(dateCouranteStr.substring(3,5));
187
/** Fonctions de manipulation des éléments du tableau pour les transformer en élements cliquables et calendriers **/
157
		var annee   = parseInt(dateCouranteStr.substring(6,10));
188
function initialiserMiniCalendrierFormulaire(id_element) {
-
 
189
	
158
		dateCourante = new Date(annee, mois-1, jour);
190
	dateMin = getDateMinCalendrier();
-
 
191
	dateMax = getDateMaxCalendrier();
-
 
192
	
-
 
193
	$('#'+id_element)
-
 
194
	.datepicker({
-
 
195
		disabled: true,
159
	}
196
		constrainInput: true,
-
 
197
		altFormat: 'dd/mm/yyyy',
-
 
198
		minDate: dateMin,
-
 
199
		maxDate: dateMax,
-
 
200
		onSelect: function(dateText, inst) {
160
 
201
			$('#'+id_element).val(dateText);
161
	$obs.find('.datepicker_container').datepicker({
Line 202... Line 162...
202
			donnees_obs = collecterDonneesMiniFormulaire(id_formulaire);
162
		disabled: true,
203
			envoyerRequeteAjaxValidationMiniFormulaire(donnees_obs, id_formulaire);
163
		constrainInput: true,
204
		},
164
		altFormat: 'dd/mm/yyyy',
205
		onClose: function(dateText, inst) {
-
 
206
			gererFermetureMiniCalendrier(dateText,id_formulaire);
-
 
207
		}
165
		minDate: dateMin,
208
	});
166
		maxDate: dateMax,
209
 
167
		changeMonth: true,
210
	$('#'+id_element).datepicker( "show" );
168
		defaultDate: dateCourante,
211
}
169
		onSelect: function(dateText, inst) {
212
 
170
			validerSaisieObservation(dateText, $obs)
-
 
171
		},
213
function gererFermetureMiniCalendrier(dateText, id_formulaire) {
172
		beforeShowDay: function(date) {
214
	
173
			var dates_a_exclure = getDatesSaisiesPourStadeEtIndividu($obs.data('id-individu'), $obs.data('id-stade-observation'));
215
	ancienne_valeur_date = jQuery.trim(ancienneValeurEnCours);
174
      var string = jQuery.datepicker.formatDate('dd/mm/yy', date);
216
	nouvelle_valeur_date = jQuery.trim(dateText);
175
      return [dates_a_exclure.indexOf(string) == -1]
217
	
-
 
218
	if(nouvelle_valeur_date == '' && ancienne_valeur_date != '-' && ancienne_valeur_date != nouvelle_valeur_date) {
176
    }
219
		if(window.confirm("Voulez vous supprimer cette observation ?")) {
-
 
220
			$('#'+id_formulaire).val(nouvelle_valeur_date);
177
	});
221
			donnees_obs = collecterDonneesMiniFormulaire(id_formulaire);
-
 
222
			envoyerRequeteAjaxValidationMiniFormulaire(donnees_obs, id_formulaire);
178
 
223
		} else {
-
 
224
			$('#'+id_formulaire).val(ancienne_valeur_date);
-
 
225
			remplacerMiniFormulaireParElementDate(id_formulaire);	
-
 
226
		}
-
 
227
	}
179
	$obs.datepicker("show");
228
}
180
	$('.ui-datepicker').attr("title", "Appuyez sur échap pour annuler l'édition");
229
 
181
}
230
function remplacerElementDateParFormulaireAjax(id_element, conteneur_selectionne) {
182
 
231
	
-
 
232
	if(elementEnCours != null) {
-
 
233
		elementEnCours.removeClass('element_clique');
-
 
234
		elementEnCours.html(htmlEnCours);
-
 
235
		ancienneValeurEnCours = null;
-
 
Line -... Line 183...
-
 
183
function validerSaisieObservation(dateStr, $obs) {
236
	}
184
 
Line 237... Line 185...
237
	
185
	if(estUneDateValide(dateStr)) {
238
	ancienneValeurEnCours = conteneur_selectionne.children('span').html()
186
		envoyerRequeteAjaxSaisieObservation(dateStr, $obs);
-
 
187
	}
-
 
188
}
-
 
189
 
239
	elementEnCours = conteneur_selectionne;
190
function formaterDonneesObservationPourEnvoi(dateStr, $obs) {
240
	htmlEnCours = conteneur_selectionne.html();
191
 
241
	
192
	if(dateStr == null ) {
242
	conteneur_obs = $('#'+id_element);
193
		return false ;
243
	valeur_date = conteneur_obs.html();
194
	}
244
	valeur_date = valeur_date.replace('-','');
195
 
-
 
196
	var anneeEnCours = getAnneeEnCoursDeConsultation();
-
 
197
	if(jQuery.trim(dateStr) == '') {
-
 
198
		dateStr = '00/00/'+anneeEnCours;
-
 
199
	}
-
 
200
 
-
 
201
	donnees_obs = {
-
 
202
		"id_individu": $obs.data('id-individu'),
245
		
203
		"id_evenement": $obs.data('id-stade-observation'),
246
	conteneur_selectionne.addClass('element_clique');
204
		"date_evenement": dateStr,
-
 
205
		"annee_en_cours": anneeEnCours
-
 
206
	};
-
 
207
 
-
 
208
	if(!!$obs.data('id-observation')) {
-
 
209
		donnees_obs.id_observation = $obs.data('id-observation');
-
 
210
	}
-
 
211
 
-
 
212
	return donnees_obs;
-
 
213
}
-
 
214
 
247
	conteneur_selectionne.html('<span class="calendrier"><input type="text" value="'+jQuery.trim(valeur_date)+'" class="calendrier" id="'+id_formulaire+'" size="7" maxlenght="10" /></div>');			
215
 
-
 
216
/** Fonctions d'envoi et de récupération des élements du formulaire ajax **/
-
 
217
function envoyerRequeteAjaxSaisieObservation(dateStr, $obs) {
-
 
218
 
-
 
219
	var est_obs_existante = !!$obs.data('id-observation');
-
 
220
	var donnees_obs = formaterDonneesObservationPourEnvoi(dateStr, $obs);
-
 
221
 
-
 
222
	url_page_courante = document.URL;
-
 
223
	url_page_courante = url_page_courante.replace('module=Individu','module=Observation');
-
 
224
	url_page_courante = url_page_courante.replace('action=afficherListeIndividu','action=validerFormulaireModificationObservationAjax');
-
 
225
	url_ajax = url_page_courante.replace('action=validerFormulaireSaisieIndividu','action=validerFormulaireModificationObservationAjax');
-
 
226
 
-
 
227
	$conteneurAjout = null;
-
 
228
	if(!est_obs_existante) {
-
 
229
		var id_conteneur_ajout = 'ajouter_observation_individu_'+donnees_obs['id_individu']+'_evenement_'+donnees_obs['id_evenement'];
-
 
230
		var $conteneurAjout = $('#'+id_conteneur_ajout).clone();
248
	initialiserMiniCalendrierFormulaire(id_formulaire);
231
	}
-
 
232
 
-
 
233
	var donnees_obs = formaterDonneesObservationPourEnvoi(dateStr, $obs);
-
 
234
	$.post(url_ajax, donnees_obs, function(obj_retour) {
-
 
235
 
-
 
236
		if(obj_retour.data.erreurs) {
-
 
237
			var message = 'Une ou plusieurs erreurs se sont produites : '+"\n";
-
 
238
			for (var key in obj_retour.data.erreurs) {
-
 
239
  		if (obj_retour.data.erreurs.hasOwnProperty(key))
-
 
240
    		message += '- '+obj_retour.data.erreurs[key]+"\n";
249
	
241
			}
250
}
242
			window.alert(message);
251
 
243
			return;
Line 252... Line 244...
252
function remplacerMiniFormulaireParElementDate(id_element) { 
244
		}
-
 
245
 
-
 
246
		if(obj_retour.reponse === 'OK') {
253
	
247
 
254
	valeur_date_pour_stade = $('#'+id_element).val();
-
 
255
	
248
			// les obs ne sont jamais vraiment supprimées
-
 
249
			// mais seulement remplacées par des dates au format 00/00/yyyy
256
	if(jQuery.trim(valeur_date_pour_stade) == '') {
250
			if(estUneDateSuppressionObs(dateStr)) {
257
		valeur_date_pour_stade = '-';
251
				$obs.remove();
258
	}
252
				delete $obs;
259
	
253
				return;
-
 
254
			}
260
	elementEnCours.html('<span id="'+id_element+'">'+valeur_date_pour_stade+' </span>');
255
 
261
	elementEnCours.removeClass('element_clique');
256
			$obs.find('.date_observation').text(dateStr);
262
	elementEnCours = null;
257
			$obs.data('date-observation', dateStr);
263
	ancienneValeurEnCours = null;
258
 
264
 
-
 
265
}
259
			if(!est_obs_existante) {
266
 
260
				$obs.removeClass('ajouter_observation');
267
 
261
				$obs.attr('title', 'Cliquez pour modifier la date de cette observation')
268
/** Fonctions d'envoi et de récupération des élements du formulaire ajax **/
262
				$obs.data('id-observation', obj_retour.data.id_observation);
269
function envoyerRequeteAjaxValidationMiniFormulaire(donnees_obs, id_formulaire) {
-
 
270
		
-
 
271
	url_page_courante = document.URL;
-
 
272
	url_page_courante = url_page_courante.replace('module=Individu','module=Observation');
263
 
-
 
264
				var id_conteneur_observation = 'individu_'+donnees_obs['id_individu']+'_evenement_'+donnees_obs['id_evenement']+'_observation_'+obj_retour.data.id_observation;
273
	url_page_courante = url_page_courante.replace('action=afficherListeIndividu','action=validerFormulaireModificationObservationAjax');
265
				$obs.attr('id', id_conteneur_observation);
274
	url_ajax = url_page_courante.replace('action=validerFormulaireSaisieIndividu','action=validerFormulaireModificationObservationAjax');
-
 
-
 
266
 
-
 
267
				$obs.after($conteneurAjout);
275
		
268
			}
276
	$.post(url_ajax, donnees_obs, function(obj_retour) {
-
 
277
		
269
 
278
		if(obj_retour.reponse === 'OK') {
270
			$('.element_clique').removeClass('element_clique');
Line -... Line 271...
-
 
271
			fermerDatePicker();
-
 
272
		}
-
 
273
	});
-
 
274
}
-
 
275
 
-
 
276
function estUneDateSuppressionObs(dateStr) {
-
 
277
	var date_vide_pattern = /^00\/00\/\d{4}$/;
-
 
278
	return dateStr == '' || date_vide_pattern.test(dateStr);
-
 
279
}
-
 
280
 
-
 
281
function fermerDatePicker() {
-
 
282
	if($(".hasDatepicker").length == 0) {
-
 
283
		return;
-
 
284
	}
-
 
285
 
-
 
286
	$(".hasDatepicker").each(function() {
-
 
287
		$(this).datepicker("destroy");
-
 
288
		$(this).removeClass(".hasDatepicker").removeAttr('id');
-
 
289
	});
-
 
290
}
-
 
291
 
-
 
292
function obtenirAttributsData(el) {
-
 
293
	return [].filter.call(el.attributes, function(at) { return /^data-/.test(at.name); });
-
 
294
}
-
 
295
 
-
 
296
// vérifie qu'une date est au format d/m/y
-
 
297
// merci stacky https://stackoverflow.com/questions/5812220/how-to-validate-a-date
-
 
298
function estUneDateValide(s) {
-
 
299
  var bits = s.split('/');
-
 
300
  var d = new Date(bits[2], bits[1] - 1, bits[0]);
-
 
301
  return d && (d.getMonth() + 1) == bits[1];
-
 
302
}
-
 
303
 
-
 
304
function getDatesSaisiesPourStadeEtIndividu(id_individu, id_stade) {
-
 
305
	var selecteur_data = '[data-id-individu="'+id_individu+'"]'+
-
 
306
												'[data-id-stade-observation="'+id_stade+'"]';
-
 
307
 
-
 
308
	return $('.date_observation_individu'+selecteur_data).map(function() {
-
 
309
    return $(this).data("date-observation");
-
 
310
	}).get();
-
 
311
}
-
 
312
 
Line 279... Line 313...
279
			remplacerMiniFormulaireParElementDate(id_formulaire);
313
function getAnneeEnCoursDeConsultation() {
280
		}
314
 
281
	});
315
	anneeEnCours = jQuery.trim($("#annee_en_cours").html());
Line 282... Line 316...
282
}
316
 
283
 
317
	if(typeof(anneeEnCours)=='undefined'){
284
function collecterDonneesMiniFormulaire(id_formulaire) {
318
		dateCourante = new Date();
285
	
319
		anneeEnCours = dateCourante.getFullYear();
286
	valeur_date_pour_stade = $('#'+id_formulaire).val();
320
	}
287
	
321
 
288
	if(valeur_date_pour_stade == null ) {
322
	return anneeEnCours;
289
		return false ;
323
}
290
	}
324
 
291
	
325
function getDateMinCalendrier() {
292
	if(jQuery.trim(valeur_date_pour_stade) == '') {
326
	anneeEnCours = getAnneeEnCoursDeConsultation();
293
		valeur_date_pour_stade = '00/00/'+anneeEnCours;
327
	dateMin = '01/01/'+anneeEnCours;
294
	}
328
 
295
	
329
	return dateMin;
Line 344... Line 378...
344
	$('.rafraichissable input').removeAttr('disabled');
378
	$('.rafraichissable input').removeAttr('disabled');
345
	$('.chargement').removeClass("chargement");
379
	$('.chargement').removeClass("chargement");
346
}
380
}
Line 347... Line 381...
347
 
381
 
348
function ajouterAutoCompletionCommune() {
382
function ajouterAutoCompletionCommune() {
349
	
383
 
350
	$('input#station_commune').after('<div class="conteneur_suggestions"></div>');
384
	$('input#station_commune').after('<div class="conteneur_suggestions"></div>');
351
	$('input#station_commune').parent().addClass('autocompletion');
385
	$('input#station_commune').parent().addClass('autocompletion');
352
	$('input#station_commune').attr('autocomplete','off');
386
	$('input#station_commune').attr('autocomplete','off');
353
	$('.conteneur_suggestions').hide();
387
	$('.conteneur_suggestions').hide();
354
	rendreListeAutoCompletionInteractive('input#station_commune');
388
	rendreListeAutoCompletionInteractive('input#station_commune');
Line 355... Line 389...
355
}
389
}
356
 
390
 
357
function ajouterListenerFormulaireSaisieLatLon() {
391
function ajouterListenerFormulaireSaisieLatLon() {
358
				
392
 
359
	$('input#localiser_lat_lon').click(function() {
393
	$('input#localiser_lat_lon').click(function() {
360
		verifierEtLocaliserCoordonnees();
394
		verifierEtLocaliserCoordonnees();
Line 361... Line 395...
361
	});
395
	});
362
}
396
}
363
 
397
 
Line 364... Line 398...
364
function carteEstEnSaisie() {
398
function carteEstEnSaisie() {
365
	return ($('#conteneur_form_liens_lat_lon').length > 0);
399
	return ($('#conteneur_form_liens_lat_lon').length > 0);
366
}
400
}
367
 
401
 
368
function verifierEtLocaliserCoordonnees() {
402
function verifierEtLocaliserCoordonnees() {
369
	
403
 
370
	lat ;
404
	lat ;
371
	lon;
405
	lon;
372
	
406
 
373
	if(carteEstEnSaisie()) {
407
	if(carteEstEnSaisie()) {
374
		lat = $('#station_lat').val();
408
		lat = $('#station_lat').val();
375
		lon = $('#station_lon').val();
409
		lon = $('#station_lon').val();
376
		
410
 
377
		obtenirInformationsPourCoordonnees(lat, lon);
411
		obtenirInformationsPourCoordonnees(lat, lon);
378
	} else {
412
	} else {
379
		var lat = jQuery.trim($('#station_lat').html());
413
		var lat = jQuery.trim($('#station_lat').html());
380
		var lon = jQuery.trim($('#station_lon').html());
414
		var lon = jQuery.trim($('#station_lon').html());
381
	}
415
	}
382
	
416
 
383
	if(jQuery.trim(lat) == '' || jQuery.trim(lon) == '') {
417
	if(jQuery.trim(lat) == '' || jQuery.trim(lon) == '') {
384
		return;
418
		return;
385
	}
419
	}
386
	
420
 
387
	if(!isNaN(lat) && lat.length > 0 && !isNaN(lon) && lon.length > 0) {
421
	if(!isNaN(lat) && lat.length > 0 && !isNaN(lon) && lon.length > 0) {
388
		
422
 
389
	} else {
423
	} else {
390
		window.alert("coordonnées invalides");
424
		window.alert("coordonnées invalides");
391
	}
425
	}
392
	
426
 
393
	var positionMarker = new google.maps.LatLng(lat, lon);
427
	var positionMarker = new google.maps.LatLng(lat, lon);
394
	
428
 
Line 395... Line 429...
395
	marker.setPosition(positionMarker);
429
	marker.setPosition(positionMarker);
396
	map.setCenter(positionMarker);
430
	map.setCenter(positionMarker);
397
	map.setZoom(12);
431
	map.setZoom(12);
398
}
432
}
399
 
433
 
400
function obtenirInformationsPourCoordonnees(lat, lon) {
434
function obtenirInformationsPourCoordonnees(lat, lon) {
401
		
435
 
402
	lat = jQuery.trim(lat);
436
	lat = jQuery.trim(lat);
403
	lon = jQuery.trim(lon);	
437
	lon = jQuery.trim(lon);
404
	
438
 
Line 405... Line 439...
405
	if(isNaN(lat) || lat.length <= 0 || isNaN(lon) || lon.length <= 0) {
439
	if(isNaN(lat) || lat.length <= 0 || isNaN(lon) || lon.length <= 0) {
406
		return;
440
		return;
407
	}
441
	}
408
	
442
 
409
	cacherElementsRafraichissables();
443
	cacherElementsRafraichissables();
410
 
444
 
411
	$.get(urlBaseJrest+'OdsCommune/informationsPourCoordonnees/?lat='+lat+'&lon='+lon, function(data) {	
445
	$.get(urlBaseJrest+'OdsCommune/informationsPourCoordonnees/?lat='+lat+'&lon='+lon, function(data) {
412
		
446
 
413
		infos_localites = jQuery.parseJSON(data);
447
		infos_localites = jQuery.parseJSON(data);
414
		$('#station_alt').val(infos_localites.alt);
448
		$('#station_alt').val(infos_localites.alt);
415
		
449
 
416
		if(infos_localites.commune != null && infos_localites.commune != '') {
450
		if(infos_localites.commune != null && infos_localites.commune != '') {
417
		  $('#station_commune').val(infos_localites.commune);
451
		  $('#station_commune').val(infos_localites.commune);
Line 418... Line 452...
418
		  $('#station_code_insee').val(infos_localites.code_insee);
452
		  $('#station_code_insee').val(infos_localites.code_insee);
Line 419... Line 453...
419
		}
453
		}
420
		
454
 
421
		montrerElementsRafraichissables();
455
		montrerElementsRafraichissables();
422
		
456
 
423
	});
457
	});
424
 
458
 
425
}
459
}
426
 
460
 
427
function obtenirInformationsPourCommune(nom_commune) {
461
function obtenirInformationsPourCommune(nom_commune) {
428
	
462
 
429
	if(jQuery.trim(nom_commune) == '') {
463
	if(jQuery.trim(nom_commune) == '') {
430
		$('.conteneur_suggestions').hide();
464
		$('.conteneur_suggestions').hide();
431
		return;
465
		return;
Line 432... Line 466...
432
	}
466
	}
433
	
467
 
434
	$.get(urlBaseJrest+'OdsCommune/informationsPourCommune/?commune='+nom_commune, function(data) {	
468
	$.get(urlBaseJrest+'OdsCommune/informationsPourCommune/?commune='+nom_commune, function(data) {
435
		
469
 
436
		infos_localites = jQuery.parseJSON(data);
470
		infos_localites = jQuery.parseJSON(data);
437
		afficherListeAutoCompletion(infos_localites);		
471
		afficherListeAutoCompletion(infos_localites);
438
	});
472
	});
439
}
473
}
440
 
474
 
441
function afficherListeAutoCompletion(tableau_localites) {
475
function afficherListeAutoCompletion(tableau_localites) {
442
	
476
 
443
	liste_localite_en_cours = tableau_localites;
477
	liste_localite_en_cours = tableau_localites;
444
	
478
 
445
	html_liste_localite = '<ul class="liste_suggestions">';
479
	html_liste_localite = '<ul class="liste_suggestions">';
446
	
480
 
447
	for(i = 0; i< tableau_localites.length; i++) {
481
	for(i = 0; i< tableau_localites.length; i++) {
448
		html_liste_localite += '<li id="commune_'+i+'" class="element_auto_completion_commune">'+tableau_localites[i]['commune']+'  ('+tableau_localites[i]['dpt']+')</li>';
482
		html_liste_localite += '<li id="commune_'+i+'" class="element_auto_completion_commune">'+tableau_localites[i]['commune']+'  ('+tableau_localites[i]['dpt']+')</li>';
449
	}
483
	}
450
	
484
 
451
	html_liste_localite += '</ul>';
485
	html_liste_localite += '</ul>';
452
	
486
 
453
	$('.conteneur_suggestions').html(html_liste_localite);
487
	$('.conteneur_suggestions').html(html_liste_localite);
454
	
488
 
455
	$('.element_auto_completion_commune').hover(function() {
489
	$('.element_auto_completion_commune').hover(function() {
456
		indice = $(this).attr('id').split('_')[1];
490
		indice = $(this).attr('id').split('_')[1];
457
		mettreEnSurbrillanceCommune(indice);
491
		mettreEnSurbrillanceCommune(indice);
458
	});
492
	});
459
	
493
 
460
	$('.element_auto_completion_commune').click(function() {
494
	$('.element_auto_completion_commune').click(function() {
461
		indice = $(this).attr('id').split('_')[1];
495
		indice = $(this).attr('id').split('_')[1];
Line 462... Line 496...
462
		selectionnerCommune(indice);
496
		selectionnerCommune(indice);
463
	});
497
	});
464
	
498
 
465
	if(tableau_localites.length > 0) {
499
	if(tableau_localites.length > 0) {
466
		$('.conteneur_suggestions').show();
500
		$('.conteneur_suggestions').show();
467
		
501
 
468
		mettreEnSurbrillanceCommune(0);
502
		mettreEnSurbrillanceCommune(0);
469
	}
503
	}
470
}
504
}
471
 
505
 
Line 472... Line 506...
472
function mettreEnSurbrillanceCommune(indice) {
506
function mettreEnSurbrillanceCommune(indice) {
473
	
507
 
474
	if(indice_commune_en_cours != null) { 
508
	if(indice_commune_en_cours != null) {
475
		$('#commune_'+indice_commune_en_cours).removeClass('element_selectionne');
509
		$('#commune_'+indice_commune_en_cours).removeClass('element_selectionne');
476
	}
510
	}
477
	$('#commune_'+indice).addClass('element_selectionne');
511
	$('#commune_'+indice).addClass('element_selectionne');
478
	indice_commune_en_cours = indice;
512
	indice_commune_en_cours = indice;
479
	
513
 
480
	reprogrammerTimerPourCacherListeAutoCompletion();
514
	reprogrammerTimerPourCacherListeAutoCompletion();
481
}
515
}
482
 
516
 
483
function rendreListeAutoCompletionInteractive(selecteur) {
517
function rendreListeAutoCompletionInteractive(selecteur) {
484
	
518
 
485
	$(selecteur).keyup(function(event) {
519
	$(selecteur).keyup(function(event) {
486
		if(event.which == 8 || (event.which >= 48 && event.which <= 90)) { 
520
		if(event.which == 8 || (event.which >= 48 && event.which <= 90)) {
487
			
521
 
488
			reprogrammerTimerPourCacherListeAutoCompletion();
522
			reprogrammerTimerPourCacherListeAutoCompletion();
489
			reprogrammerTimerPourLancerRequeteCommune();
523
			reprogrammerTimerPourLancerRequeteCommune();
490
		}
524
		}
491
	});
525
	});
492
	
526
 
493
	$(selecteur).keydown(function(event) {
527
	$(selecteur).keydown(function(event) {
494
		
528
 
495
		reprogrammerTimerPourCacherListeAutoCompletion();
529
		reprogrammerTimerPourCacherListeAutoCompletion();
496
		
530
 
497
		// entree
531
		// entree
498
		if(event.which==13){
532
		if(event.which==13){
499
			selectionnerCommune(indice_commune_en_cours);
533
			selectionnerCommune(indice_commune_en_cours);
500
			event.preventDefault();
534
			event.preventDefault();
501
		}
535
		}
502
		
536
 
503
		// haut
537
		// haut
504
		if(event.which == 38){
538
		if(event.which == 38){
505
			if(indice_commune_en_cours > 0) { 
539
			if(indice_commune_en_cours > 0) {
506
				mettreEnSurbrillanceCommune(indice_commune_en_cours - 1);
540
				mettreEnSurbrillanceCommune(indice_commune_en_cours - 1);
507
			}
541
			}
508
		}
542
		}
509
		
543
 
510
		// bas
544
		// bas
Line 511... Line 545...
511
		if(event.which == 40){
545
		if(event.which == 40){
512
			if(indice_commune_en_cours < liste_localite_en_cours.length - 1) { 
546
			if(indice_commune_en_cours < liste_localite_en_cours.length - 1) {
513
				mettreEnSurbrillanceCommune(indice_commune_en_cours + 1);
547
				mettreEnSurbrillanceCommune(indice_commune_en_cours + 1);
514
			}
548
			}
515
		}
549
		}
516
	});
550
	});
517
	
551
 
518
	$('.conteneur_suggestions').blur(function() {
552
	$('.conteneur_suggestions').blur(function() {
519
		$('.conteneur_suggestions').hide();
553
		$('.conteneur_suggestions').hide();
520
	});
554
	});
Line 521... Line 555...
521
}
555
}
522
 
556
 
523
function reprogrammerTimerPourCacherListeAutoCompletion() {
557
function reprogrammerTimerPourCacherListeAutoCompletion() {
524
	
558
 
525
	if(timerAffichageAutocompletion != null) {
559
	if(timerAffichageAutocompletion != null) {
526
		window.clearTimeout(timerAffichageAutocompletion);
560
		window.clearTimeout(timerAffichageAutocompletion);
527
	}
561
	}
528
	
562
 
529
	timerAffichageAutocompletion = window.setTimeout(function() {
563
	timerAffichageAutocompletion = window.setTimeout(function() {
530
		$('.conteneur_suggestions').hide();
564
		$('.conteneur_suggestions').hide();
Line 531... Line 565...
531
	}, 2000);
565
	}, 2000);
532
}
566
}
533
 
567
 
534
function reprogrammerTimerPourLancerRequeteCommune() {
568
function reprogrammerTimerPourLancerRequeteCommune() {
535
	
569
 
536
	if(timerRequeteAutocompletion != null) {
570
	if(timerRequeteAutocompletion != null) {
537
		window.clearTimeout(timerRequeteAutocompletion);
571
		window.clearTimeout(timerRequeteAutocompletion);
538
	}
572
	}
539
	
573
 
540
	timerRequeteAutocompletion = window.setTimeout(function() {
574
	timerRequeteAutocompletion = window.setTimeout(function() {
541
		obtenirInformationsPourCommune($('input#station_commune').val());
575
		obtenirInformationsPourCommune($('input#station_commune').val());
542
	}, 350);
576
	}, 350);
543
}
577
}
Line 544... Line 578...
544
 
578
 
Line 545... Line 579...
545
function selectionnerCommune(indice) {
579
function selectionnerCommune(indice) {
546
	
580
 
547
	infos_commune = liste_localite_en_cours[indice];
581
	infos_commune = liste_localite_en_cours[indice];
548
	
582
 
549
	$('input#station_commune').val(infos_commune['commune']);
583
	$('input#station_commune').val(infos_commune['commune']);
550
	$('input#station_lat').val(infos_commune['lat']);
584
	$('input#station_lat').val(infos_commune['lat']);
551
	$('input#station_lon').val(infos_commune['lon']);
585
	$('input#station_lon').val(infos_commune['lon']);
552
	$('input#station_code_insee').val(infos_commune['code_insee']);
586
	$('input#station_code_insee').val(infos_commune['code_insee']);
553
	
587
 
554
	verifierEtLocaliserCoordonnees();
588
	verifierEtLocaliserCoordonnees();
Line 555... Line 589...
555
	
589
 
Line 582... Line 616...
582
		mapTypeId: google.maps.MapTypeId.HYBRID
616
		mapTypeId: google.maps.MapTypeId.HYBRID
583
	};
617
	};
Line 584... Line 618...
584
 
618
 
585
	map = new google.maps.Map(document.getElementById("map_canvas"),
619
	map = new google.maps.Map(document.getElementById("map_canvas"),
586
    	myOptions);
620
    	myOptions);
587
	
621
 
588
	marker = new google.maps.Marker({
622
	marker = new google.maps.Marker({
589
	      position: latlng,
623
	      position: latlng,
590
	      title:""
624
	      title:""
591
	});
625
	});
592
	
626
 
593
	if (carteEstEnSaisie()) {
627
	if (carteEstEnSaisie()) {
594
	
628
 
595
			marker.setDraggable(true);
629
			marker.setDraggable(true);
596
			
630
 
597
			google.maps.event.addListener(marker, 'dragend', function(event) {	
631
			google.maps.event.addListener(marker, 'dragend', function(event) {
598
				mettreAJourValeursFormulaire(marker.getPosition());
632
				mettreAJourValeursFormulaire(marker.getPosition());
599
			});
633
			});
600
			$('#conteneur_form_liens_lat_lon').ready(function() {
634
			$('#conteneur_form_liens_lat_lon').ready(function() {
601
				verifierEtLocaliserCoordonnees();
635
				verifierEtLocaliserCoordonnees();
Line 606... Line 640...
606
		marker.setDraggable(false);
640
		marker.setDraggable(false);
607
		$('#conteneur_liens_lat_lon').ready(function() {
641
		$('#conteneur_liens_lat_lon').ready(function() {
608
			verifierEtLocaliserCoordonnees();
642
			verifierEtLocaliserCoordonnees();
609
		});
643
		});
610
	}
644
	}
611
	
645
 
612
	marker.setClickable(true);
646
	marker.setClickable(true);
613
		
647
 
614
	// To add the marker to the map, call setMap();
648
	// To add the marker to the map, call setMap();
615
	marker.setMap(map); 
649
	marker.setMap(map);
616
}
650
}
Line 617... Line 651...
617
 
651
 
618
$('#map_canvas').ready(function() {
652
$('#map_canvas').ready(function() {
619
	initialiserCarte();
653
	initialiserCarte();
Line 620... Line 654...
620
});
654
});
621
 
655
 
622
/** 
656
/**
Line 623... Line 657...
623
************************************************************************************************
657
************************************************************************************************
Line 624... Line 658...
624
************************************************************************************************
658
************************************************************************************************
625
 
659
 
626
    Fonctions généralistes s'appliquant automatiquement à certaines classes css
660
    Fonctions généralistes s'appliquant automatiquement à certaines classes css
Line 627... Line 661...
627
 
661
 
628
************************************************************************************************
662
************************************************************************************************
629
************************************************************************************************
663
************************************************************************************************
630
**/ 
664
**/
631
 
665
 
632
function initialiserLiensNouvelleFenetre() {
666
function initialiserLiensNouvelleFenetre() {
633
  
667
 
634
	$('a.lien_nouvelle_fenetre').each(function() {
668
	$('a.lien_nouvelle_fenetre').each(function() {
635
	  var titre = $(this).attr("title");
669
	  var titre = $(this).attr("title");
636
	  $(this).attr("title", titre+" (s'ouvre dans une nouvelle fenêtre)");
670
	  $(this).attr("title", titre+" (s'ouvre dans une nouvelle fenêtre)");
637
	});
671
	});
638
  
672
 
Line 653... Line 687...
653
	initialiserLiensNouvelleFenetre();
687
	initialiserLiensNouvelleFenetre();
654
});
688
});
Line 655... Line 689...
655
 
689
 
656
 
690
 
657
 
691
 
Line 658... Line 692...
658
/** 
692
/**
Line 659... Line 693...
659
************************************************************************************************
693
************************************************************************************************
660
************************************************************************************************
694
************************************************************************************************
661
 
695
 
Line 662... Line 696...
662
    Fonctions de debug permattant d'afficher les objets javascript à la manière de print_r
696
    Fonctions de debug permattant d'afficher les objets javascript à la manière de print_r
663
 
697
 
664
************************************************************************************************
698
************************************************************************************************
Line 674... Line 708...
674
	for(var j=0;j<level+1;j++) level_padding += "    ";
708
	for(var j=0;j<level+1;j++) level_padding += "    ";
Line 675... Line 709...
675
 
709
 
676
	if(typeof(arr) == 'object') { //Array/Hashes/Objects
710
	if(typeof(arr) == 'object') { //Array/Hashes/Objects
677
	 for(var item in arr) {
711
	 for(var item in arr) {
678
	  var value = arr[item];
712
	  var value = arr[item];
679
	 
713
 
680
	  if(typeof(value) == 'object') { //If it is an array,
714
	  if(typeof(value) == 'object') { //If it is an array,
681
	   dumped_text += level_padding + "'" + item + "' ...\n";
715
	   dumped_text += level_padding + "'" + item + "' ...\n";
682
	   dumped_text += dump(value,level+1);
716
	   dumped_text += dump(value,level+1);
683
	  } else {
717
	  } else {
Line 686... Line 720...
686
	 }
720
	 }
687
	} else { //Stings/Chars/Numbers etc.
721
	} else { //Stings/Chars/Numbers etc.
688
	 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
722
	 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
689
	}
723
	}
690
	return dumped_text;
724
	return dumped_text;
691
} 
725
}