私はこのページにいくつかのAmStockChartを持っています。それらは折れ線グラフです。データはJSON形式でMySQL DBから取得されます。ユーザーがグラフの点(箇条書き)をクリックすると、ユーザーがデータを変更して保存できるフォームが表示されます。この場合、グラフを再描画する必要があり、これを把握することはできません。ここで再描画AmStockChart
は、コードの一部です:
//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);
}
});
私は罰金描かれたすべてのチャートを取得します。しかし、ここに2つの問題があります。後で 'グラフ'変数としてアクセスできない最初の問題は、最後に描かれたグラフだけを指しています。 2番目の問題は、この最後のグラフを再描画しようとしても結果が得られないということです。
何もしなかった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();
});
、すなわちチャートが再描画されません:私は次のことを試してみましたチャートを再描画する
。
function chartClick (event) {
var chartdiv = event.event.target.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.id
$('#chart_n').val(chartdiv);
...
}
し、その場所でそのdiv要素とクレート新しいものからチャートを削除するためにそれを使用する:私は何ができる
唯一のものはでクリックイベントで隠し入力でチャートのdivを格納することですvalidateData()はもっと遅くなります。そうして
dataSet.dataProvider = yourDataArray;
とあなたのコードはまた、パネル/データセットを変更する必要がありますしかし
stockChart.validateData();
を呼び出し、:
私はすべてを行うことができませんでしたが、私はbuttion clickで変わったと思われる2つのデータソースを使って簡単なコードを作っています。グラフは再描画するべきですが、そうではありません。これは次のとおりです。http://jsfiddle.net/33SDv/2/ – user164863
また、chart.mainDataSet = dataSetを設定する必要があります。これは以前のデータセットを記憶して使用するためです。 – zeroin