1

HighChartsを使用して、折れ線グラフと棒グラフを含むグラフを表示しています。デフォルトでは、シリーズヘッダーをクリックするまでバーシリーズは表示されません。その場でバーを更新するコードがありますが、チャートが表示されていない間は既存の情報を取得できないことに気付きました。

サーバーからデータを取得するとき、既存のポイントを更新し、新しいポイントがある場合は追加しようとします。このコードは、シリーズが表示されている場合はうまく機能しますが、シリーズが表示されていない場合はをchart.series[1].data[idx]返しますundefined。シリーズをクリックするとグラフが表示されるので、データがどこかにあることがわかります。私は何が間違っているのですか?

if (chart.series[1].data[idx] && chart.series[1].data[idx].y != inRate)
{   
    chart.series[1].data[idx].update(inRate);
    redraw = true;
}
else if (!chart.series[1].data[idx])
{
    var time = IntervalToTime(i, doorInterval);
    chart.series[1].addPoint([time, inRate], false, false);
    redraw = true;
}

いくつかの調査の後、私はいくつかの進歩を遂げました。明らかに、系列が少なくとも1回表示されるまでデータ配列は埋められないため、そこにデータが存在するかどうかを確認することはできません。データが保持されている処理済みデータキューが機能しているように見えますが、このメソッドを実行すると、呼び出しようとしたときにエラーが発生しますchart.series[1].data[idx].update(inRate)

if (chart.series[1].processedXData[idx] && chart.series[1].processedYData[idx] != inRate)
{
    chart.series[1].data[idx].update(inRate);
    redraw = true;
}
else if (!chart.series[1].processedXData[idx])
{
    var time = IntervalToTime(i, doorInterval);
    chart.series[1].addPoint([time, inRate], false, false);
    redraw = true;
}
4

1 に答える 1

0

調査の結果、問題が見つかりました。どうやら、dataシリーズが少なくとも1回表示されるまで配列は埋められないため、そこにデータが存在するかどうかを確認することはできません。動作しているように見えるデータが保持されている処理済みデータキューを見つけました。

if (chart.series[1].processedXData[idx] && chart.series[1].processedYData[idx] != inRate)
{
    chart.series[1].data[idx].update(inRate);
    redraw = true;
}
else if (!chart.series[1].processedXData[idx])
{
    var time = IntervalToTime(i, doorInterval);
    chart.series[1].addPoint([time, inRate], false, false);
    redraw = true;
}
于 2013-03-01T09:28:11.353 に答える