Skip to content
This repository has been archived by the owner on Jun 1, 2023. It is now read-only.

Fix/upgrade chart.js upto 3.x #6509

Closed

Conversation

mcdmaster
Copy link
Contributor

👏 解決する issue / Resolved Issues

📝 関連する issue / Related Issues

⛏ 変更内容 / Details of Changes

📸 スクリーンショット / Screenshots

see #6313

@mcdmaster mcdmaster force-pushed the fix/upgrade-chartjs branch 7 times, most recently from 8832019 to 6b4bd07 Compare July 16, 2021 14:49
@mcdmaster mcdmaster force-pushed the fix/upgrade-chartjs branch 6 times, most recently from 99734fe to 801bc60 Compare September 23, 2021 21:01
@mcdmaster
Copy link
Contributor Author

やっとこさ、Chart.js@3 でチャートを表示するまでに至りました。ただ、座標等はめちゃくちゃです。スクショをご覧ください。
Chart.js のサイトには、チャートの表示様式を決めるパラメータの「お作法」に、Ver2Ver3 との間で小さくない違いがあると示されています。※下記ページ下部を参照のこと
https://www.chartjs.org/docs/latest/getting-started/v3-migration.html
それを吸収するのがこれからの主要な To-Do の1つとなります。

その他の To-Do は、まとまり次第、あるいは気づき次第アップしていきます。

ここまでにやったことを、大まかに書いておきます。

スクリーンショット 2021-09-23 065049

@mcdmaster mcdmaster force-pushed the fix/upgrade-chartjs branch 3 times, most recently from e5eeeae to 57c2b2f Compare October 6, 2021 08:53
@mcdmaster
Copy link
Contributor Author

さらに前進しました。スクショを貼っておきます。パッと見、それほど変わっていないように見えます。しかしながら、私にとっては大きな前進です。
特に、グラフエリアと座標エリアが重なって表示されるようになったのは前進の最たる部分と言っておかねばなりません。
スクリーンショット 2021-10-06 223715

残るは、座標の目盛り表示が合わせられれば、ほどなくこの PR はクローズできます。
ただ、チャートを使用するアプリの全てのおそらくなんらかの手を入れねばならないため、そこは分担が必要となります。 @kaizumaki さんら企画メンバーと、そうした展開の仕方については相談いたしたく

@mcdmaster mcdmaster changed the title [Draft] [Retreat] Fix/upgrade chart.js upto 3.x Fix/upgrade chart.js upto 3.x Oct 6, 2021
@kaizumaki
Copy link
Collaborator

@mcdmaster 検証ありがとうございます!たいへんな作業をやってくださっていることはひしひしと伝わってきます...。
ひとまずコンフリクトが大量に出ているので、こちらを解消いただいてもいいでしょうか?このPRのdiffが見えづらくなっているので...。

@mcdmaster
Copy link
Contributor Author

@kaizumaki
お待たせしました。さすがに前のコミットは範囲を広げすぎたので、サンプルになりそうなモノ(チャートアプリ)を3個持ってきました。

  • components/index/_shared/MixedBarAndLineChart.vue
  • components/index/_shared/ScrollableChart.vue
  • components/index/_shared/TimeBarChart.vue

キモとなる Chart.js のアップグレードに伴う修正プラグイン plugins/vue-chart.ts に対応させるために各チャート・アプリにはどんな修正が必要か。
それでは、上記アプリのソースを見てください、では虫が良すぎるため、追ってどこかで説明の機会を
作りましょう。
チャートの数だけ手を入れるため、作業を分担するのが適切でスピーディ、なおかつアプリ・オーナー意識の醸成に役立つ、という勝手な期待をしていたりもします

@kaizumaki
Copy link
Collaborator

@mcdmaster ご対応ありがとうございます。Netlifyのpreviewを見た限りですと、いろいろ期待通りの動作はしていないようなのですよね...。グラフ以外のところもいろいろ表示がおかしくなっているようです。
かなりたいへんな作業だなと思うとともに、このアップグレードはしばらく様子見したほうがいいのではないかという気になってきました。
あるいは、もうちょっと修正のステップを細かくできたりしませんかね?いまの状態だと、あまりに変わりすぎていてどこがどうなっているのだろう...?という感じです。

都内の最新感染動向-その他-参考指標-東京都-新型コロナウイルス感染症対策サイト

@mcdmaster
Copy link
Contributor Author

@kaizumaki コメントありがとうございます。概ね異存はないです。

実は、私は chart.js@3 への移行がどれほど大変かを示して見せたいとも思っていました。今回のような中間結果が得られたので、たとえば @kaizumaki さんがおっしゃるようにいったんは chart.js@3 へのアップグレードを棚上げする、あるいは棚上げをするに至るエビデンスを一式揃えることで他から参照を受けたときに役立ててもらえる情報の充実を図ろうという意図もありました。
他への情報提供という視点では、国内外を問わず、あたかも chart.js@3 への移行が簡単にできるように書かれているウェブページがあったりした場合、私の今回の活動はその種の誤解の拡散を防ぐ意味があると思っています。

ちなみに、細かいステップやフェーズに分割して進めるのは難しいと思います。ステップの前後依存関係が強く、個別のステップだけを実施するのではアップグレード・プロセス全体としての整合性、合目的性が損なわれるおそれがあります。これも、ここまでやってきたからこそ判明した教訓と思っています

@mcdmaster
Copy link
Contributor Author

今後、再チャレンジの機会がおそらくあるという前提で、どういったアプローチを取り得るか、おおまかかつ基本的な手順を書いておきます。また、併せてアプローチに必要な各ステップの依存関係もメモしておくこととします。

  1. Chart.js のモジュール・アップグレード、および依存モジュールのインストール:Vue.js, Nuxt.js などのコアコンポーネントのバージョンへの依存性が強く、バージョン(マイナー・バージョンを含む)ごとにモジュールの差し替えが求められる場合も多々あります。
  2. vue-chartjs および @types/chart.js (2.x 用) の削除:これら既存モジュールは Chart.js@3 との互換性が全くなく、削除せずに放っておくと間違いなくトラブルの元となります。
  3. plugins/vue-chartjs の修正:Chart.js@3 のガイドラインに沿って粛々と実施します。ただしお作法(?)が Chart.js@2 と比べてかなり変わるところもあるため、いささか戸惑うのは不可避です。
    ご参考 https://www.chartjs.org/docs/latest/getting-started/v3-migration.html
  4. チャート・アプリの修正:これは、可能な限り eslint-config-chartjs のルールで lint --fix で逃げられるようにするのが賢明です。各モジュールの fit&gap を逐一チェックできれば理想的ですけど、おそらくそれほどの工数の余裕は取れないと思います。かなり手間です。

以上、ご参考となりましたら幸いです

@kaizumaki
Copy link
Collaborator

@mcdmaster こちらのPRもクローズといたします 🙇 chart.jsといったjsライブラリはフレームワークに組み込む際のラッパーのあたりでいろいろと不整合が起きがちですよね... なかなか一筋縄ではいかない代物でした 😓

@kaizumaki kaizumaki closed this May 31, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Upgrading chart.js up to @ 3.x
2 participants