タスクごとに学習時間を記録し、
合計時間を可視化できるようにする。
// 学習ログ型
type StudyLog = {
taskId: number; // タスクID(indexではなくIDで管理)
minutes: number; // 学習時間
date: string; // 日付
};
// 学習ログ一覧
const [studyLogs, setStudyLogs] = useState<StudyLog[]>([]);
// 学習ログ追加関数
const addStudyLog = (taskId: number, minutes: number) => {
const newLog = {
taskId: taskId,
minutes: minutes,
date: new Date().toISOString()
};
// 既存ログに追加
setStudyLogs((prev) => [...prev, newLog]);
};
// 保存処理
const handleSave = () => {
// タスク更新
updateTask(index, {
...task,
text: editTask
});
// 学習ログ追加(分が入力されている場合のみ)
if (minutes) {
addStudyLog(task.id, Number(minutes));
}
// 入力リセット
setMinutes("");
// 編集終了
setIsEditing(false);
};
// 該当タスクのログを取得
const filteredLogs = studyLogs.filter(
(log) => log.taskId === task.id
);
// 合計時間を計算
const totalMinutes = filteredLogs.reduce(
(sum, log) => sum + log.minutes,
0
);