💡

Nuxt.jsでWebアプリケーション開発メモ27

に公開

概要

体重・体脂肪率推移チャートガジェットの実装。

プロンプト27

# 命令27
- `体重・体脂肪率の推移`ダッシュボードガジェットの機能実装
# 命令27-1
- まずは、Chart.js + vue-chartjsで作成するため環境設定(ライブラリインストール等)を実施してください。
# 命令27-2
- 次に、`pages/top.vue`体重・体脂肪率推移チャートを実装してください。
    - 体重・体脂肪率データをバックエンドから取得するには、既存のREST APIで取得可能ですので、それを利用してください。
    - 期間を設定するボタンが既に存在しますが、`カスタム`ボタンの実装はまだなしでよいです。
        - ボタンのデフォルト選択は`過去30日`にしてください。
        - ボタンで期間を選択すると、それに応じたチャートが表示されるようにしてください。
    - 体重と体脂肪率を2軸チャートで表示するようにしてください。

追加命令

  • チャート内のタイトルを消去。(チャート外上部にタイトル表示ずみのため。)
  • 凡例の線がバーっぽくなっているので、線にしてと指示したがうまくいかない。

対応内容

  • バックエンドから指定期間のトレーニング記録を取得し、チャートを描画する処理を追加。
    • カレンダーデータと重複もあるが現状は別々にデータをとっているので非効率。そのうち直したい。

画面

ソース差分

https://github.com/tkure/prototype-frontend/commit/b3c3dd87ed2a819c4940f707a3df461d4d678ab3


追加修正

  • 凡例の図をボックスから線に修正した。

修正方法

  • legend.labels.pointStyle:linelegend.labels.usePointStyle:trueで対応。
  • 当初、claudeがgenerateLabelsでカスタマイズを試みたがいまいちうまくいかなかったので、ChatGPTに提案してもらった。

画面

ソース差分

https://github.com/tkure/prototype-frontend/commit/aefb2929bd3141f8fc58509f37d8e68e26340c7a

pages/top.vue
@@ -499,19 +499,9
const weightChartOptions = ref<ChartOptions<'line'>>({
  responsive: true,
  maintainAspectRatio: false,
  plugins: {
    title: {
       display: false
     },
     legend: {
-      position: 'top'
+      position: 'top',
+      labels: {
+        pointStyle: 'line',  // ← 線スタイルを選択
+        usePointStyle: true, // ← 点や線のスタイルを使う
+      }
     }
   },
+  layout: {
+      padding: {
+        top: -5,
+        bottom: 0,
+      }
+  },    
   scales: {
     x: {
       type: 'category',

→ Nuxt.jsでWebアプリケーション開発メモ28

Discussion