2020年2月21日金曜日

ファセット検索にチャートを追加する

 Oracle APEX 19.2にて新たに提供が開始されたファセット検索のページに、チャートを追加する方法をオラクルの開発者のCarsten Czarskiさんがブログで解説しています。自分でも試してみました。以下、その手順です。オリジナルの英語の内容はこちらです。


まず、EMP表のサンプルを用意します。SQLワークショップユーティリティサンプル・データセットを開きます。EMP/DEPT のアクションインストールをクリックします。


データセットの言語英語を選びます。日本語を選ぶこともできます。

へ進みます。


データセットのインストールを実行します。表EMPDEPT、それとビューEMP_DEPT_Vが作成されます。


データセットがロードされます。アプリケーションの作成を実行します。


アプリケーション作成ウィザードが起動します。アプリケーションの名前Demonstration - EMP / DEPTです。

今回の作業で使用するのはページ名Employeesフォーム付きのファセット検索(emp)のページです。

機能はすべて使用しないため、すべてをチェックをクリックして、チェックをすべて外します。また、言語の選択を日本語に変更します。

以上で、アプリケーションの作成を実行します。


アプリケーションが作成されます。


ページ・デザイナにてファセット検索のページである3 - Employeesを開きます。

レポートEmployees詳細静的IDとしてFC_EMPを設定します。


元の英語の記事に記載されているパイプライン表関数get_faceted_search_dataを作成します。

以下のコードを実行します。


ファセット検索のページにチャート・リージョンを作成します。

識別タイトルChartタイプチャートを選択します。


デフォルトで作成されたシリーズを選択します。

識別名前Salary by EmployeeソースタイプSQL問合せとし、SQL問合せとして以下を記述します。先ほど作成したパイプライン表関数get_faceted_search_dataを呼び出し、レポートEmployeesのデータを取り出しています。

select ename, sal from table(get_faceted_search_data(:APP_PAGE_ID, 'FC_EMP'));

列のマッピングラベルENAMESALを割り当てます。


ファセットの変更でチャートがリフレッシュされるように、動的アクションを作成します。

ファセット検索のリージョン検索の上でコンテキスト・メニューを表示させ、動的アクションの作成を実行します。


作成された動的アクションの識別名前ファセット変更タイミングイベントファセット変更[ファセット検索]選択タイプリージョンリージョン検索を指定します。


TRUEアクションの識別名前Chartのリフレッシュとします。アクションリフレッシュを選択し、影響を受ける要素として選択タイプリージョンリージョンChartを指定します。


これで動的アクションの設定が完了したので、最後に作成済みのチャートのシリーズに、リフレッシュの際にファセットの値が渡るように設定します。シリーズの送信するページ・アイテムとして以下を設定します。

P3_SEARCH,P3_DEPTNO,P3_MGR,P3_JOB,P3_SAL


参照したCarstenのブログの内容は、このあとレポート・リージョンを非表示にして、ファセットとチャートだけを表示するようにしていますが、その部分は割愛します。

以上で作業は完了です。アプリケーションを実行すると記事の先頭のGIF動画のように動きます。

今回作成したアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/faceted-search-with-chart.zip

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