Subversion Repositories Sites.obs-saisons.fr

Rev

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

Rev 239 Rev 240
Line -... Line 1...
-
 
1
var map = null;
-
 
2
var tableau_marqueurs = new Array();
-
 
3
var infowindow = new google.maps.InfoWindow();
-
 
4
var infos_observations = new Array();
-
 
5
 
-
 
6
var type_espece = '0';
-
 
7
var espece = '0';
-
 
8
var evenement = '0';
-
 
9
var annee = '0';
-
 
10
var mois = '0';
-
 
11
var jour = '0';
-
 
12
var departement = '0';
-
 
13
 
-
 
14
var tableau_couleurs = new Array("#A9582B", "#8DC7B8","#ED9355","#A7BD5B",
-
 
15
		"#FFC730","#0000FF","#CC4369","#9CA6A2",
-
 
16
		"#F7E4A2","#DC574E","#3F6CA9","#DC6C4B",
-
 
17
		"#E8A794","#9B5F95","#E78EDE","#45808A",
-
 
18
		"#168F47","#C9A838","#F2EAD8","#1A5561",
-
 
19
		"#6D883A");
-
 
20
 
-
 
21
liste_mois = new Array("jan","fev","mar","avr","mai","jun","jui","aou","sep","oct","nov","dec");
-
 
22
 
-
 
23
evenements_debut_annee = new Array("")
-
 
24
 
-
 
25
var tableau_couleurs_en_cours = new Array();
-
 
26
 
-
 
27
var timerSlider = null;
-
 
28
 
-
 
29
function getUrlBaseJrest() {
-
 
30
	return urlBaseJrest;
-
 
31
}
-
 
32
 
-
 
33
function traiterParametresUrl() {
-
 
34
 
-
 
35
	var vars = [], hash;
-
 
36
	var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
-
 
37
	for(var i = 0; i < hashes.length; i++)
-
 
38
	{
-
 
39
	    hash = hashes[i].split('=');
-
 
40
	    vars.push(hash[0]);
-
 
41
	    vars[hash[0]] = hash[1];
-
 
42
	}
-
 
43
	
-
 
44
	if(vars['type_espece'] != null) {
-
 
45
		type_espece = vars['type_espece'];
-
 
46
		$('#selecteur_liste_types_especes').val(type_espece);
-
 
47
	}
-
 
48
	
-
 
49
	if(vars['espece'] != null) {
-
 
50
		if(type_espece != '0') {
-
 
51
			modifierTableauEspeces();
-
 
52
		}
-
 
53
		espece = vars['espece'];
-
 
54
		$('#selecteur_especes').val(espece);
-
 
55
		
-
 
56
	}
-
 
57
	
-
 
58
	if(vars['evenement'] != null) {
-
 
59
		if(espece != 0) {
-
 
60
			modifierTableauEvenement()
-
 
61
		}
-
 
62
		evenement = vars['evenement'];
-
 
63
		$('#selecteur_evenements').val(evenement);
-
 
64
	}
-
 
65
	
-
 
66
	if(vars['annee'] != null) {
-
 
67
		annee = vars['annee'];
-
 
68
		$('#selecteur_liste_annees').val(annee);
-
 
69
	} else {
-
 
70
		date = new Date()
-
 
71
		annee = date.getFullYear();
-
 
72
		$('#selecteur_liste_annees').val(annee);
-
 
73
	}
-
 
74
	
-
 
75
	if(vars['mois'] != null) {
-
 
76
		mois = vars['mois'];
-
 
77
	} else {
-
 
78
		date = new Date()
-
 
79
	}
-
 
80
	
-
 
81
	if(vars['departement'] != null) {
-
 
82
		departement = vars['departement'];
-
 
83
	}
-
 
84
	
-
 
85
	if(vars['cacher_criteres'] != null && vars['cacher_criteres'] == '1') {
-
 
86
		$(".criteres").hide();
-
 
87
	}
-
 
88
}
-
 
89
 
-
 
