リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: 習慣トラッカー ハビットリング
習慣の「並び替え」機能の追加(ドラッグ&ドロップ/上下ボタン)
## 1. 目的
習慣が増えてくると「毎朝やる習慣を上に、週数回の習慣を下に」といった優先度順に並べたいニーズが生まれる。現状は登録順に固定されており変更できない。カード順序をユーザーが自由に変更できるようにすることで、デイリーチェック時の使いやすさを向上させる。
## 2. 具体的な仕様
### 2-1. データ構造
- localStorage の習慣配列 (`habitring.habits`) の要素順序が表示順を決定する仕様はそのままにし、各 habit オブジェクトに `order` フィールド(整数)を追加する。
- 既存データにはマイグレーション時に配列インデックスを `order` として付与する(読み込み時に `order` 未定義なら index で補完)。
### 2-2. PC(760px以上):ドラッグ&ドロップ
- 今日タブの習慣カードに `draggable="true"` を付与し、HTML5 Drag and Drop API で並び替えを実装する。
- `dragstart` / `dragover` / `drop` イベントを利用し、ドロップ時に配列を並び替えて `renderHabits()` を再描画 + localStorage 保存。
- ドラッグ中はカードに半透明スタイル(`opacity: 0.5`)を適用して視認性を確保。
- ドラッグハンドルとして各カード左端に `⠿`(縦6点)アイコンを配置(色: `var(--muted)`)。
### 2-3. スマホ(760px未満):上下ボタン
- PC のドラッグハンドルの代わりに `▲` / `▼` ボタン(各 32×32px 程度)を習慣カード右側のアクションエリアに追加。
- 先頭カードの `▲`、末尾カードの `▼` は `disabled` にして見た目をグレーアウト。
- タップで配列内の隣接要素とスワップし、localStorage 保存 + 再描画。
### 2-4. 対象タブ
- 「今日」タブのみ並び替えUIを表示する(統計・バッジタブはそのまま今日タブの順序に従って描画)。
### 2-5. 実装箇所
- `pages/main.php` の JavaScript 内 `renderHabits()` 関数にドラッグ属性付与とイベント登録を追加。
- `saveHabits()` は既存関数をそのまま利用(順序変更後の配列を渡すだけ)。
- CSS に `.drag-handle`、`.order-btn` のスタイルを追加(約20行)。
## 3. 既存機能との整合
- 習慣の登録・編集・削除・チェック・メモ・ストリーク・バッジ・同期など既存機能は一切変更しない。
- クラウド同期(sync.php)は `data` JSON をそのまま保存するため、`order` フィールドが増えても後方互換で動作する。
- 統計タブ・バッジタブは `habits` 配列を順番通り読み込むだけなので影響なし。
- 最大10件制限も変更なし。
習慣が増えてくると「毎朝やる習慣を上に、週数回の習慣を下に」といった優先度順に並べたいニーズが生まれる。現状は登録順に固定されており変更できない。カード順序をユーザーが自由に変更できるようにすることで、デイリーチェック時の使いやすさを向上させる。
## 2. 具体的な仕様
### 2-1. データ構造
- localStorage の習慣配列 (`habitring.habits`) の要素順序が表示順を決定する仕様はそのままにし、各 habit オブジェクトに `order` フィールド(整数)を追加する。
- 既存データにはマイグレーション時に配列インデックスを `order` として付与する(読み込み時に `order` 未定義なら index で補完)。
### 2-2. PC(760px以上):ドラッグ&ドロップ
- 今日タブの習慣カードに `draggable="true"` を付与し、HTML5 Drag and Drop API で並び替えを実装する。
- `dragstart` / `dragover` / `drop` イベントを利用し、ドロップ時に配列を並び替えて `renderHabits()` を再描画 + localStorage 保存。
- ドラッグ中はカードに半透明スタイル(`opacity: 0.5`)を適用して視認性を確保。
- ドラッグハンドルとして各カード左端に `⠿`(縦6点)アイコンを配置(色: `var(--muted)`)。
### 2-3. スマホ(760px未満):上下ボタン
- PC のドラッグハンドルの代わりに `▲` / `▼` ボタン(各 32×32px 程度)を習慣カード右側のアクションエリアに追加。
- 先頭カードの `▲`、末尾カードの `▼` は `disabled` にして見た目をグレーアウト。
- タップで配列内の隣接要素とスワップし、localStorage 保存 + 再描画。
### 2-4. 対象タブ
- 「今日」タブのみ並び替えUIを表示する(統計・バッジタブはそのまま今日タブの順序に従って描画)。
### 2-5. 実装箇所
- `pages/main.php` の JavaScript 内 `renderHabits()` 関数にドラッグ属性付与とイベント登録を追加。
- `saveHabits()` は既存関数をそのまま利用(順序変更後の配列を渡すだけ)。
- CSS に `.drag-handle`、`.order-btn` のスタイルを追加(約20行)。
## 3. 既存機能との整合
- 習慣の登録・編集・削除・チェック・メモ・ストリーク・バッジ・同期など既存機能は一切変更しない。
- クラウド同期(sync.php)は `data` JSON をそのまま保存するため、`order` フィールドが増えても後方互換で動作する。
- 統計タブ・バッジタブは `habits` 配列を順番通り読み込むだけなので影響なし。
- 最大10件制限も変更なし。
💬 返信 (3)
🛠 開発を開始しました (機能追加 (habit-ring))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「習慣トラッカー ハビットリング」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=habit-ring
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/habit-ring/
ご利用ありがとうございます!
ご要望いただいた「習慣トラッカー ハビットリング」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=habit-ring
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/habit-ring/
ご利用ありがとうございます!
Echo
Iris