Pregunta

Estoy intentando actualizar un gráfico circular dojo utilizando el método updateSeries. Invoco el método después de realizar una llamada AJAX para obtener una versión actualizada de los datos matriz de JavaScript.

Aquí está el Javascript:

var eventByReasonsData = .... //gets populated on jsp page compile 

var theme = dojox.charting.themes.Julie;

var eventReasonsChart = null;


function makeEventsByReason() {

    var dc = dojox.charting;
    eventReasonsChart = new dc.Chart2D("eventsByReasonChart");
    eventReasonsChart.setTheme( theme ).addPlot("default", {
        type: "Pie",
        font: "normal normal 8pt Tahoma",
        fontColor: "black",
        labelOffset: -20,
        radius: 100

    }).addSeries("eventSeries", eventByReasonsData );

    var anim_a = new dc.action2d.MoveSlice(eventReasonsChart, "default");

    var anim_b = new dc.action2d.Highlight(eventReasonsChart, "default");

    var anim_c = new dc.action2d.Tooltip(eventReasonsChart, "default");

    eventReasonsChart.render();


}

Aquí está mi HTML:

        <div id="eventsByReasonChart" ></div>

Y aquí está el código JavaScript que hace la llamada AJAX:

     new Ajax.Request( url, {
        method: 'post',
        parameters: params,
        onComplete: function(response) {


            if( response.responseText != "empty" )
            {
                var chart = eventReasonsChart;

                eventByReasonsData = response.responseText;

                chart.updateSeries( "eventSeries", eventByReasonsData );

                chart.render();                                                 
            }

        }
    });

Por último, aquí es cómo se formatea los datos de mi al ser enviado a la tabla:

[{ y:48 },{ y:1 },{ y:1 },{ y:14 },{ y:7 },{ y:3 },{ y:8 }]

Cuando la carta se dibuja inicialmente, todo es fresco, no hay problemas. Después de hacer la llamada Ajax, que recibo de los nuevos datos, se realiza la llamada de actualización y el gráfico desaparece. No hay errores que puedo ver en la consola.

alguna idea?

¿Fue útil?

Solución

sospecho que eventByReasonsData es una cadena, cuando updateSeries() espera una matriz. Puede utilizar dojo.fromJson() para convertir la cadena en una matriz:

chart.updateSeries( "eventSeries", dojo.fromJson(eventByReasonsData) );
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top