logologo
スタート
マニュアル
開発
プラグイン
API
ホーム
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
スタート
マニュアル
開発
プラグイン
API
ホーム
logologo
概要

ブロック

概要

データブロック

テーブル
フォーム
詳細
リスト
グリッドカード
チャート

フィルターブロック

フォーム

その他のブロック

操作パネル
Iframe
Markdown
JS Block

ブロック設定項目

データ範囲
データの読み込み方法
レイアウト
ブロック連動ルール
フィールド連動ルール
並び替えルール
ドラッグ&ドロップ並び替え
ブロックの削除
ブロックタイトル
ブロックの高さ
フォームの下書き

フィールド

概要

共通設定項目

テーブルフィールド
詳細フィールド
フィルターフォームフィールド
フォームフィールド

固有設定項目

日付
ファイルマネージャー
サブフォーム
セレクト
データセレクター
カスケード選択
サブテーブル(インライン編集)
サブテーブル(ポップアップ編集)
サブ詳細
タイトル
JS Field
JS Item
JS Column

フィールド設定項目

デフォルト値
フィールドラベル
ラベルを表示
フィールドのツールチップ
データ範囲
フィールドコンポーネント
数値フォーマット
パターン
必須
タイトルフィールド
バリデーションルール
関連フィールドコンポーネント

アクション

概要

アクション設定項目

編集ボタン
二次確認
フィールド値の割り当て
ワークフローをバインド
編集ポップアップ
アクション連動ルール

アクションタイプ

新規追加
表示
削除
編集
複製
インポート
インポートPro
エクスポート
エクスポートPro
添付ファイルのエクスポート
フィルター
リンク
ポップアップを開く
リフレッシュ
データ送信
ワークフローをトリガー
レコード更新
一括更新
一括編集
子レコードの追加
JS Action
アクション権限

高度な設定

連動ルール
イベントフロー
変数
RunJS
UIテンプレート
Previous Page子レコードの追加
Next Pageアクション権限
AI翻訳通知

このドキュメントはAIによって翻訳されました。正確な情報については英語版をご参照ください。

#JS Action

#はじめに

JS Actionは、ボタンクリック時にJavaScriptを実行し、任意のビジネスアクションをカスタマイズするために使用します。フォームツールバー、テーブルツールバー(コレクションレベル)、テーブル行(レコードレベル)などの場所で使用でき、バリデーション、通知、インターフェース呼び出し、ポップアップ/ドロワーの表示、データの更新などの操作を実現します。

jsaction-add-20251029

#ランタイムコンテキスト API(よく使われるもの)

  • ctx.api.request(options):HTTPリクエストを発行します。

  • ctx.openView(viewUid, options):設定済みのビュー(ドロワー/ダイアログ/ページ)を開きます。

  • ctx.message / ctx.notification:グローバルな通知とメッセージ。

  • ctx.t() / ctx.i18n.t():国際化。

  • ctx.resource:コレクションレベルのコンテキストのデータリソース(テーブルツールバーなど、getSelectedRows()、refresh() などを含みます)。

  • ctx.record:レコードレベルのコンテキストの現在の行レコード(テーブル行ボタンなど)。

  • ctx.form:フォームレベルのコンテキストの AntD Form インスタンス(フォームツールバーボタンなど)。

  • ctx.collection:現在のコレクションのメタ情報。

  • コードエディタは Snippets スニペットと Run 実行(後述)をサポートしています。

  • ctx.requireAsync(url):URLからAMD/UMDライブラリを非同期でロードします。

  • ctx.importAsync(url):URLからESMモジュールを動的にインポートします。

  • ctx.libs.React / ctx.libs.ReactDOM / ctx.libs.antd / ctx.libs.antdIcons / ctx.libs.dayjs / ctx.libs.lodash / ctx.libs.math / ctx.libs.formula:組み込みの React / ReactDOM / Ant Design / Ant Design アイコン / dayjs / lodash / math.js / formula.js などの共通ライブラリ。JSXのレンダリング、時間処理、データ操作、数学演算に使用されます。

実際の利用可能な変数はボタンの配置場所によって異なります。上記は一般的な機能の概要です。

#エディタとスニペット

  • Snippets:組み込みのコードスニペットリストを開き、検索して現在のカーソル位置にワンクリックで挿入できます。
  • Run:現在のコードを直接実行し、実行ログを下部の Logs パネルに出力します。console.log/info/warn/error とエラーのハイライト表示をサポートしています。

jsaction-toolbars-20251029

  • AI従業員と連携してスクリプトを生成/修正できます:AI従業員 · Nathan:フロントエンドエンジニア

#一般的な使い方(簡略化された例)

#1) インターフェースリクエストと通知

const resp = await ctx.api.request({ url: 'users:list', method: 'get', params: { pageSize: 10 } });
ctx.message.success(ctx.t('Request finished'));
console.log(ctx.t('Response data:'), resp?.data);

#2) コレクションボタン:選択のバリデーションと処理

const rows = ctx.resource?.getSelectedRows?.() || [];
if (!rows.length) {
  ctx.message.warning(ctx.t('Please select records'));
  return;
}
// TODO: ビジネスロジックを実行…
ctx.message.success(ctx.t('Selected {n} items', { n: rows.length }));

#3) レコードボタン:現在の行レコードの読み取り

if (!ctx.record) {
  ctx.message.error(ctx.t('No record'));
} else {
  ctx.message.success(ctx.t('Record ID: {id}', { id: ctx.record.id }))
}

#4) ビューを開く(ドロワー/ダイアログ)

const popupUid = ctx.model.uid + '-open'; // 現在のボタンにバインドし、安定性を保ちます
await ctx.openView(popupUid, { mode: 'drawer', title: ctx.t('Details'), size: 'large' });

#5) 送信後にデータを更新

// 一般的な更新:テーブル/リストリソースを優先し、次にフォームを含むブロックのリソースを更新します
if (ctx.resource?.refresh) await ctx.resource.refresh();
else if (ctx.blockModel?.resource?.refresh) await ctx.blockModel.resource.refresh();

#注意事項

  • べき等性:繰り返しクリックによる複数回の送信を避けるため、ロジックに状態フラグを追加するか、ボタンを無効にしてください。
  • エラー処理:インターフェース呼び出しに try/catch を追加し、ユーザーに通知を提供してください。
  • ビュー連携:ctx.openView でポップアップ/ドロワーを開く際は、明示的にパラメータを渡すことを推奨します。必要に応じて、送信成功後に親リソースをアクティブに更新してください。

#関連ドキュメント

  • 変数とコンテキスト
  • 連動ルール
  • ビューとポップアップ