Move the client's charts to Chart.js
メンテナーはふだん 2 日以内に返信
@bracyw がすでに取り組んでいます。
2026年10月27日 から。
評価
この issue はまだ評価されていません。
説明
From idea
#865
Goal
Draw every chart in angular-client with Chart.js instead of ApexCharts. ApexCharts left MIT, version 7 adds a license key and a watermark, and its newer Angular wrappers need version 6 or later. Moving to Chart.js keeps the client on an MIT library that works with current Angular, and keeps the monitoring features people use today: hover values, zoom, legends, day markers and export.
Approach
Chart.js 4 through ng2-charts, its Angular wrapper, with chartjs-plugin-zoom for zoom and pan and chartjs-plugin-annotation for day lines. It comes from spike #877 (draft PR #887), and the decision with its measurements is in https://github.com/Northeastern-Electric-Racing/Argos/issues/865#issuecomment-6430776779.
Diagram
flowchart LR
subgraph before["Before"]
direction TB
GP1["Graph page"] --> AX["ApexCharts 5 + ng-apexcharts"]
SC1["Small charts: graph, double-line graph, pie chart"] --> AX
end
subgraph after["After"]
direction TB
GP2["Graph page"] --> CJ["Chart.js 4 + ng2-charts, zoom and annotation plugins"]
SC2["Small charts: graph, double-line graph, pie chart"] --> CJ
end
before ~~~ after
Only angular-client changes. The car, Siren and scylla-server, and the data the client receives, stay as they are.
Out of scope
- New chart features beyond today's; graph saving is #842 and its spikes.
- Upgrading Angular; ng2-charts 10 supports the client's Angular 21.
- Changing how telemetry reaches the client.
Requirements
- Every chart in angular-client draws with Chart.js
- ApexCharts and ng-apexcharts are no longer client dependencies
- Charts keep today's hover values, zoom, legends, day markers and export
- Live graphing stays smooth with several topics streaming
Context transfer
SUMMARY
Idea #865 tried seven libraries in spikes #872-#878 (PRs #882-#888) and chose Chart.js through ng2-charts. The graph page is already ported on branch 877-try-chartjs-for-the-clients-graph-page (PR #887); the small charts are not.
CONTEXT
- Versions on the spike branch: chart.js 4.5.1, ng2-charts 10.0.0, chartjs-plugin-zoom 2.2.0, chartjs-plugin-annotation 3.1.0.
- ng2-charts (Valor Software, MIT): about 450k weekly downloads, releases 9.0.0 Feb 2026, 10.0.0 Mar 2026, 11.0.0 Sep 2026. 10.x needs Angular 21+, 11.x needs Angular 22. The client is on Angular 21.2.
- ng2-charts only creates and destroys the chart, calls update() on input changes, passes plugins through, and runs outside the Angular zone; hooks come from Chart.js itself (about 30 plugin hooks, custom interaction and tooltip-position modes, external HTML tooltips).
- Memory macOS charges the tab and GPU processes, two 60 s runs, 5 topics live: Chart.js ~700 MB, uPlot ~706, webgl-plot ~724, dygraphs ~770, ECharts ~800, lightweight-charts ~830, Plotly ~1,250.
- npm weekly downloads: Chart.js 12.8M, uPlot 358k. GitHub stars: 67.8k vs 10.6k.
- ApexCharts on develop: apexcharts ^5.16.0 and ng-apexcharts 2.5.0 in angular-client/package.json.
- Not measured in the spikes: frame rate, and a long historical range near the 7-day cap.
- 主要言語
- 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 日以内に返信
-
Keep drag-box zoom smooth on long graph ranges対応中かも @bracyw が今日担当しました。 オープンby: ai dev work frontend
Northeastern-Electric-Racing/Argos#940 · 担当者 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 日以内に返信
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 日以内に返信