Rev 335 | Blame | Compare with Previous | Last modification | View Log | RSS feed
function tableauxOntAuMoinsUnElementEnCommun(haystack, arr) {
return arr.some(function (v) {
return haystack.indexOf(v) >= 0;
});
};
function obtenirNomEspeceSelectionnee() {
return $('#selecteur_liste_especes option:selected').text();
}
function obtenirNomStadeSelectionne() {
return $('#selecteur_stade option:selected').text();
}
function surChangementSelecteurEspece(id_espece_selectionnee, evenements) {
var $evenements_options = $('#selecteur_stade option');
$('#selecteur_stade option').addClass('hide');
if(id_espece_selectionnee == 0) {
$('#selecteur_stade').addClass('hide');
} else {
$('#selecteur_stade').removeClass('hide');
$evenements_options.each(function() {
var $evenement_option = $(this);
if($evenement_option.val() != 0) {
var stades_option = $evenement_option.data('evenements');
$evenement_option.toggleClass('hide', !tableauxOntAuMoinsUnElementEnCommun(evenements, stades_option));
} else {
$evenement_option.removeClass('hide');
}
});
}
// mise sur le selecteur par défaut
$('#selecteur_stade').val("0");
}
function surChangementSelecteurStade(id_stade_selectionne) {
obtenirDonneesStadePhenologiques($('#selecteur_liste_especes').val(), id_stade_selectionne)
}
function obtenirDonneesStadePhenologiques(id_espece, id_stades) {
$.get(url_jrest+'OdsExport/ExportEvolutionPhenologiqueJson?espece='+id_espece+'&evenements='+id_stades, function(e) {
var donnees_dispos = !jQuery.isEmptyObject(e);
if(donnees_dispos) {
dessinerGraphiqueEvolutionStadesPhenologiques(e, id_stades);
}
$('.aucune-donnee').toggleClass('hide', donnees_dispos);
$('.conteneur-graphique').toggleClass('hide', !donnees_dispos);
});
}
function renvoyerNomsEvenementLegendeGraphique(id_stades) {
var stades = id_stades.split(',');
var stades_legende = {};
if(stades.length == 2) {
var stade_debut = global_evenements[stades[0]];
var stade_fin = global_evenements[stades[1]];
var legende_debut = 'début '+(stade_debut.nom)+' (stade '+(stade_debut.code)+')';
var legende_fin = 'fin '+stade_fin.nom+' (stade '+stade_fin.code+')';
stades_legende[stades[0]] = legende_debut;
stades_legende[stades[1]] = legende_fin;
} else {
var stade_unique = global_evenements[stades[0]];
stades_legende[stades[0]] = stade_unique.nom;
}
return stades_legende;
}
function dessinerGraphiqueEvolutionStadesPhenologiques(data, id_stades) {
var noms_evenements = renvoyerNomsEvenementLegendeGraphique(id_stades);
var nb_evenements = 0;
var graph_data = new Array();
for (var id_evenement in data) {
if (!data.hasOwnProperty(id_evenement)) continue;
var data_evenement = data[id_evenement];
graph_data.push({
type: "scatter",
mode: 'lines+markers',
name: noms_evenements[id_evenement],
x: data_evenement.x,
y: data_evenement.y,
text: data_evenement.text,
hoverinfo: 'text'
});
nb_evenements++;
}
var nom_espece_selectionnee = obtenirNomEspeceSelectionnee();
var nom_stade_selectionne = obtenirNomStadeSelectionne().toLowerCase();
var titre_graphique = 'Dates moyennes de ';
if(nb_evenements > 1) {
titre_graphique += 'début et fin de ';
}
titre_graphique += nom_stade_selectionne+' pour l\'espèce '+nom_espece_selectionnee;
var layout = {
title: titre_graphique,
xaxis: {
title: 'Années',
showgrid: false,
zeroline: false,
tickvals: annees_observations,
ticktext: annees_observations,
autoticks: false,
},
yaxis: {
title: '',
autoticks: false,
tickvals: [1,2,3,4,5,6,7,8,9,10,11,12],
ticktext: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
},
// pour la légende apparaisse en bas du graphique afin de ne pas gâcher
// presque un tiers de l'espace de la page
legend:{
xanchor:"center",
yanchor:"top",
y:-0.3,
x:0.5
}
};
var conteneur_graphique = document.getElementById('conteneur-graphique');
Plotly.purge(conteneur_graphique);
var graphique = Plotly.plot(conteneur_graphique, graph_data, layout);
}
$(document).ready(function() {
$('#selecteur_liste_especes').change(function(e) {
var conteneur_graphique = document.getElementById('conteneur-graphique');
Plotly.purge(conteneur_graphique);
surChangementSelecteurEspece($(this).val(), $(this).find(":selected").data('id-evenements'));
});
$('#selecteur_stade').change(function(e) {
var conteneur_graphique = document.getElementById('conteneur-graphique');
Plotly.purge(conteneur_graphique);
if($(this).val() == "0") {
return;
}
surChangementSelecteurStade($(this).val());
});
if(espece_defaut != null && stades_defaut != 0) {
obtenirDonneesStadePhenologiques(espece_defaut, stades_defaut);
}
});