90
function obtenirCodeWidget() {
-
 
91
	
-
 
92
	var UrlBase = window.location;
-
 
93
	UrlBase += '?';
-
 
94
	if(type_espece != '0') UrlBase += "type_espece="+type_espece;
-
 
95
	if(espece != '0') UrlBase += "&espece="+espece;
-
 
96
	if(evenement != '0') UrlBase += "&evenement="+evenement;
-
 
97
	if(annee != '0') UrlBase += "&annee="+annee;
-
 
98
	if(mois != '0') UrlBase += "&mois="+mois;
-
 
99
	UrlBase += "&cacher_criteres=1";
-
 
100
	
-
 
101
	code_widget = '<iframe src="'+UrlBase+'" width="375px" height="470px"><p>Votre navigateur ne supporte pas les iframes.</p></iframe>'
-
 
102
	
-
 
103
	return code_widget;
-
 
104
}
-
 
105
 
-
 
106
$('#lien_cette_recherche').ready(function() {
-
 
107
	$('#lien_cette_recherche').click(function() {
-
 
108
		window.alert(obtenirCodeWidget());
-
 
109
		return false;
-
 
110
	});
-
 
111
});
-
 
112
 
-
 
113
$(document).ready(function() {
-
 
114
	traiterParametresUrl();
-
 
115
});
-
 
116
 
-
 
117
/** 
-
 
118
************************************************************************************************
-
 
119
************************************************************************************************
-
 
120
 
-
 
121
    Fonctions concernant les gestion des filtres sur la carte
-
 
122
 
-
 
123
************************************************************************************************
-
 
124
************************************************************************************************
-
 
125
**/ 
-
 
126
 
-
 
127
function setDateSlider() {	
-
 
128
	numeroJour = $("#slider_date").slider("value");
-
 
129
	dateObs = new Date(annee,0,0);
-
 
130
	dateObs.setDate(dateObs.getDate()+numeroJour);
-
 
131
	
-
 
132
	mois = dateObs.getMonth();
-
 
133
	jour = dateObs.getDay();
-
 
134
	afficherObservations();	
-
 
135
}
-
 
136
 
-
 
137
function InitialiserIntervalleDateSlider() {
-
 
138
	
-
 
139
}
-
 
140
 
-
 
141
/*function est une anneeBissextile(	
-
 
142
		return eval(an%4)==0 && !(eval(an%100)== 0 && eval(an%400)==0));
-
 
143
}*/
-
 
144
 
-
 
145
function initialiserSliderDates() {
-
 
146
		
-
 
147
	date_min = 1;
-
 
148
	date_max = 365;
-
 
149
	
-
 
150
	$("#slider_date").slider({
-
 
151
								min: date_min,
-
 
152
								max: date_max,
-
 
153
								value: mois
-
 
154
							});
-
 
155
	
-
 
156
	taille_criteres = Math.round($("#slider_date").width()/(liste_mois.length));
-
 
157
	
-
 
158
	valeurs_slider = '<table id="table_dates"><tbody><tr>';
-
 
159
	
-
 
160
	for (i in liste_mois) {
-
 
161
		valeurs_slider += '<td class="conteneur_date">'+liste_mois[i]+'</td>';
-
 
162
	}
-
 
163
	
-
 
164
	valeurs_slider += '</tr></tbody></table>';
-
 
165
	
-
 
166
	$("conteneur_date").css(".conteneur_date{ width:"+taille_criteres+"px;}");
-
 
167
	
-
 
168
	$("#valeurs_date").html(valeurs_slider);
-
 
169
		
-
 
170
	$("#slider_date").bind("slidestop", function(event, ui) {
-
 
171
		setDateSlider();
-
 
172
		return true;
-
 
173
	});
-
 
174
	
-
 
175
	$(window).bind("resize", resizeWindow);
-
 
176
	function resizeWindow( e ) {
-
 
177
		taille_criteres = Math.round($("#slider_date").width()/(liste_mois.length));
-
 
178
		$("#css_slider").html(".conteneur_date{ width:"+taille_criteres+"px;}");
-
 
179
	}
-
 
180
}
-
 
181
 
