Frage

Ich versuche, ein Dojo Kreisdiagramm mit der updateSeries Methode zu aktualisieren. Ich rufe die Methode nach einem Ajax-Aufruf Durchführung ein aktualisierten JavaScript-Array-Daten zu erhalten.

Hier ist die 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();


}

Hier ist mein HTML:

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

Und hier ist die Javascript, um den AJAX-Aufruf zu machen:

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

        }
    });

Schließlich ist hier, wie meine Daten formatiert wird, wenn auf die Tabelle gesendet werden:

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

Wenn das Diagramm zunächst gezeichnet wird, ist alles cool, keine Probleme. Nachdem Sie den Ajax-Aufruf, erhalte ich die neuen Daten, wird das Update callte und das Diagramm verschwindet. Keine Fehler, dass ich auf der Konsole sehen kann.

irgendwelche Ideen?

War es hilfreich?

Lösung

Ich vermute, dass eventByReasonsData ein String ist, wenn updateSeries() ein Array erwartet. Sie können dojo.fromJson() verwenden, um die Zeichenfolge in ein Array zu konvertieren:

chart.updateSeries( "eventSeries", dojo.fromJson(eventByReasonsData) );
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top