サンプルというには少々簡単すぎる気もしたので、先日作成したマニュアルを検索するアプリに、検索履歴を保存するコードを追加してみました。
最初に検索履歴を保存する表MDSH_HISTORYを作成します。クイックSQLの以下のモデルを使います。
# prefix: mdsh
history
site_url vc400
term vc200
search_date date /default sysdate
識別の名前をRECORD、PL/SQLコードとして以下のINSERT文を記述します。
insert into mdsh_history
(
site_url
, term
)
values
(
apex_application.g_x01
, apex_application.g_x02
);
sys.htp.p('{}');
// サイトとして設定されているドキュメントを検索する。
var elem = document.getElementById("searchDoc");
elem.addEventListener('keypress', do_search);
// Enterを押したときの列のサイトを検索する。
function do_search(e) {
if (e.keyCode === 13) {
let ie = e.srcElement;
let idx = ie.getAttribute("data-term-index");
let term = ie.value;
let site_url = "site:" + document.querySelector("#site_url-" + idx).value + " ";
let searchUrl = "https://www.google.com/search?q=" + escape(site_url) + term;
console.log(searchUrl);
// 検索機歴を保存する -- 追加する行。
const result = apex.server.process(
"RECORD",
{
x01: site_url,
x02: term
}
);
window.open(searchUrl, "_blank");
}
return false;
}
以上で完成です。
機能を追加したアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/my-document-search-wh.sql
Ajaxコールバックとapex.server.processの使い方のサンプルとして作ってみました。x01、x02の使い方などは、サンプルがないと分かりにくいかと思います。
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完