2025年5月2日金曜日

任意のSELECT文をデータ・ソースとしたOracle JETの表を動的に生成する

以前の記事「任意のSELECT文をデータ・ソースとしたJETチャートを動的に生成する」では、Oracle JETのoj-chart要素を動的に生成してチャートを表示しました。本記事ではoj-chartの代わりにoj-table要素を動的に生成することにより、任意のSELECT文をソースとした表を表示します。

作成したアプリケーションは以下のように動作します。


アプリケーション自体はチャートの記事で作成したものとほぼ同じです。oj-chart要素は表示するデータを静的に割り当てることができましたが、oj-table要素はDataProviderとして割り当てる必要があります。そのため、アプリケーションの作り方が少し変わります。

このアプリケーションのエクスポートは以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/dynamic-jet-table.zip

以下よりチャートを表示するアプリケーションとの差分について説明します。

ページ・プロパティJavaScriptページ・ロード時に実行は以下になります。ojs/ojchartの代わりにojs/ojtableをロードします。

require(['ojs/ojtable'], function() {});


任意のSELECT文を渡して実行結果を得るAjaxコールバックGET_TABLEとして作成します。ソースPL/SQLコードとして以下を記述します。チャートのときはAjaxコールバックでHTMLを生成しましたが、oj-table要素はデータをHTMLの記述に含めることはできないため、列情報をcolumns属性、データをdata属性として持つJSONドキュメントを返すようにしています。



表の出力先となるDIV要素のIDをchartからtableに変更しています。

<div id="table"></div>


oj-table要素を生成するJavaScriptのコードは以下になります。ボタンGENERATEをクリックしたときに実行されるTRUEアクション設定コードを置き換えます。


以上でアプリケーションは完成です。

Oracle JETのoj-tableのリファレンスは以下になります。今回はoj-tableを表示するために最低限必要な属性であるcolumnsとdataのみを設定しています。他の属性を設定することにより、より使い勝手を向上させることも可能でしょう。

Oracle APEXのアプリケーション作成の参考になれば幸いです。