1

FusionCharts PowerCharts パッケージのドラッグ可能な折れ線グラフを使用しています。

ユーザーがドラッグ可能なポイントを移動した後、グラフのデータを取得し、それをサーバー側に送信してさらに処理する必要があります。これは、グラフに組み込まれている [送信] ボタンを使用して簡単に実行できますが、ユーザーが [送信] ボタンをクリックしなくても実行できるようにしたいと考えています。

ドキュメント(特にイベント)に基づいて、ユーザーがグラフ内のポイントを移動したときに、チャートはイベントを発生させないようです。

だから今、ユーザーがグラフに加えた変更を通知する最良の方法を見つけようとしていますか?

1 つのオプションは、グラフのデータを取得する JS 関数を定期的に呼び出し、最後のチェック以降に変更されたかどうかをチェックすることです。しかし、これはかなり醜く非効率的であり、現在、JS で継続的なポーリングを実装する方法がわかりません。

私は今、グラフがある要素でマウスアップイベントをリッスンし、グラフの以前の状態への変更を確認することに傾いています。これは機能するはずですが、ユーザーは実際にポイントをドラッグせずにグラフをクリックすることがよくあります。

ここで他の明らかな解決策が欠けていますか?

4

1 に答える 1

1

解決策にたどり着く前に、私が提唱したいことがいくつかあります。

  1. ポーリングは常に悪い考えです。そして、短い間隔でのポーリングはさらに悪いです。ただし、データポイントのドラッグに自発的に反応する必要がない場合は、高間隔のポーリングで十分です。setInterval参考までに、関数または recursive を使用して、JavaScript でポーリングが行われますsetTimeout
  2. マウス イベントを追跡する場合、Flash チャートをレンダリングする場合は、wModeチャートの (ウィンドウ モード) パラメータが「ウィンドウ」に設定されていないことを確認する必要があることに注意してください。「ウィンドウ」wMode では、ブラウザーはチャート上にマウスを置いたときにマウス イベントを追跡しません。チャートを変更するには、チャートをレンダリングする前にまたはwModeを実行してください。chartInstance.setTransparent(false)chartInstance.setTransparent(true)

ユーザーがデータポイントをクリックしたかどうかがわからないため、計画したマウスイベントメソッドは役に立ちません。したがって、この方法は除外されます。

したがって、ポーリングが残ります。:(

更新 (Janne による最初のコメントの後): 両方の組み合わせを使用して、グラフでドラッグ イベントが発生したときにデータの変更を確認することが正しい解決策です。

于 2012-04-17T16:33:17.530 に答える