-
 
182
function initialiserListeTypesEspeces() {
-
 
183
	
-
 
184
	$('#selecteur_liste_types_especes').change(function() {
-
 
185
		type_espece = $('select#selecteur_liste_types_especes option:selected').val();
-
 
186
		modifierTableauEspeces();
-
 
187
		obtenirObservations();	
-
 
188
	});
-
 
189
}
-
 
190
 
-
 
191
function incrementerValeurSlider() {
-
 
192
	var valeur_en_cours = $('#slider_date').slider("value");
-
 
193
	if($('#slider_date').slider("value") < $('#slider_date').slider("option", "max")) {
-
 
194
		valeur_en_cours++;
-
 
195
		$('#slider_date').slider("value",valeur_en_cours);
-
 
196
		setDateSlider();
-
 
197
	} else {
-
 
198
		clearInterval(timerSlider);
-
 
199
		$('#demarrer_slider').removeAttr('disabled');
-
 
200
	}
-
 
201
}
-
 
202
 
-
 
203
function initialiserBoutonsSlider() {
-
 
204
	
-
 
205
	$('#demarrer_slider').click(function() {
-
 
206
		
-
 
207
		if($('#slider_date').slider("value") == $('#slider_date').slider("option","max")) {
-
 
208
			min_slider = $('#slider_date').slider("option","min");
-
 
209
			$('#slider_date').slider("value",min_slider);
-
 
210
		}
-
 
211
		
-
 
212
		timerSlider = setInterval("incrementerValeurSlider()",150);
-
 
213
		$('#demarrer_slider').attr('disabled', 'disabled');
-
 
214
	});
-
 
215
	
-
 
216
	$('#arreter_slider').click(function() {
-
 
217
		if(timerSlider != null) {
-
 
218
			clearInterval(timerSlider);
-
 
219
			$('#demarrer_slider').removeAttr('disabled');
-
 
220
		}
-
 
221
	});
-
 
222
	
-
 
223
}
-
 
224
 
-
 
225
function initialiserValeursParDefaut() {
-
 
226
	id_type_espece = $('select#selecteur_liste_types_especes').val("2");
-
 
227
	modifierTableauEspeces();
-
 
228
	obtenirObservations();
-
 
229
}
-
 
230
 
-
 
231
$('#slider_date').ready(function() {
-
 
232
	initialiserSliderDates();
-
 
233
	initialiserBoutonsSlider();
-
 
234
	initialiserListeTypesEspeces();
-
 
235
	initialiserListeEspeces();
-
 
236
	initialiserListeEvenements();
-
 
237
	initialiserListeAnnees();
-
 
238
	initialiserValeursParDefaut();
-
 
239
});
-
 
240
 
-
 
241
 
-
 
242
/** 
-
 
243
	************************************************************************************************
-
 
244
	************************************************************************************************
-
 
245
	
-
 
246
	    Fonctions concernant la carte permettant de pointer d'afficher l'emplacement des observation
-
 
247
	
-
 
248
	************************************************************************************************
-
 
249
	************************************************************************************************
-
 
250
**/ 
-
 
251
 
-
 
252
function initialiserCarte() {
-
 
253
 
-
 
254
	if($('#map_canvas').length == 0) {
-
 
255
		return;
-
 
256
	}
-
 
257
 
-
 
258
	var latlng = new google.maps.LatLng(47.0504, 2.2347);
-
 
259
	var myOptions = {
-
 
260
		zoom: 5,
-
 
261
		center: latlng,
-
 
262
		mapTypeId: google.maps.MapTypeId.HYBRID
-
 
263
	};
-
 
264
 
-
 
265
	map = new google.maps.Map(document.getElementById("map_canvas"),
-
 
266
    	myOptions);
-
 
267
	
-
 
268
	marker = new google.maps.Marker({
-
 
269
	      position: latlng,
-
 
270
	      title:""
-
 
271
	});
-
 
272
	
-
 
273
	$('.lien_vers_profil').live('click', function(event) {
-
 
274
		event.preventDefault();
-
 
275
		window.open($(this).attr('href'));
-
 
276
		return false;
-
 
277
	});
-
 
278
}
-
 
