Neuzeichnen AmStockChart

Ich habe mehrere AmStockCharts auf der Seite. Das sind line-Graphen. Die Daten wird der Wert aus MySQL-DB im JSON-format. Wenn der Benutzer klickt auf einen graph dot (eine Kugel) und dann ein Formular bekommt gezeigt, wo Benutzer kann die Daten ändern und speichern. In diesem Fall würde ich brauchen, um neu zeichnen das Diagramm aus und ich kann nicht dieses heraus.

Hier ist das Stück code:

//drawing all charts there are
var chart;
$.getJSON('stats.php', function (data) { //get all data from all stats at once
    var i=0;
    for (chartData in data) {
        i++;
        chart = new AmCharts.AmStockChart();
        var dataSet = new AmChart.DataSet();
        dataSet.dataProvider = chartData;
        //etc. etc. here are all the single graph parameters
        $('#stats').append('<div id="chartdiv' + i + '"></div>');
        chart.write("chartdiv" + i);
    }
});

Bekomme ich alle charts fein gezeichnet. Aber hier sind zwei Probleme dann. Erste problem, dass ich keinen Zugriff später als der 'chart' variable bezieht sich nur auf den letzten chart gezeichnet. Das zweite problem ist, dass selbst wenn ich versuche neu zu zeichnen, dieses Letzte Diagramm bekomme ich kein Ergebnis.

Neu zeichnen das Diagramm habe ich versucht die folgenden:

function chart_redraw(stat) {
    $.getJSON('stat.php?redraw=' + stat, function (data) { //get data for one particular stat
    var dataSet = new AmCharts.DataSet();
    dataSet.dataProvider = data;
    ...
    chart.dataSets = [dataSet];

    var stockPanel = new AmChart.StockPanel();
    stockPanel.validateData();
    chart.panels = [stockPanel];

    chart.validateNow();
});

Das hat nichts tun, d.h. der chart nicht neu gezeichnet.

Das einzige, was ich tun konnte, ist zum speichern der chart-div in ein hidden-input im click-Ereignis von:

function chartClick (event) {
    var chartdiv = event.event.target.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.id
    $('#chart_n').val(chartdiv);
    ...
}

und dann verwenden, um entfernen Sie das Diagramm aus, das div und die Kiste neu ein auf Platz, aber es ist viel langsamer, dann wird die validateData() wäre.

InformationsquelleAutor user164863 | 2013-10-27
Schreibe einen Kommentar