# DataViewer

**コントロール機能**：ページネーションされたデータを表示するためのコンテナコントロールです。前後のページのスクロールによる読み込み、行レコードの操作（追加・削除・変更・検索）、ツールバーのコマンド応答、およびデータ行の動的レンダリングをサポートしています。主にデータリストや表形式のシナリオで使用されます。

**タイプ**：コンテナコントロール  
**親クラスコントロール**：`bricks.VBox`

## 初期化パラメータ

| パラメータ名 | 型 | 説明 |
|------------|----|------|
| `data_url` | String | データ読み込み用のAPI URL。`PageDataLoader`が使用します。 |
| `data_params` | Object | データリクエスト時に付加されるパラメータ。各リクエストで送信されます。 |
| `page_rows` | Number | 1ページあたりにリクエストするデータ件数。 |
| `data_method` | String | リクエストメソッド（例：'GET'または'POST'）。デフォルトは'GET'。 |
| `cache_limit` | Number | キャッシュ可能なページ数の上限。メモリ内に保持される履歴ページの数を制御します。 |
| `editable` | Object | 追加、更新、複製、削除などの操作に関するオプション設定。アイコンとURLを定義可能。 |
| &nbsp;&nbsp;`.add_icon` | String | 追加ボタンのアイコンパス。 |
| &nbsp;&nbsp;`.update_icon` | String | 更新ボタンのアイコンパス。 |
| &nbsp;&nbsp;`.clone_icon` | String | 複製ボタンのアイコンパス。 |
| &nbsp;&nbsp;`.delete_icon` | String | 削除ボタンのアイコンパス。 |
| &nbsp;&nbsp;`.new_data_url` | String | 新規レコード登録時の送信先URL。 |
| &nbsp;&nbsp;`.update_data_url` | String | レコード更新時の送信先URL。 |
| &nbsp;&nbsp;`.delete_data_url` | String | レコード削除時の送信先URL。 |
| `toolbar` | Object | カスタムツールバーの定義オブジェクト。追加コマンドボタンを含む。 |
| `row_options` | Object | 行のレンダリングに関するオプション。 |
| &nbsp;&nbsp;`.fields` | Array | フィールド定義の配列。各フィールドにはname、uitypeなどの情報が含まれる。 |
| &nbsp;&nbsp;`.editexclouded` | Array | 編集／複製時に対象外となるフィールド名のリスト。 |

> ⚠️ 全ての初期化パラメータは`opts`を通じて渡されます。コンストラクタにより、幅が自動的に`'100%'`、高さが`'100%'`、オーバーフロー非表示に設定されます。

## 主なイベント

| イベント名 | 発生条件 | 渡されるデータ（event.params）の説明 |
|----------|--------|-------------------------------|
| `row_check_changed` | 任意の行の選択状態が変化したときに発生（サブクラスまたは内部機構によって呼び出される） | その行のユーザー定義データ（`user_data`）を含むオブジェクト |
| `<command>` | ツールバー内の組み込み以外のボタンがクリックされたとき、ボタンの`name`を使ってカスタムイベントが発行される | 現在選択中の行がある場合、その行の`user_data`を渡す。ない場合はnull |
| `command` | 内部使用。`IconTextBar`から送られるオリジナルのコマンドイベント | オリジナルのツールアイテム情報 `{ name, selected_row }` |

> 💡 特殊コマンドの処理：
> - `add`: 新規作成フォームのポップアップウィンドウを表示
> - `update`: 現在選択されている行を編集するフォームをポップアップ
> - `clone`: 現在の行を基に複製した新規フォームをポップアップ
> - `delete`: 確認ダイアログを表示し、承認後に削除を実行

---