hyperdashi-client/ITEM_INTERFACE_COMPLETE.md
2025-07-05 11:52:57 +09:00

5.1 KiB
Raw Blame History

Item Interface 完全対応UI - 実装完了

概要

interface Item に定義されている全てのフィールドに対応した、完全な確認/編集UIを実装しました。

実装したフィールド

基本情報

  • id: システム管理用(自動生成)
  • name: 備品名(必須)
  • label_id: ラベルID必須
  • model_number: 型番(任意)
  • remarks: 備考(任意、マルチライン)

購入・管理情報

  • purchase_year: 購入年(数値入力)
  • purchase_amount: 購入金額(数値入力、円表示)
  • durability_years: 耐用年数(数値入力、年表示)
  • is_depreciation_target: 減価償却対象(スイッチ)

配列フィールド(新規実装)

  • connection_names: 接続名称(動的配列入力)
  • cable_color_pattern: ケーブル色パターン(動的配列入力)
  • storage_locations: 保管場所(動的配列入力)

ステータス管理

  • is_on_loan: 貸出中フラグ(スイッチ)
  • is_disposed: 廃棄済みフラグ(スイッチ)
  • qr_code_type: QRコードタイプセレクト: qr/barcode/none

画像管理(新規実装)

  • image_url: 画像URLドラッグ&ドロップアップロード)

システム情報

  • created_at: 作成日時(表示のみ)
  • updated_at: 更新日時(表示のみ)

新規作成したコンポーネント

1. ArrayInput (/src/components/ui/ArrayInput.tsx)

機能:

  • 動的な配列フィールド入力
  • 項目の追加・削除
  • 重複チェック
  • 最大項目数制限
  • Enterキーでの項目追加

使用例:

<ArrayInput
  label="接続名称"
  placeholder="例: HDMI、USB-C、電源"
  values={formValues.connection_names || []}
  onChange={(values) => setValue('connection_names', values)}
  maxItems={20}
/>

2. ImageUpload (/src/components/ui/ImageUpload.tsx)

機能:

  • ドラッグ&ドロップでの画像アップロード
  • プレビュー表示
  • 進捗表示
  • ファイル形式・サイズ制限
  • 画像削除機能

対応形式: JPEG, PNG, GIF, WebP (最大10MB)

更新されたページ

1. ItemForm (/src/pages/items/ItemForm.tsx)

追加された機能:

  • 3つのCardセクションに分割
    • 基本情報
    • 接続・配線情報(配列フィールド)
    • 画像アップロード
  • 全フィールドの完全対応
  • 既存データの正確な反映

2. ItemDetail (/src/pages/items/ItemDetail.tsx)

追加された機能:

  • 全フィールドの表示
  • 配列フィールドのChip表示
  • セクション分割による見やすいレイアウト
  • QRコードタイプの適切な表示

3. ItemsList (/src/pages/items/ItemsList.tsx)

追加された機能:

  • 購入年フィールドの追加
  • QRコードタイプのChip表示
  • 保管場所の省略表示2項目まで+...

使用方法

新規備品登録

  1. 「備品追加」または「新規登録」ボタンをクリック
  2. 基本情報セクションで必須フィールドを入力
  3. 接続・配線情報セクションで配列フィールドを入力(任意)
  4. 画像セクションで画像をアップロード(任意)
  5. 「登録」ボタンで保存

備品編集

  1. 備品一覧から編集ボタンをクリック
  2. 既存データが全フィールドに自動反映
  3. 必要な修正を実施
  4. 「更新」ボタンで保存

備品詳細確認

  1. 備品一覧から詳細ボタンをクリック
  2. 全フィールドが整理されて表示
  3. 配列フィールドはChipで視覚的に表示
  4. 画像がある場合は表示

配列フィールドの操作

項目追加

  • 入力欄にテキストを入力
  • Enterキーまたは「+」ボタンで追加
  • 重複項目は追加されない

項目削除

  • 各ChipのXボタンをクリック

制限

  • 接続名称: 最大20項目
  • ケーブル色パターン: 最大10項目
  • 保管場所: 最大5項目

画像アップロード

対応操作

  • ドラッグ&ドロップ
  • クリックしてファイル選択
  • 既存画像の削除

制限事項

  • 最大ファイルサイズ: 10MB
  • 対応形式: JPEG, PNG, GIF, WebP
  • 1つの備品につき1つの画像

技術的特徴

フォーム管理

  • React Hook Formによる効率的な状態管理
  • 個別setValueによる確実なフィールド更新
  • リアルタイムバリデーション

UI/UX

  • HeroUIコンポーネントによる統一感
  • レスポンシブデザイン
  • 直感的な操作性

データ型対応

  • 文字列フィールド
  • 数値フィールド(適切な型変換)
  • 真偽値フィールドSwitch UI
  • 配列フィールド(動的追加・削除)
  • 選択式フィールドSelect UI

Itemインターフェースの全フィールドに完全対応した、使いやすく直感的なUIが完成しました