スクロールはライブグラフの影響を受けないようにする必要があります。
ライブデータを含む棒グラフは、スクロールで問題を引き起こします。
これもおそらく#1410で概説されていることに関連しています。
系列データが設定されているとき、チャート更新関数が呼び出されます。
https://github.com/dynatrace-oss/barista/blob/24647e8c15b388cd128ba102fe9f6cf1ffbb4620/libs/barista-components/chart/src/chart.ts#L232 -L236
この更新関数では、現在のチャートオブジェクトを破棄して、再度インスタンス化する必要があります。 Highchartsには更新機能がありますが、これにより、コンシューマーがシリーズまたはチャートオプションのすべてのプロパティを更新できるわけではありません。 これは過去に問題を引き起こしていました。そのため、6df1df81f9f935e6185505757893b4a4ba965099に再インスタンス化機能を実装しました。
変更前の更新関数は次のようになり、新しいシリーズとオプションがHighcharts.update
関数に渡されました。
https://github.com/dynatrace-oss/barista/blob/dd7fa6f35daa06593081a9700c74fe50757f77ef/src/lib/chart/chart.ts#L543 -L553
再構築中の短い期間、チャート要素の高さは0になり、再スクロールが発生します。
回避策としての@TannerGilbert 。これは、リフローを防ぐためにコンテナまたはチャート自体に高さを設定することで回避できます。
https://stackblitz.com/edit/scroll-bug-mvactj?file=src%2Fapp%2Fapp.component.scss
@ ffriedl89 @lukasholzerこの問題の1つの解決策は、updateメソッドでグラフの現在の高さを読み取り、それをホスト要素に設定し、更新後に再度削除することです。 しかし、私はこれがいくつかの副作用を引き起こす可能性があることを恐れています。 どう思いますか?
副作用については、高さをリセットした後、たとえば選択領域(このサブジェクトをトリガーする必要があります)で常にthis._chart._afterRender
をチェックするため、よくわかりません。
最善のアプローチは、それをテストして、それがどのように改善されるかについての洞察を得ることだと思います。
@TannerGilbertこの修正をライブラリに提供しますか? 確かに、ペアプログラミングセッションでもお手伝いできます。
@lukasholzerバグの修正を支援したいのですが、バリスタのコードベースとハイチャートに関する知識はかなり限られています。 また、ペアプログラミングセッションは私にはいいですね。 たぶん、Slackでの時間を議論しましょう。
内部の問題追跡に移動しました
最も参考になるコメント
@lukasholzerバグの修正を支援したいのですが、バリスタのコードベースとハイチャートに関する知識はかなり限られています。 また、ペアプログラミングセッションは私にはいいですね。 たぶん、Slackでの時間を議論しましょう。