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();
});
重複:#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
イベントを使用できるようです。
回避策として、ドリルダウンイベントパラメータのpoints
とpoint
を使用し、次の2つの状況でのみプロシージャを実行します。
points
はfalse
、チャートポイントをクリックすることを意味しますpoint
はpoints[0]
point
と同じで、チャートカテゴリをクリックすることを意味します。これにより、カテゴリをクリックした場合にイベントプロシージャが1回だけ実行されます。次のような:
if (!e.points || e.points[0] == e.point) {
......
}
@pzgz @TorsteinHonsi
ドリルダウンオールイベントを含めるためにdrilldown.jsが更新されましたか?
回避策として、ドリルダウンイベントパラメータの
points
とpoint
を使用し、次の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) { ...... }
回避策をありがとう!
回避策として、ドリルダウンイベントパラメータの
points
とpoint
を使用し、次の2つの状況でのみプロシージャを実行します。
points
はfalse
、チャートポイントをクリックすることを意味しますpoint
はpoints[0]
point
と同じで、チャートカテゴリをクリックすることを意味します。これにより、カテゴリをクリックした場合にイベントプロシージャが1回だけ実行されます。次のような:
if (!e.points || e.points[0] == e.point) { ...... }
ドリルアップで同じものを処理することについて何か提案はありますか? ポイント以降、ドリルアップイベントで利用できないポイントはありますか?
こんにちは@sansmash
chart.events.drillupall
イベントがあります。 drilldownall
はありません
こんにちは@sansmash
chart.events.drillupall
イベントがあります。drilldownall
はありません
それはうまくいきました! ありがとうございました。
この問題は、最近のアクティビティがないため、自動的に古いものとしてマークされています。 それ以上のアクティビティが発生しない場合は閉じられます。 あなたの貢献に感謝します!
最も参考になるコメント
回避策として、ドリルダウンイベントパラメータの
points
とpoint
を使用し、次の2つの状況でのみプロシージャを実行します。points
はfalse
、チャートポイントをクリックすることを意味しますpoint
はpoints[0]
point
と同じで、チャートカテゴリをクリックすることを意味します。これにより、カテゴリをクリックした場合にイベントプロシージャが1回だけ実行されます。次のような: