Keep drag-box zoom smooth on long graph ranges
メンテナーはふだん 2 日以内に返信
@bracyw がすでに取り組んでいます。
2026年10月30日 から。
評価
この issue はまだ評価されていません。
説明
What
On the graph page, a historical range near the 7-day cap with five topics (about 3M points) drops to about 40 fps while drag-box zooming, though panning runs at 80 fps and hover at 120. While the box is dragged, the chart is redrawn on every mouse move just to draw the selection box, and each redraw re-runs min-max decimation over every point. Drag-box zoom should be as smooth as the rest of the page on long ranges.
Requirements
- Drag-box zoom on a 7-day, five-topic historical range runs at least as smoothly as panning does today (about 80 fps on the setup measured in #938)
- Hover, pan and wheel zoom on that range are no slower than in #938
- Zoomed and unzoomed views draw the same lines as today (each pixel column keeps its min and max)
- Live mode with five topics stays at full frame rate
Notes
- Measured in #938 (5 topics × 594k points, 1 Hz over 7 days): drag-box zoom 40 fps, pan 80, wheel zoom 105, hover 120. ApexCharts on develop managed 0.4–3 fps on the same data.
- CPU profile of a 3 s drag-box zoom: about 70% in Chart.js's min-max decimation, about 13% more in the decimation plugin and object spreads, under 1% in graph-page code.
- chartjs-plugin-zoom calls a chart update on every mouse move during a drag-box zoom.
- The graph code is in angular-client/src/pages/graph-page/graph/ (graph-chart.utils.ts, graph.component.ts). Hover reads full-resolution samples kept separately from the drawn points.
- Blocked by #925, which moves the graph page to Chart.js.
- Open question: downsample on the client, or have the backend downsample time-range queries the way it already does for runs (see closed #457). That backend query is also slow on this range: 4–130 s to load.
Context transfer
SUMMARY
Follow-up from #925 / PR #938 (graph page on Chart.js). Chart.js is far faster than ApexCharts on long ranges, but drag-box zoom on 7 days x 5 topics holds only ~40 fps because every mousemove re-decimates all points.
CONTEXT
- Versions: chart.js 4.5.1, ng2-charts 10.0.0, chartjs-plugin-zoom 2.2.0.
- Workload: Custom -> Date Range over 7 days, 5 topics at 1 Hz = 5 x 594,001 points. Run selection can't reproduce it: the run endpoint downsamples to ~5k points per topic.
- Measurement (median of 3, ng serve dev build, 120 Hz display): fps = frames rendered per second over the gesture window; mouse input fired at a fixed 125 Hz.
Chart.js (925): idle 120, hover 120, drag-box zoom 40 (p95 frame 58 ms), pan while zoomed 80 (p95 25 ms), wheel zoom 105, live 5 topics 120. Load after network 0.47 s, heap ~650 MB.
ApexCharts (develop db4e64ab): hover 0.9, drag-box zoom 3.1 plus a 4.7 s freeze on release, pan 0.4, wheel 2.6, live 23. Load after network 14.3 s with an 8 s freeze, heap ~2.6 GB.
- Profile of a 3 s drag-box zoom on 925: ~2.66 s CPU; 70% minMaxDecimation, 6% decimation plugin, 7% __spreadProps, <1% graph-page code.
- Live mode (30 s window, ~12.7k points) and hover never hit this cost.
- 主要言語
- TypeScript
- スター
- 5
- フォーク
- 1
- 平均マージ
- 2日 13時間
- マージ済み PR(30日)
- 48
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Northeastern-Electric-Racing/Argos のほかの issue
-
Remove the landing page対応中かも @Idontknow0487 が 6 日前に担当しました。 オープンby: ai-assisted frontend good-for: new-member spike
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
Northeastern-Electric-Racing/Argos#847 · 担当者 1 名 ·
メンテナーはふだん 2 日以内に返信
-
quick-view-content: Generic quick-view components that hold caller-defined data対応中かも @bracyw が 1 日前に担当しました。 オープンby: ai frontend spike
Northeastern-Electric-Racing/Argos#937 · 担当者 1 名 ·
メンテナーはふだん 2 日以内に返信
-
quick-view-content: The quick view loads components defined elsewhere対応中かも @bracyw が 1 日前に担当しました。 オープンby: ai frontend spike
Northeastern-Electric-Racing/Argos#936 · 担当者 1 名 ·
メンテナーはふだん 2 日以内に返信
-
quick-view-content: Pages pass their own components to the quick view対応中かも @bracyw が 1 日前に担当しました。 オープンby: ai frontend spike
Northeastern-Electric-Racing/Argos#935 · 担当者 1 名 ·
メンテナーはふだん 2 日以内に返信
-
quick-view-shell: One quick view in the app shell, controlled through a service対応中かも @bracyw が 1 日前に担当しました。 オープンby: ai frontend spike
Northeastern-Electric-Racing/Argos#934 · 担当者 1 名 ·
メンテナーはふだん 2 日以内に返信
Northeastern-Electric-Racing/Argos の issue をすべて見る
似ている issue
-
area: triage theme: undefined
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
jhipster/generator-jhipster#35895 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
paperclipai/paperclip#18396 ·
メンテナーはふだん 1 日以内に返信
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
lingdojo/kana-dojo#33380 · コメント 1 件 · リアクション 5 件 ·
メンテナーはふだん 1 日以内に返信
-
chore other
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
alastair-smith/card-games#342 ·
メンテナーはふだん 1 日以内に返信