作成するAPEXアプリケーションは以下のように動作します。
以下より作成したAPEXアプリケーションについて説明します。
最初に空のAPEXアプリケーションを作成します。名前はDynamic JET Chartとします。
機能はすべてホーム・ページに実装します。ホーム・ページをページ・デザイナで開きます。
チャート・タイプを選択するページ・アイテムとしてP1_CHART_TYPEを作成します。タイプは選択リスト、ラベルはChart Typeとします。
LOVのタイプに静的値を選択します。NULL表示値は- Select Chart Type -とします。
LOVの静的値として表示値がPie Chart、値がpieと表示値がBar Chart、値がbarのペアを設定します。
動作のアクションとして動的アクションで定義を設定します。JETチャートのHTML要素はサーバー側で生成しますが、チャートの描画はクライアント側のJavaScriptで行います。
JETチャートを描画するリージョンを作成します。識別の名前はChart、タイプは静的コンテンツとし、ソースのHTMLコードとして以下を記述します。
<div id="chart"></div>
外観のテンプレート・オプションのBody Heightを640px、Top MarginをMediumに設定しています。
JETチャートのHTML要素を生成するプロセスを、Ajaxコールバックとして実装します。
識別の名前はGET_CHART、タイプとしてコードを実行を選択します。ソースのPL/SQLコードとして以下を記述します。
作成したAjaxコールバックGET_CHARTをボタンGENERATEをクリックしたときに呼び出すように、動的アクションを作成します。
ボタンGENERATEに動的アクションを作成します。識別の名前はonClick GENERATEとします。タイミングのイベントはデフォルトのクリックです。
TRUEアクションとして以下のJavaScriptコードを実行します。JETチャートのHTML要素はデータベース・サーバーで生成しますがページの再ロードを避けるため、画面への描画はブラウザ上で実施します。
apex.server.process( "GET_CHART", {
pageItems: "#P1_CHART_TYPE,#P1_SQL"
}, {
success: function( data ) {
apex.debug.info(data.markup);
const elem = document.getElementById("chart");
elem.insertAdjacentHTML('afterbegin', data.markup);
}
} );
最後にページ・プロパティに、JETのライブラリをロードするために必要な設定を追加します。ページにチャート・リージョンが含まれる場合は、Oracle APEXがJETライブラリをロードするためのコードを生成します。しかし、今回作成しているアプリにはJETを必要としているコンポーネントがページにないため、JETライブラリがロードされません。
ページ・プロパティのJavaScriptのファイルURLに以下を記述します。
[require jet]
ページ・ロード時に実行に以下を記述します。
require(["ojs/ojchart"], function() {});
CSSのファイルURLに以下を記述します。
#JET_CSS_DIRECTORY#redwood/oj-redwood-notag-min.css
以上でAPEXアプリケーションは完成です。アプリケーションを実行すると、記事の先頭のGIF動画のように動作します。
Oracle JETのドキュメントへのリンクは以下になります。
https://www.oracle.com/webfolder/technetwork/jet/index.html
主にCookbookとAPI Documentを参照することになりますが、わかりやすいとはいえないです。
https://www.oracle.com/webfolder/technetwork/jet/jetCookbook.html
https://docs.oracle.com/en/middleware/developer-tools/jet/18/reference-api/index.html
Oracle JETはサンプルも少なく扱いにくい印象がありましたが、Claude 3.7 Sonnetに聞くとそれなりの回答が返されます。ドキュメントにあたる前に生成AIに聞くと時短になります。
今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/dynamic-jet-chart.zip
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完