💡
Nuxt.jsでWebアプリケーション開発メモ27
概要
体重・体脂肪率推移チャートガジェットの実装。
プロンプト27
# 命令27
- `体重・体脂肪率の推移`ダッシュボードガジェットの機能実装
# 命令27-1
- まずは、Chart.js + vue-chartjsで作成するため環境設定(ライブラリインストール等)を実施してください。
# 命令27-2
- 次に、`pages/top.vue`体重・体脂肪率推移チャートを実装してください。
- 体重・体脂肪率データをバックエンドから取得するには、既存のREST APIで取得可能ですので、それを利用してください。
- 期間を設定するボタンが既に存在しますが、`カスタム`ボタンの実装はまだなしでよいです。
- ボタンのデフォルト選択は`過去30日`にしてください。
- ボタンで期間を選択すると、それに応じたチャートが表示されるようにしてください。
- 体重と体脂肪率を2軸チャートで表示するようにしてください。
追加命令
- チャート内のタイトルを消去。(チャート外上部にタイトル表示ずみのため。)
- 凡例の線がバーっぽくなっているので、線にしてと指示したがうまくいかない。
- Chart.jsの凡例も参照させたり、ChatGPTにも聞いたりしたがうまくいかないのでいったん諦めた。→ 追加修正
対応内容
- バックエンドから指定期間のトレーニング記録を取得し、チャートを描画する処理を追加。
- カレンダーデータと重複もあるが現状は別々にデータをとっているので非効率。そのうち直したい。
画面
ソース差分
追加修正
- 凡例の図をボックスから線に修正した。
修正方法
-
legend.labels.pointStyle:line
とlegend.labels.usePointStyle:true
で対応。 - 当初、claudeが
generateLabels
でカスタマイズを試みたがいまいちうまくいかなかったので、ChatGPTに提案してもらった。
画面
ソース差分
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',
Discussion