Changeset 8041 for plugins_spip


Ignore:
Timestamp:
01/04/14 16:58:07 (6 years ago)
Author:
kent1
Message:

On mutualise un peu plus de code pour les perspectives

File:
1 edited

Legend:

Unmodified
Added
Removed
  • plugins_spip/terraeco_infographie/trunk/javascript/infographie.js

    r8040 r8041  
    100100                xmin = parseInt(values[0].axe_x);
    101101                xmax = parseInt(values[values.length-1].axe_x);
    102                        
     102
    103103                ymin = d3.min(values, function(d) { return parseFloat(d.axe_y); });
    104104                ymax = ymax_origine = d3.max(values, function(d) { return parseFloat(d.axe_y); });
     
    142142                translate_defaut = '-'+x(d.axe_x);
    143143
    144                 if(diff > 0)
    145                         translate_defaut = parseFloat(translate_defaut)+(diff*step);
     144                if(diff > 0) translate_defaut = parseFloat(translate_defaut)+(diff*step);
    146145
    147146                // Afficher le premier slide ou les infos de scroll
     
    168167                climat_infographie_interactions();
    169168
    170                 if(texte_debut){
     169                if(texte_debut)
    171170                        climat_infobox_update('<div class="contenu_fin">'+texte_debut+'</div>',function(){
    172171                                        callback_infobox_close = function(){
     
    177176                                        }
    178177                                });
    179                 }
    180178                else
    181179                        // Ajouter l'infobox pour les anecdotes que l'on cache automatiquement
     
    355353function climat_draw(translatex){
    356354        d3.selectAll(".apresnaissance,.avtnaissance,.axis,.birth-line,.today-line,.dots,.legende,.start-line,.bloc_yaxis").remove();
    357         d3.select(".paths")
    358                 .attr("transform", "translate("+translatex+", 0)")
     355        d3.select(".paths").attr("transform", "translate("+translatex+",0)")
    359356       
    360357        // On ajoute la ligne de données pour la période aprÚs naissance
    361         svg.selectAll('.paths').append("path")
    362                 .attr("class", "line apresnaissance")
    363                 .attr("d", line(values2));
     358        svg.selectAll('.paths').append("path").attr("class", "line apresnaissance").attr("d", line(values2));
    364359
    365360        // Ajout la ligne de données avant la naissance
    366         svg.selectAll('.paths').append("path")
    367                 .attr("class","line avtnaissance")
    368                 .attr("d",line(values1));
     361        svg.selectAll('.paths').append("path").attr("class","line avtnaissance").attr("d",line(values1));
    369362
    370363        // Ajout de l'axe X, on fait une rotation des textes à -270°
    371364        svg.selectAll('.paths').append("g")
    372                 .attr("class", "x axis")
    373                 .attr("transform", "translate(0," + height + ")")
     365                .attr("class", "x axis").attr("transform", "translate(0,"+height+")")
    374366                .call(xAxis)
    375367                .selectAll("text")
     
    388380        jQuery('.x .tick text').each(function(){
    389381                // On enlÚve tous les ticks > aujourd'hui sauf le dernier'
    390                 if(parseInt(jQuery(this).text()) > values2[values2.length-1].axe_x && parseInt(jQuery(this).text()) != values[values.length-1].axe_x){
     382                if(parseInt(jQuery(this).text()) > values2[values2.length-1].axe_x && parseInt(jQuery(this).text()) != values[values.length-1].axe_x)
    391383                        jQuery(this).remove();
    392                 }else{
     384                else{
    393385                        var classe = 'tick';
    394386                        if(parseInt(jQuery(this).text()) < value_origine.axe_x)
     
    410402        // On enlÚve les ticks de l'axe y trop haut
    411403        jQuery('.y .tick text').each(function(i){
    412                 if(parseFloat(jQuery(this).text()) > ymax_origine)
    413                         jQuery(this).parent().remove();
     404                if(parseFloat(jQuery(this).text()) > ymax_origine) jQuery(this).parent().remove();
    414405        });
    415406       
     
    465456                                .attr("xlink:href", image_naissance.url)
    466457                                .attr("x", function(d){return x(value_origine.axe_x)-(image_naissance.width/2);})
    467                                 .attr("width", image_naissance.width)
    468                                 .attr("height", image_naissance.height);
     458                                .attr("width", image_naissance.width).attr("height", image_naissance.height);
    469459        }
    470460       
     
    487477                        .attr("xlink:href", image_depart.url)
    488478                        .attr("x", function(d){ return x(d.axe_x)-(image_depart.width/2);})
    489                         .attr("width", image_depart.width)
    490                         .attr("height", image_depart.height);
     479                        .attr("width", image_depart.width).attr("height", image_depart.height);
    491480
    492481        // Ajout du groupe pour Aujourd'hui
     
    508497                        .attr("xlink:href", image_aujd.url)
    509498                        .attr("x", function(d){return x(d.axe_x)-(image_aujd.width/2);})
    510                         .attr("width", image_aujd.width)
    511                         .attr("height", image_aujd.height);
     499                        .attr("width", image_aujd.width).attr("height", image_aujd.height);
    512500}
    513501
     
    636624        jQuery('.'+infobox_class).on('infobox_open',function(){
    637625                moving = move_again = false;
    638                 setTimeout(function(){infobox_fermer=true;},1200);
     626                setTimeout(function(){infobox_fermer=true;},700);
    639627                clearInterval(progress_mousedown);
    640628        });
     
    662650                        .attr("width", image_demain.width)
    663651                        .attr("height", image_demain.height);
     652       
     653        var legende_perspective_group = svg.select('.paths').append("g").attr("class","legende-perspective");
     654        var xdata_height = d3.select('.x.axis').node().getBBox().height;
     655        var rectangle = legende_perspective_group.append("rect")
     656                .attr("class","legende_perspective")
     657                .attr("x",x(values2[values2.length-1].axe_x)+12)
     658                .attr("y",height)
     659                .attr("width",x(values[values.length-1].axe_x)-x(values2[values2.length-1].axe_x)-20)
     660                .attr("height",xdata_height);
     661        var text_rectangle = legende_perspective_group.append("text")
     662                .attr("x",x(values[values.length-1].axe_x)-20)
     663                .attr("y",(height+25))
     664                .attr("class","legende_perspective_text")
     665                .text(infographie_lang.texte_estimations_ncdc);
     666       
     667        var texte_fin = "<div class='contenu_fin'>"+infographie_lang.texte_infos_giec+"</div>";
     668        climat_infobox_update(texte_fin);
    664669}
    665670
     
    673678                         */
    674679                        if((values[values.length-1].axe_x+1) < row[0]){
    675                                 var j =  1, i = row[0] - values[values.length-1].axe_x;
    676                                 value_haute = values_perspective1_haute[values_perspective1_haute.length-1];
    677                                 value_mediane = values_perspective1_mediane[values_perspective1_mediane.length-1];
    678                                 var moyenne_haute = (row[3] - value_haute.axe_y)/i, moyenne_basse = (row[1] - value_haute.axe_y1)/i, mediane = (row[2] - value_mediane.axe_y)/i;
     680                                var j = 1, i = row[0] - values[values.length-1].axe_x,
     681                                        value_haute = values_perspective1_haute[values_perspective1_haute.length-1],
     682                                        value_mediane = values_perspective1_mediane[values_perspective1_mediane.length-1],
     683                                        moyenne_haute = (row[3] - value_haute.axe_y)/i, moyenne_basse = (row[1] - value_haute.axe_y1)/i, mediane = (row[2] - value_mediane.axe_y)/i;
    679684                                while (j<i){
    680685                                        var axe_x = (parseFloat(values[values.length-1].axe_x)+1)
     
    729734                        var parsedCSV = d3.csv.parseRows(datasetText);
    730735                        // On ajoute la ligne de données pour la période aprÚs naissance
    731                         parsedCSV.forEach(function(row, i){
     736                        parsedCSV.forEach(function(row,i){
    732737                                /**
    733738                                 * On va remplir les années manquantes
    734739                                 */
    735740                                if((values_perspective2_haute.length > 0) && (values_perspective2_haute[values_perspective2_haute.length-1].axe_x+1) < row[0]){
    736                                         j =  1;
     741                                        j = 1;
    737742                                        i = parseInt(row[0]) - values_perspective2_haute[values_perspective2_haute.length-1].axe_x;
    738                                         var value_haute = values_perspective2_haute[values_perspective2_haute.length-1];
    739                                         var value_mediane = values_perspective2_mediane[values_perspective2_mediane.length-1];
    740                                         var moyenne_haute = (row[3] - value_haute.axe_y)/i;
    741                                         var moyenne_basse = (row[1] - value_haute.axe_y1)/i;
    742                                         var mediane = (row[2] - value_mediane.axe_y)/i;
     743                                        var value_haute = values_perspective2_haute[values_perspective2_haute.length-1],
     744                                                value_mediane = values_perspective2_mediane[values_perspective2_mediane.length-1],
     745                                                moyenne_haute = (row[3] - value_haute.axe_y)/i,
     746                                                moyenne_basse = (row[1] - value_haute.axe_y1)/i,
     747                                                mediane = (row[2] - value_mediane.axe_y)/i;
    743748                                        while (j<i){
    744749                                                var axe_x = (parseFloat(values_perspective2_haute[values_perspective2_haute.length-1].axe_x)+1);
     
    759764                        });
    760765                       
    761                         values_perspective1_haute.forEach(function(row, i){
     766                        values_perspective1_haute.forEach(function(row,i){
    762767                                if(values_perspective1_haute[i].axe_y1 >= values_perspective2_haute[i].axe_y){
    763768                                        values_perspective_trou.push({
     
    816821                        climat_drawline_demain();
    817822                       
    818                         var legende_perspective_group = svg.select('.paths').append("g").attr("class","legende-perspective");
    819                         var xdata_height = d3.select('.x.axis').node().getBBox().height;
    820                         var rectangle = legende_perspective_group.append("rect")
    821                                 .attr("class","legende_perspective")
    822                                 .attr("x",x(values2[values2.length-1].axe_x)+12)
    823                                 .attr("y",height)
    824                                 .attr("width", x(values[values.length-1].axe_x)-x(values2[values2.length-1].axe_x)-20)
    825                                 .attr("height", xdata_height);
    826                         var text_rectangle = legende_perspective_group.append("text")
    827                                 .attr("x",x(values[values.length-1].axe_x)-20)
    828                                 .attr("y",(height+25))
    829                                 .attr("class", "legende_perspective_text")
    830                                 .style("text-anchor", "end")
    831                                 .text(infographie_lang.texte_estimations_ncdc);
    832                         var texte_fin = "<div class='contenu_fin'>"+infographie_lang.texte_infos_giec+"</div>";
    833                        
    834                         climat_infobox_update(texte_fin);
    835                        
    836823                        step = x(values[values.length-1].axe_x)-x(values[values.length-2].axe_x);
     824
    837825                        perspective_ok = true;
    838826                        // Si on a donné une fonction comme callback => on l'exécute
     
    902890                                        .attr("class", "line perspective perspective2_mediane")
    903891                                        .attr("d", line(values_perspective2_mediane));
    904                         // Si on a donné une fonction comme callback => on l'exécute
    905892                       
    906893                        climat_drawline_demain();
    907894                       
    908                         var legende_perspective_group = svg.select('.paths').append("g").attr("class","legende-perspective");
    909                         var xdata_height = d3.select('.x.axis').node().getBBox().height;
    910                         var rectangle = legende_perspective_group.append("rect")
    911                                 .attr("class","legende_perspective")
    912                                 .attr("x",x(values2[values2.length-1].axe_x)+12)
    913                                 .attr("y",height)
    914                                 .attr("width",x(values[values.length-1].axe_x)-x(values2[values2.length-1].axe_x)-20)
    915                                 .attr("height",xdata_height);
    916                         var text_rectangle = legende_perspective_group.append("text")
    917                                 .attr("x",x(values[values.length-1].axe_x)-20)
    918                                 .attr("y",(height+25))
    919                                 .attr("class","legende_perspective_text")
    920                                 .text(infographie_lang.texte_estimations_ncdc);
    921                         var texte_fin = "<div class='contenu_fin'>"+infographie_lang.texte_infos_giec+"</div>";
    922                                 climat_infobox_update(texte_fin);
    923                        
    924895                        perspective_ok = true;
     896                        // Si on a donné une fonction comme callback => on l'exécute
    925897                        if(typeof(callback) == 'function') callback();
    926898                });
Note: See TracChangeset for help on using the changeset viewer.