2024年12月19日木曜日

Mo.jsのアニメーションをOracle APEXのアプリケーションに表示する

Mo.jsのアニメーションをOracle APEXのアプリケーションに表示してみます。Mo.jsのTutorialsのGetting startedにあるbouncyCircleとspinnerの表示に取り組みます。

Mo.jsのライブラリはESモジュールとして読み込みます。ライブラリの読み込みからアニメーションの描画を行うコードは別のファイルに記述し、Oracle APEXのページにはコードを一切埋め込まないようにします。

作成したAPEXのアプリケーションは以下のように動作します。Mo.jsのプレイヤーなしのページとプレイヤーありのページを作成します。


以下より簡単に実装について紹介します。

空のAPEXアプリケーションを作成します。名前Play Mo.jsとしました。

ホーム・ページに、プレイヤーなしのbouncyCirclespinnerのアニメーションを表示します。

静的コンテンツのリージョンを作成し、ソースHTMLコードとして以下を記述します。bouncyCircleのアニメーションを描画するDIV要素になります。

<div id="bouncyCircle" class="w95p h300"></div>


同様に静的コンテンツのリージョンを作成します。ソースHTMLコードとして以下を記述します。spinnerのアニメーションを描画するDIV要素になります。

<div id="spinner" class="w95p h300"></div>


ページ・プロパティJavaScriptファイルURLに以下を記述します。

[module]#APP_FILES#app-mojs#MIN#.js

HTMLヘッダーimportmapを記述します。ES6モジュールを対象としたCDNサービスのesm.shを指しています。
<script type="importmap">
    {
        "imports": {
            "@mojs/core": "https://esm.sh/@mojs/core"
        }
    }
</script>

静的アプリケーション・ファイルとしてapp-mojs.js(およびミニファイしたapp-mojs.min.js)を作成します。内容として以下を記述します。ほとんどMo.jsのGetting startedそのままです。



プレイヤーなしのバージョンは以上で完成です。

空白ページをページ番号として作成し、ホーム・ページと同じく静的コンテンツのリージョンbouncyCirclespinnerを作成します。

ページ・プロパティJavaScriptファイルURLに以下を記述します。

[module]#APP_FILES#app-mojs-player#MIN#.js

CSSファイルURLに以下を記述します。

#APP_FILES#app-mojs-player#MIN#.css

HTMLヘッダーに以下を記述します。
<script type="importmap">
    {
        "imports": {
            "@mojs/core": "https://esm.sh/@mojs/core",
            "@mojs/player": "https://esm.sh/@mojs/player"
        }
    }
</script>

静的アプリケーション・ファイルとしてapp-mojs-player.js(およびミニファイしたapp-mojs-player.min.js)を作成します。内容として以下を記述します。



Mo.jsのドキュメントからはプレイヤーの位置を指定する方法を見つけられず、コードから見つけています。MojsPlayerのインスタンスを作成する際に、parentとしてアニメーションを描画するDIV要素を指定し、classNameに指定したCSSクラス(上記のコードではmy-mojs-player)で表示位置を決めます。デフォルトでは、ウィンドウの最下部にプレイヤーが表示されます(parentの指定がdocument.bodyになる)。

プレイヤーの表示位置を定義するCSSクラスmy-mojs-playerは、app-mojs-player.cssで定義します。静的アプリケーション・ファイルとして作成します。



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

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

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