昨日、記事やGistから過去に書いたサンプル・コードを探すアプリケーションを作成したのですが、どうも使いにくいです。Gistに対象を絞って検索するページを作成してみました。
public gistであればgistが提供している検索を使えるのですが、今までprivate gistとして作成していたのと、private gistはpublic gistに変更できない(作り直し)ので仕方がありません。
作成したアプリの画面です。
https://apex.oracle.com/pls/apex/r/japancommunity/codesearch/code
少しだけ実装の解説をします。
ファセット検索は、クラシック・レポートを検索結果のリージョンとして使用している、一般的な実装です。クラシック・レポートのソースは以下です。
select
a.id
,d.title
,d.url
,a.raw_url
,a.raw_content
,a.file_name
,a.file_ext
,a.embedded_url
from cds_documents d join cds_attachments a
on d.id = a.post_id
ファイルタイプの選択であるファセットF6_FILE_EXTは、列FILE_EXTの個別値をチェックボックスで選択するように構成しています。
検索ボックスのP6_SEARCHは、検索のソースを列RAW_CONTENT(これは実際のコード)に限定しています。
検索されたコードを表示するリージョンはList Gist Snippetsとして作成しました。
タイプは動的コンテンツです。ソースは以下のPL/SQLコードです。
ブログ記事に埋め込んでいるGist由来のスクリプトをscriptタグとで出力しています。
動的コンテンツからクラシック・レポートの検索結果を取得するために、パイプライン表関数get_gist_faceted_search_dataを作成しています。
一般的にはファセットが変更されたときは、リージョンをリフレッシュします。今回は<script src="..."></script>を動的コンテンツで出力しています。Gist由来のコード中でDocument.writeが使われているため、リフレッシュでの画面更新時は出力が無視されます。
そのため、ファセット変更(Facet Change)で実行されるTRUEアクションとして、ページの送信を指定しています。
以上が、今回作成したアプリケーションの説明です。
自分のために作成したアプリですが、何かの役に立てば幸いです。
完