279
 
-
 
280
function obtenirObservations() {
-
 
281
		
-
 
282
	requete = '?annee='+annee;
-
 
283
	
-
 
284
	if(type_espece != '0' && espece == '0') { 
-
 
285
		requete += '&type_espece='+type_espece; 
-
 
286
	}
-
 
287
	
-
 
288
	if(espece != '0') { 
-
 
289
		requete += '&espece='+espece; 
-
 
290
	}
-
 
291
	
-
 
292
	if(evenement != '0') { 
-
 
293
		requete += '&evenement='+evenement;
-
 
294
	}
-
 
295
	
-
 
296
	if(departement != '0') { 
-
 
297
		requete += '&departement='+departement;
-
 
298
	}
-
 
299
	
-
 
300
	$.get(getUrlBaseJrest()+'OdsExport/ExportObservationJson/'+requete, function(data) {	
-
 
301
				
-
 
302
		infos_observations = jQuery.parseJSON(data);
-
 
303
		
-
 
304
		if(tableau_marqueurs.length > 0) {
-
 
305
			viderMarqueurs();
-
 
306
		}
-
 
307
		
-
 
308
		for(i in infos_observations) {
-
 
309
			creerEtAjouterMarqueur(i, infos_observations[i]);
-
 
310
		}
-
 
311
		
-
 
312
		afficherObservations();
-
 
313
	});
-
 
314
}
-
 
315
 
-
 
316
function creerEtAjouterMarqueur(id_marqueur, infos_obs) {
-
 
317
	
-
 
318
	latlng = new google.maps.LatLng(infos_obs['latitude'],infos_obs['longitude']);
-
 
319
	
-
 
320
	var chaine_couleur = '';
-
 
321
	
-
 
322
	for(i in infos_obs.obs) {
-
 
323
		var observation = infos_obs.obs[i];
-
 
324
		
-
 
325
		if(typeof(tableau_couleurs_en_cours[observation.id_espece]) != 'undefined') {		
-
 
326
			chaine_couleur += tableau_couleurs_en_cours[observation.id_espece]+",";
-
 
327
		}
-
 
328
	}
-
 
329
	
-
 
330
	chaine_couleur = chaine_couleur.slice(0,chaine_couleur.length - 1);
-
 
331
    var image = obtenirImagePourChaineCouleur(chaine_couleur);
-
 
332
     
-
 
333
 	tableau_marqueurs[id_marqueur] = new google.maps.Marker({
-
 
334
	      position: latlng,
-
 
335
	      title:infos_obs.evenenement,
-
 
336
	      icon:image,
-
 
337
	      optimized: false
-
 
338
	});
-
 
339
 
-
 
340
	google.maps.event.addListener(tableau_marqueurs[id_marqueur], 'click', function() {
-
 
341
		
-
 
342
		contenu_fenetre = formaterContenuFenetre(infos_obs.obs);
-
 
343
		infowindow.close();
-
 
344
		infowindow.content = contenu_fenetre;
-
 
345
		infowindow.open(map,this);
-
 
346
	});
-
 
347
	
-
 
348
	tableau_marqueurs[id_marqueur].setDraggable(false);
-
 
349
	tableau_marqueurs[id_marqueur].setClickable(true);
-
 
350
		
-
 
351
	tableau_marqueurs[id_marqueur].setMap(map); 
-
 
352
 
-
 
353
}
-
 
354
 
-
 
355
function viderMarqueurs() {
-
 
356
	
-
 
357
	infowindow.close();
-
 
358
	for(i in tableau_marqueurs) {
-
 
359
		tableau_marqueurs[i].setMap(null);
-
 
360
	}
-
 
361
	
-
 
362
	tableau_marqueurs = new Array();
-
 
363
}
-
 
364
 
-
 
365
 
-
 
