Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 210 | Rev 240 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
206 aurelien 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';
237 aurelien 10
var mois = '0';
11
var jour = '0';
207 aurelien 12
var departement = '0';
206 aurelien 13
 
237 aurelien 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
 
206 aurelien 29
function getUrlBaseJrest() {
237 aurelien 30
	return urlBaseJrest;
206 aurelien 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
 
207 aurelien 81
	if(vars['departement'] != null) {
82
		departement = vars['departement'];
83
	}
84
 
206 aurelien 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
 
237 aurelien 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
 
206 aurelien 145
function initialiserSliderDates() {
237 aurelien 146
 
147
	date_min = 1;
148
	date_max = 365;
206 aurelien 149
 
150
	$("#slider_date").slider({
237 aurelien 151
								min: date_min,
152
								max: date_max,
206 aurelien 153
								value: mois
154
							});
155
 
237 aurelien 156
	taille_criteres = Math.round($("#slider_date").width()/(liste_mois.length));
206 aurelien 157
 
158
	valeurs_slider = '<table id="table_dates"><tbody><tr>';
159
 
237 aurelien 160
	for (i in liste_mois) {
161
		valeurs_slider += '<td class="conteneur_date">'+liste_mois[i]+'</td>';
206 aurelien 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
 
237 aurelien 170
	$("#slider_date").bind("slidestop", function(event, ui) {
171
		setDateSlider();
206 aurelien 172
		return true;
173
	});
174
 
175
	$(window).bind("resize", resizeWindow);
176
	function resizeWindow( e ) {
237 aurelien 177
		taille_criteres = Math.round($("#slider_date").width()/(liste_mois.length));
206 aurelien 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 modifierTableauEspeces() {
192
 
193
	id_type_espece = $('select#selecteur_liste_types_especes option:selected').val();
194
 
237 aurelien 195
	elements_liste = tableau_especes[id_type_espece];
196
 
197
	var nb_couleur = 0;
206 aurelien 198
 
199
	chaine_elements_liste = '';
237 aurelien 200
	for(i in elements_liste) {
201
		chaine_elements_liste += '<span class="legende" style="background-color:'+tableau_couleurs[nb_couleur]+'"></span><input class="selecteur_espece" type="checkbox" id="espece_numero_'+i+'" name="selecteur_especes" value="'+i+'" />';
202
		chaine_elements_liste += '<label for="espece_numero_'+i+'">'+elements_liste[i]+'</label><br />';
203
 
204
		tableau_couleurs_en_cours[i] = tableau_couleurs[nb_couleur];
205
		nb_couleur++;
206
	}
207
	$('#conteneur_selecteur_liste_especes').html(chaine_elements_liste);
206 aurelien 208
}
209
 
210
function initialiserListeEspeces() {
211
 
237 aurelien 212
	$('.selecteur_espece').live('change', function() {
206 aurelien 213
		modifierTableauEvenements();
214
		obtenirObservations();
215
	});
216
}
217
 
237 aurelien 218
function getEspecesSelectionnees() {
219
 
220
	especes_selectionnees = $('.selecteur_espece');
221
	tab_id_especes = new Array();
222
 
223
	especes_selectionnees.each(function (index, espece) {
224
		if($(espece).attr('checked') == true) {
225
			tab_id_especes.push($(espece).val());
226
		}
227
	});
228
 
229
	return tab_id_especes;
230
}
231
 
206 aurelien 232
function modifierTableauEvenements() {
237 aurelien 233
 
234
	especes_selectionnees = getEspecesSelectionnees();
235
 
236
	elements_liste = new Array();
237
 
238
	if(especes_selectionnees.length > 0) {
239
		espece = especes_selectionnees.concat(',');
240
		espece = espece.slice(0, -1);
241
	} else {
242
		espece = '0';
243
	}
206 aurelien 244
 
245
 
237 aurelien 246
	for(i in especes_selectionnees) {
247
		evenements_especes = tableau_evenements_especes[especes_selectionnees[i]];
248
		liste_evenements_cette_espece = evenements_especes.split(',');
249
		for(j in liste_evenements_cette_espece) {
250
			elements_liste[j] = liste_evenements_cette_espece[j];
251
		}
252
	}
206 aurelien 253
 
254
	chaine_elements_liste = '';
255
	chaine_elements_liste = '<option value="0" class="espece_type_0" selected="selected"> tous les ev&egrave;nements </option>';
237 aurelien 256
	for(i in elements_liste) {
257
		chaine_elements_liste += '<option value='+elements_liste[i]+'>'+tableau_evenements[elements_liste[i]]+'</option>';
206 aurelien 258
	}
259
 
260
	$('#selecteur_evenements').html(chaine_elements_liste);
261
}
262
 
263
function initialiserListeEvenements() {
264
 
265
	$('#selecteur_evenements').change(function() {
266
		evenement = $('select#selecteur_evenements option:selected').val();
267
		obtenirObservations();
268
	});
269
}
270
 
271
function initialiserListeAnnees() {
272
 
273
	$('#selecteur_liste_annees').change(function() {
274
		annee = $('select#selecteur_liste_annees option:selected').val();
275
		obtenirObservations();
276
	});
277
}
278
 
237 aurelien 279
function incrementerValeurSlider() {
280
	var valeur_en_cours = $('#slider_date').slider("value");
281
	if($('#slider_date').slider("value") < $('#slider_date').slider("option", "max")) {
282
		valeur_en_cours++;
283
		$('#slider_date').slider("value",valeur_en_cours);
284
		setDateSlider();
285
	} else {
286
		clearInterval(timerSlider);
287
		$('#demarrer_slider').removeAttr('disabled');
288
	}
289
}
290
 
291
function initialiserBoutonsSlider() {
292
 
293
	$('#demarrer_slider').click(function() {
294
 
295
		if($('#slider_date').slider("value") == $('#slider_date').slider("option","max")) {
296
			min_slider = $('#slider_date').slider("option","min");
297
			$('#slider_date').slider("value",min_slider);
298
		}
299
 
300
		timerSlider = setInterval("incrementerValeurSlider()",150);
301
		$('#demarrer_slider').attr('disabled', 'disabled');
302
	});
303
 
304
	$('#arreter_slider').click(function() {
305
		if(timerSlider != null) {
306
			clearInterval(timerSlider);
307
			$('#demarrer_slider').removeAttr('disabled');
308
		}
309
	});
310
 
311
}
312
 
313
function initialiserValeursParDefaut() {
314
	id_type_espece = $('select#selecteur_liste_types_especes').val("2");
315
	modifierTableauEspeces();
316
	obtenirObservations();
317
}
318
 
206 aurelien 319
$('#slider_date').ready(function() {
320
	initialiserSliderDates();
237 aurelien 321
	initialiserBoutonsSlider();
206 aurelien 322
	initialiserListeTypesEspeces();
323
	initialiserListeEspeces();
324
	initialiserListeEvenements();
325
	initialiserListeAnnees();
237 aurelien 326
	initialiserValeursParDefaut();
206 aurelien 327
});
328
 
329
 
330
/**
331
	************************************************************************************************
332
	************************************************************************************************
333
 
334
	    Fonctions concernant la carte permettant de pointer d'afficher l'emplacement des observation
335
 
336
	************************************************************************************************
337
	************************************************************************************************
338
**/
339
 
340
function initialiserCarte() {
341
 
342
	if($('#map_canvas').length == 0) {
343
		return;
344
	}
345
 
346
	var latlng = new google.maps.LatLng(47.0504, 2.2347);
347
	var myOptions = {
348
		zoom: 5,
349
		center: latlng,
350
		mapTypeId: google.maps.MapTypeId.HYBRID
351
	};
352
 
353
	map = new google.maps.Map(document.getElementById("map_canvas"),
354
    	myOptions);
355
 
356
	marker = new google.maps.Marker({
357
	      position: latlng,
358
	      title:""
359
	});
237 aurelien 360
 
361
	$('.lien_vers_profil').live('click', function(event) {
362
		event.preventDefault();
363
		window.open($(this).attr('href'));
364
		return false;
365
	});
206 aurelien 366
}
367
 
368
function obtenirObservations() {
369
 
237 aurelien 370
	requete = '?annee='+annee;
206 aurelien 371
 
372
	if(type_espece != '0' && espece == '0') {
373
		requete += '&type_espece='+type_espece;
374
	}
375
 
376
	if(espece != '0') {
377
		requete += '&espece='+espece;
378
	}
379
 
380
	if(evenement != '0') {
381
		requete += '&evenement='+evenement;
382
	}
383
 
207 aurelien 384
	if(departement != '0') {
385
		requete += '&departement='+departement;
386
	}
387
 
206 aurelien 388
	$.get(getUrlBaseJrest()+'OdsExport/ExportObservationJson/'+requete, function(data) {
389
 
390
		infos_observations = jQuery.parseJSON(data);
391
 
392
		if(tableau_marqueurs.length > 0) {
393
			viderMarqueurs();
394
		}
395
 
396
		for(i in infos_observations) {
397
			creerEtAjouterMarqueur(i, infos_observations[i]);
398
		}
237 aurelien 399
 
400
		afficherObservations();
206 aurelien 401
	});
402
}
403
 
404
function creerEtAjouterMarqueur(id_marqueur, infos_obs) {
405
 
406
	latlng = new google.maps.LatLng(infos_obs['latitude'],infos_obs['longitude']);
407
 
237 aurelien 408
	var chaine_couleur = '';
409
 
410
	for(i in infos_obs.obs) {
411
		var observation = infos_obs.obs[i];
412
 
413
		if(typeof(tableau_couleurs_en_cours[observation.id_espece]) != 'undefined') {
414
			chaine_couleur += tableau_couleurs_en_cours[observation.id_espece]+",";
415
		}
416
	}
417
 
418
	chaine_couleur = chaine_couleur.slice(0,chaine_couleur.length - 1);
419
    var image = obtenirImagePourChaineCouleur(chaine_couleur);
420
 
421
 	tableau_marqueurs[id_marqueur] = new google.maps.Marker({
206 aurelien 422
	      position: latlng,
237 aurelien 423
	      title:infos_obs.evenenement,
424
	      icon:image,
425
	      optimized: false
206 aurelien 426
	});
237 aurelien 427
 
206 aurelien 428
	google.maps.event.addListener(tableau_marqueurs[id_marqueur], 'click', function() {
429
 
430
		contenu_fenetre = formaterContenuFenetre(infos_obs.obs);
431
		infowindow.close();
432
		infowindow.content = contenu_fenetre;
433
		infowindow.open(map,this);
434
	});
435
 
436
	tableau_marqueurs[id_marqueur].setDraggable(false);
437
	tableau_marqueurs[id_marqueur].setClickable(true);
438
 
439
	tableau_marqueurs[id_marqueur].setMap(map);
440
 
441
}
442
 
443
function viderMarqueurs() {
444
 
445
	infowindow.close();
446
	for(i in tableau_marqueurs) {
447
		tableau_marqueurs[i].setMap(null);
448
	}
449
 
450
	tableau_marqueurs = new Array();
451
}
452
 
237 aurelien 453
function afficherObservations() {
454
 
455
	var chaine_couleur = '';
456
 
457
	for(i in tableau_marqueurs) {
458
		id_obs = i;
459
		obs_associees = infos_observations[id_obs];
460
 
461
		afficher_marqueur = false;
462
		chaine_couleur = '';
463
 
464
		for(j in obs_associees.obs) {
465
 
466
			date_obs = obs_associees.obs[j].date;
467
			afficher_marqueur = dateEstDansIntervalle(date_obs);
468
 
469
			if(afficher_marqueur) {
470
				if(typeof(tableau_couleurs_en_cours[obs_associees.obs[j].id_espece]) != 'undefined') {
471
					chaine_couleur += tableau_couleurs_en_cours[obs_associees.obs[j].id_espece]+",";
472
				}
473
			}
474
		}
475
 
476
		if(afficher_marqueur && chaine_couleur != '') {
477
			chaine_couleur = chaine_couleur.slice(0,chaine_couleur.length - 1);
478
		    var image = obtenirImagePourChaineCouleur(chaine_couleur);
479
			tableau_marqueurs[i].setIcon(image);
480
 
481
			if(!tableau_marqueurs[i].getVisible()) {
482
				tableau_marqueurs[i].setVisible(true);
483
			}
484
		} else {
485
			tableau_marqueurs[i].setVisible(false);
486
		}
487
	}
488
}
489
 
490
function obtenirImagePourChaineCouleur(chaine_couleur) {
491
 
492
	chaine_couleur = encodeURIComponent(chaine_couleur);
493
	var image = getUrlBaseJrest()+"OdsMarqueur/point?couleurs="+chaine_couleur;
494
 
495
    return image;
496
}
497
 
498
function convertirDateObsVersJs(chaine_date) {
499
 
500
	tableau_date = chaine_date.split('/');
501
	date_obs = new Date();
502
 
503
	date_obs.setDate(tableau_date[0]);
504
	date_obs.setMonth(tableau_date[1]);
505
	date_obs.setFullYear(tableau_date[2]);
506
 
507
	return date_obs;
508
}
509
 
510
function dateEstDansIntervalle(t_obs) {
511
 
512
	date_obs = convertirDateObsVersJs(t_obs);
513
 
514
	dans_intervalle = false;
515
 
516
	var dateDebutAnnee = new Date();
517
	dateDebutAnnee.setDate(1);
518
	dateDebutAnnee.setMonth(1);
519
	dateDebutAnnee.setFullYear(date_obs.getFullYear());
520
	var quantieme = (date_obs.getTime() - dateDebutAnnee.getTime()) / (24 * 3600 * 1000)+1;
521
 
522
	if($('#slider_date').slider("value") >= quantieme) {
523
		dans_intervalle = true;
524
	}
525
 
526
	return dans_intervalle;
527
}
528
 
529
function comparerDates(date_1, date_2){
530
	diff = date_1.getTime()-date_2.getTime();
531
	return (diff==0?diff:diff/Math.abs(diff));
532
}
533
 
210 aurelien 534
function obtenirMarqueurPourStade(stade) {
535
 
536
	iconeStade = '../images/marqueur_'+stade+'.png';
537
 
538
	return iconeStade;
539
}
540
 
206 aurelien 541
function formaterContenuFenetre(infos_obs) {
542
 
543
	contenu_fenetre = '';
237 aurelien 544
	date_courante = new Date(annee,mois,jour);
206 aurelien 545
 
237 aurelien 546
	for(i in infos_obs) {
206 aurelien 547
 
237 aurelien 548
		t_obs = infos_obs[i].date;
549
 
550
		if(dateEstDansIntervalle(t_obs)) {
551
			nom_stade ='';
552
			if(infos_obs[i].code_bbch != '') {
553
				nom_stade = ' stade '+infos_obs[i].code_bbch;
554
			}
555
 
556
			contenu_fenetre += '<div class="fenetre_infos">';
557
			contenu_fenetre += '<div class="nom_sci">'+infos_obs[i].nom_scientifique+'</div>';
558
			contenu_fenetre += '<div class="nom_sci">'+infos_obs[i].evenenement+nom_stade+'</div>';
559
			contenu_fenetre += '<div class="date_obs"> Observ&eacute; le : '+infos_obs[i].date+' </div>';
560
			contenu_fenetre += construireUrlProfilParticipant(infos_obs[i].participant);
561
			contenu_fenetre += '</div><br />';
206 aurelien 562
		}
563
	}
564
 
565
	return contenu_fenetre;
566
}
237 aurelien 567
 
568
function construireUrlProfilParticipant(id) {
569
	return '<a class="lien_vers_profil" href="http://obs-saisons.fr/user/'+id+'"> Voir l\'auteur </a>';
570
}
206 aurelien 571
 
572
 
573
$('#map_canvas').ready(function() {
574
	initialiserCarte();
575
});