Skip to content

Latest commit

 

History

History
147 lines (111 loc) · 6.27 KB

File metadata and controls

147 lines (111 loc) · 6.27 KB

Module

Module は画面 1 つ分とそのデータをまとめた単位です。C# の class に近い概念で、1 つの Module に以下が詰まっています:

  • Field の集まり — データと UI の部品
  • DB との対応(テーブル・View にマッピング可能)
  • 画面レイアウト(詳細・一覧・検索)
  • スクリプト(イベントハンドラ・メソッド)
  • 権限設定

Module を DB テーブルにマッピングすると、追加・編集・削除・一覧・検索が自動で動くようになります。


Module の 4 つのタブ

デザイナで Module を開くと 4 つのタブがあり、それぞれ異なる役割を担います。

タブ 役割 リファレンス
全体設定 DB との入出力・アクセス権・スクリプトなど、データとしての振る舞い 全体設定
詳細 1 件のデータを表示・編集する画面レイアウト 詳細設定
一覧 複数件を並べる画面レイアウト 一覧設定
検索 一覧の上に出る検索条件のレイアウト 検索設定


画面で利用できるデータ

DB と連携している場合、各レイアウトで表示するために取得するデータは以下です:

  • レイアウトに表示されている Field
  • レイアウトの DataOnlyFields に設定されている Field
  • IdField / OptimisticLockingField(Module に設定されている場合)

一覧画面などですべての Field を取得すると非効率なので、表示だけしない Field は DataOnlyFields で指定するのが基本です。


複数レイアウト

各タブ(詳細・一覧・検索)は、複数のレイアウトを定義できます。

レイアウト種類 使用される場所
一覧レイアウト 一覧ページ(default)、LinkField の検索結果
詳細レイアウト 詳細ページ(default)、ダイアログ、ListField、DetailList、TileList、ModuleField
検索レイアウト 一覧ページ(default)、SearchField

default は削除・改名できない固定レイアウトです。追加レイアウトは自由に命名でき、 LinkField / ListField など参照側で切り替えて使います。


スクリプトから Module を操作する

プロパティ

プロパティ 説明
PageTitle string ページタイトル(スクリプトから動的に変更可)
LayoutName string 現在のレイアウト名
ModuleLayoutType ModuleLayoutType 現在のレイアウトタイプ(None / Detail / List / Search。通常は Detail / List / Search のいずれか)
IsEnabled / IsVisible / IsViewOnly bool 全体の有効・表示・読み取り専用
IsModified bool 変更されたか
IsValid bool 配下の全 Field が IsValid == true のとき true
IsNewData bool 新規データか
IsDeleted bool 削除済みか
Color string? 文字色
BackgroundColor string? 背景色
FontFamily string? フォント名
FontSize int? フォントサイズ
ClassName string 任意の CSS クラスを付与
DialogTitle string ShowDialog / ShowPopup / ShowPanel で開いた時のタイトル

メソッド

メソッド 戻り値 説明
Submit() Task<bool?> 登録・更新(標準の Submit 動作)
Delete() Task 削除
ValidateInput() Task バリデーション実行(配下の全 Field を検証)。スクリプトは auto-await されるので if (Module.ValidateInput()) のように使える
NewModule() Task 新規作成状態に遷移
CopyModule() Task 現在のデータをコピーして新規作成状態に遷移
ShowDialog(params string[] buttons) Task Module をダイアログで開く。押されたボタン名を返す
ShowPopup(int x, int y, params string[] buttons) Task Module を指定座標のポップアップで開く
ShowPanel(params string[] buttons) Task Module をパネルで開く(PanelAlignment を渡す版もあり)
CloseDialog(string button) Task ShowDialog を閉じる
ClosePopup(string button) Task ShowPopup を閉じる
ClosePanel(string button) Task ShowPanel を閉じる
Reload() Task データを再読み込み
ToJsonObject() JsonObject JSON 化
SetJsonObject() Task JSON を流し込む
NotifyStateChanged() void 再描画を促す
SuspendNotifyStateChanged() IDisposable 再描画を一時停止(バッチ更新用)

よく使う例

// 詳細画面の Submit ボタンで処理を追加
void SaveButton_OnClick()
{
    // 独自バリデーション
    if (string.IsNullOrEmpty(Name.Value))
    {
        Name.SetError("名前を入力してください");
        return;
    }

    if (!await ValidateInput()) return;

    if (await Submit())
    {
        Toaster.Success("保存しました");
    }
}

// ダイアログとして開く
var result = await new EditDialog().ShowDialog();

認可

Module には 4 種類の権限設定があります。詳しくは 認証・認可 を参照。

条件 意味
UserRead このユーザーが Module を読めるか
UserWrite このユーザーが Module を書き換えられるか
DataRead このデータを(このユーザーが)読めるか
DataWrite このデータを(このユーザーが)書き換えられるか

関連項目