Subversion Repositories Sites.obs-saisons.fr

Rev

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

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