Subversion Repositories Sites.obs-saisons.fr

Rev

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);
  }
});