カード・リージョンでは、個々のカードにたいしてアクションを作成できます。作成できるアクションのタイプは以下の3つで、動的アクションはありません。
- このアプリケーションのページにリダイレクト
- 別のアプリケーションのページにリダイレクト
- URLにリダイレクト
APEX 22.2よりインターフェースactionsが追加され、ボタンやリンクのクリックからapex.actionsに登録したJavaScriptのコードが実行できるようになりました。
以下より、actionsインターフェースを使って、カード上のボタンをクリックしてJavaScriptを呼び出す実装を行なってみます。
サンプル・データセットのEMP/DEPTをデータ・ソースとして使い、以下の動作を行うAPEXアプリケーションを作成します。
従業員名に隣にある鉛筆アイコンをクリックするか、またはボタンの従業員番号の設定をクリックすると、従業員番号のテキスト・フィールドに従業員番号を設定します。
アプリケーション作成ウィザードを起動します。アプリケーションの名前はカードアクションとしました。
デフォルトで作成されているホーム・ページを(編集をクリックして)削除し、ページの追加をクリックしてカードのページを追加します。
追加するカードのページ名もカードアクションとします。表またはビューとしてEMPを選択し、レイアウトはグリッドを選択します。タイトル列はENAME、本体列はJOBを指定し、ページの追加をクリックします。
以上でアプリケーションの作成を実行します。
アプリケーションが作成されます。これから、カードアクションのページにアクションを実装していきます。
ページ・デザイナにてページ番号1のカードアクションを開きます。
従業員番号を設定するページ・アイテムを、Breadcrumb Barのカードアクションのリージョンに作成します。
識別の名前はP1_EMPNOです。タイプとしてテキスト・フィールドを選択します。ラベルは従業員番号とします。
ページ・プロパティのJavaScriptのファンクションおよびグローバル変数の宣言に、ボタンのクリックで呼び出されるAPEXアクションを記述します。引数empnoに渡された従業員番号をページ・アイテムP1_EMPNOに設定します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* 引数empnoに渡された従業員番号をページ・アイテムP1_EMPNOに設定する。 | |
*/ | |
const SET_EMPNO = { | |
name: "setempno", | |
action: function(event, element, args) { | |
apex.item("P1_EMPNO").setValue(args.empno); | |
} | |
}; | |
// apex.actions.addへ渡す。 | |
const PAGE_ACTIONS_EMPCARD = [ SET_EMPNO ]; |
ページ・ロード時に実行に以下の一行を記述します。
apex.actions.add(PAGE_ACTIONS_EMPCARD);
カードのアクションとしてボタン従業員番号の設定を作成します。
識別のタイプはボタン、ラベルは従業員番号の設定とします。リンクのタイプにURLにリダイレクトを選択し、ターゲットとして以下を記述します。
#action$setempno?empno=&EMPNO.
このターゲットの指定により、APEXアクションとして登録されているsetempnoが呼び出され、従業員番号がページ・アイテムP1_EMPNOに設定されます。
従業員名の横に表示されている鉛筆アイコンのボタンは、ボタン・ビルダーを使ってHTMLを生成します。
Button Builder - Universal Theme (oracle.com)
https://apex.oracle.com/pls/apex/apex_pm/r/ut/button-builder
今回の設定は以下です。Button TemplateはIcon、Button LabelはEdit (表示はされません)、Icon Classとしてfa-pencil、StyleをRemove UI Decorationsを選んでいます。
上記の設定で生成されたEntire Markupを使用します。
生成されたマークアップをカードに設定します。
カード・リージョンの属性を開き、タイトルを拡張フォーマットに切り替えます。
HTML式として記述するマークアップには、以下のdata-actionカスタム属性を追加します。
data-action="setempno?empno=&EMPNO."
以上でアプリケーションは完成です。
a要素ではhref属性として"#action$アクション名"で呼び出すアクションを指定します。button要素ではカスタム属性data-action="アクション名"で呼び出すアクションを指定します。
アプリケーションを実行すると、記事の先頭のGIF動画の動作をします。
今回作成したアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/card-button-action.zip
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完