Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 240 | Rev 264 | 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';
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
 
262 gduche 302
		infos_observations = data;
240 aurelien 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
});