366
function obtenirImagePourChaineCouleur(chaine_couleur) {
-
 
367
					
-
 
368
	chaine_couleur = encodeURIComponent(chaine_couleur);
-
 
369
	var image = getUrlBaseJrest()+"OdsMarqueur/point?couleurs="+chaine_couleur;
-
 
370
    
-
 
371
    return image;
-
 
372
}
-
 
373
 
-
 
374
function convertirDateObsVersJs(chaine_date) {
-
 
375
	
-
 
376
	tableau_date = chaine_date.split('/');
-
 
377
	date_obs = new Date();
-
 
378
	
-
 
379
	date_obs.setDate(tableau_date[0]);
-
 
380
	date_obs.setMonth(tableau_date[1]);
-
 
381
	date_obs.setFullYear(tableau_date[2]);
-
 
382
	
-
 
383
	return date_obs;
-
 
384
}
-
 
385
 
-
 
386
function dateEstDansIntervalle(t_obs) {
-
 
387
	
-
 
388
	date_obs = convertirDateObsVersJs(t_obs);
-
 
389
	
-
 
390
	dans_intervalle = false;
-
 
391
	
-
 
392
	var dateDebutAnnee = new Date();
-
 
393
	dateDebutAnnee.setDate(1);
-
 
394
	dateDebutAnnee.setMonth(1);
-
 
395
	dateDebutAnnee.setFullYear(date_obs.getFullYear());
-
 
396
	var quantieme = (date_obs.getTime() - dateDebutAnnee.getTime()) / (24 * 3600 * 1000)+1;
-
 
397
	
-
 
398
	if($('#slider_date').slider("value") >= quantieme) {
-
 
399
		dans_intervalle = true;
-
 
400
	}
-
 
401
		
-
 
402
	return dans_intervalle;
-
 
403
}
-
 
404
	
-
 
405
function comparerDates(date_1, date_2){
-
 
406
	diff = date_1.getTime()-date_2.getTime();
-
 
407
	return (diff==0?diff:diff/Math.abs(diff));
-
 
408
}
-
 
409
 
-
 
410
function obtenirMarqueurPourStade(stade) {
-
 
411
		
-
 
412
	iconeStade = '../images/marqueur_'+stade+'.png';
-
 
413
 
-
 
414
	return iconeStade;
-
 
415
}
-
 
416
 
-
 
417
function formaterContenuFenetre(infos_obs) {
-
 
418
	
-
 
419
	contenu_fenetre = '';
-
 
420
	date_courante = new Date(annee,mois,jour);
-
 
421
	
-
 
422
	for(i in infos_obs) {
-
 
423
		
-
 
424
		t_obs = infos_obs[i].date;
-
 
425
		
-
 
426
		if(dateEstDansIntervalle(t_obs)) {
-
 
427
			nom_stade ='';
-
 
428
			if(infos_obs[i].code_bbch != '') {
-
 
429
				nom_stade = ' stade '+infos_obs[i].code_bbch;
-
 
430
			}
-
 
431
			
-
 
432
			contenu_fenetre += '<div class="fenetre_infos">';
-
 
433
			contenu_fenetre += '<div class="nom_sci">'+infos_obs[i].nom_scientifique+'</div>';
-
 
434
			contenu_fenetre += '<div class="nom_sci">'+infos_obs[i].evenenement+nom_stade+'</div>';
-
 
435
			contenu_fenetre += '<div class="date_obs"> Observ&eacute; le : '+infos_obs[i].date+' </div>';
-
 
436
			contenu_fenetre += construireUrlProfilParticipant(infos_obs[i].participant);
-
 
437
			contenu_fenetre += '</div><br />';
-
 
438
		}
-
 
439
	}
-
 
440
	
-
 
441
	return contenu_fenetre;
-
 
442
}
-
 
443
 
-
 
444
function construireUrlProfilParticipant(id) {
-
 
445
	return '<a class="lien_vers_profil" href="http://obs-saisons.fr/user/'+id+'"> Voir l\'auteur </a>';
-
 
446
}
-
 
447
	
-
 
448
 
-
 
449
$('#map_canvas').ready(function() {
-
 
450
	initialiserCarte();
-
 
451
});
1
452