Highcharts: チャートのドリルダウンイベントは、積み上げ列シリーズで複数回発生します

作成日 2014年04月29日  ·  14コメント  ·  ソース: highcharts/highcharts

Axisラベルをクリックするときに、すべてのポイントでdoDrilldownメソッドを呼び出す理由を誰かが説明できますか?
これにより、チャートの「ドリルダウン」イベントが複数回発生します。
これは、非同期でドリルダウンする場合は少し悪いです。

                    .addClass('highcharts-drilldown-axis-label')
                    .css(chart.options.drilldown.activeAxisLabelStyle)
                    .on('click', function () {
                        each(tickLabel.ddPoints, function (point) {
                            if (point.doDrilldown) {
                                point.doDrilldown(true);
                            }
                        });
                        chart.applyDrilldown();
                    });
Done Stale

最も参考になるコメント

回避策として、ドリルダウンイベントパラメータのpointspointを使用し、次の2つの状況でのみプロシージャを実行します。

  • pointsfalse 、チャートポイントをクリックすることを意味します
  • pointpoints[0] pointと同じで、チャートカテゴリをクリックすることを意味します。これにより、カテゴリをクリックした場合にイベントプロシージャが1回だけ実行されます。

次のような:

if (!e.points || e.points[0] == e.point) {
    ......
}

全てのコメント14件

重複:#2922?

確かにこれは最善の解決策ではありませんが、公式の修正を待っている間に私のために働いたパッチです。

v4.0.3からv4.0.4では、ドリルダウンチャートで重複したシリーズがレンダリングされないように修正されましたが、イベントは引き続きN回発生します。ここで、Nは同じxAxisを共有するメインチャート上のシリーズの数です。点。

ティックラベルのクリックイベントで、「一意のドリルダウンIDのチェック」を追加しました。

-> Drilldown.src.js 542〜554行目(Highcharts-4.0.4)

tickLabel
    .addClass('highcharts-drilldown-axis-label')
    .css(chart.options.drilldown.activeAxisLabelStyle)
    .on('click', function () {
        var uniqueDrilldowns = {};
        each(tickLabel.ddPoints, function (point) {
            if (point.doDrilldown && !uniqueDrilldowns[point.drilldown]) {
                uniqueDrilldowns[point.drilldown] = true;
                point.doDrilldown(true);
            }
        });
        chart.applyDrilldown();
    });

問題は、私が見つけたドリルダウンのすべてのバージョンで引き続き存在します。
単一のドリルダウンカテゴリに複数のシリーズがある場合に発生する複数のドリルダウンイベントを解決する方法はありませんか?

ありがとう。

注:2つ目のシリーズを追加して、pawelfus#2922の例から分岐しました。
http://jsfiddle.net/cf71y1kh/1/
カテゴリラベルをクリックすると、2つのドリルダウンコールが発生していることがわかります。

はい、この問題も発生します。複数のシリーズがあり、ラベルからドリルダウンしようとすると、ドリルダウンイベントが2回発生し、 Uncaught TypeError: Cannot read property 'xAxis' of nullエラーが発生します。

IIRC iは、 @ mestremutenのパッチと同様のsthで「修正」しましたが、このコードは、

各ポイントのドリルダウンイベントを発生させることになっています。 http://api.highcharts.com/highcharts/chart.events.drilldownを参照して

ドリルアップと同様に、すべてのポイントがドリルダウンした後に発生するdrilldownallイベントを追加すると、役に立ちますか?

@TorsteinHonsi有望にdrilldownallイベントを使用できるようです。

回避策として、ドリルダウンイベントパラメータのpointspointを使用し、次の2つの状況でのみプロシージャを実行します。

  • pointsfalse 、チャートポイントをクリックすることを意味します
  • pointpoints[0] pointと同じで、チャートカテゴリをクリックすることを意味します。これにより、カテゴリをクリックした場合にイベントプロシージャが1回だけ実行されます。

次のような:

if (!e.points || e.points[0] == e.point) {
    ......
}

@pzgz @TorsteinHonsi

ドリルダウンオールイベントを含めるためにdrilldown.jsが更新されましたか?

回避策として、ドリルダウンイベントパラメータのpointspointを使用し、次の2つの状況でのみプロシージャを実行します。

* `points` is `false`, means click on chart point

* `point` is equal to `points[0]`, means click on chart category, by this, the event procedure will only be executed once if click on category

次のような:

if (!e.points || e.points[0] == e.point) {
    ......
}

回避策をありがとう!

回避策として、ドリルダウンイベントパラメータのpointspointを使用し、次の2つの状況でのみプロシージャを実行します。

  • pointsfalse 、チャートポイントをクリックすることを意味します
  • pointpoints[0] pointと同じで、チャートカテゴリをクリックすることを意味します。これにより、カテゴリをクリックした場合にイベントプロシージャが1回だけ実行されます。

次のような:

if (!e.points || e.points[0] == e.point) {
    ......
}

ドリルアップで同じものを処理することについて何か提案はありますか? ポイント以降、ドリルアップイベントで利用できないポイントはありますか?

こんにちは@sansmash

chart.events.drillupallイベントがあります。 drilldownallはありません

こんにちは@sansmash

chart.events.drillupallイベントがあります。 drilldownallはありません

それはうまくいきました! ありがとうございました。

この問題は、最近のアクティビティがないため、自動的に古いものとしてマークされています。 それ以上のアクティビティが発生しない場合は閉じられます。 あなたの貢献に感謝します!

このページは役に立ちましたか?
0 / 5 - 0 評価