このハンズオン・ラボでは、以下の項目に関する予備知識は必要ありませんが、Oracle JETフレームワークをアプリケーション開発に有効に活用するためには、以下の知識が必要です。その他の学習用リソースについては、「関連記事」を参照してください。Oracle JETフレームワークの使用時に最良の結果を得るためには、以下のことを理解しておく必要があります。
このチュートリアルのフローをOracle JETのCookbookから各自のアプリケーションにコピーして貼り付けると、このチュートリアルをブラウザ・タブで開きながら別のタブでOracle JETのCookbookにナビゲートできるため、2つの情報ソースにすばやくアクセスできます。Oracle OpenWorldイベントでこのHOLに参加する場合は、必要なすべての構成がマシンにセットアップされています。自宅から参加する場合やオンラインで参加する場合は、Oracle JETの開発者ガイドを参照して、HOLを開始する際に使用するコマンドライン・インタフェースをセットアップする方法を確認してください。
このラボでは、まずOracle JET NavDrawerスターター・テンプレートを試してから、2つのData Visualization Chartコンポーネントを追加します。この2つのコンポーネントを関連付けて、Associated Viewsを使用します。グラフにカーソルを合わせると、強調表示された値が両方のグラフに同時に表示されます。完成したページは、次の図のようになります。
Oracle JET NavDrawerスターター・テンプレートを生成するには、次のコマンドライン構文を使用します。
yo oraclejet <projectname>
--template=navdrawer
Oracle JET CLIツールのセットアップ方法について詳しくは、Oracle JETの開発者ガイドを参照してください。
NetBeans IDEを使用すると、生成したプロジェクトを簡単に開けます。NetBeansによって、Gruntベースのプロジェクトであることが検出されてプロジェクトが開かれ、追加の構成は不要です。Fileメニューで「Open Project」を選択し、前述のコマンドラインで生成したプロジェクトにナビゲートします。プロジェクトを構築するには、プロジェクト名を右クリックして「Build」を選択します(初めて構築する場合、Gruntコマンドを構成するかどうかを確認するダイアログが表示される場合があります。「yes」を選択して「Build」チェックボックスをオンにします。再度「Build」を選択します)。プロジェクトを実行するには、プロジェクトを右クリックして「Project Properties」→「Run」を選択し、実行するファイルをプロジェクトの/webフォルダ内のindex.htmlファイルを指すように設定します。この/webフォルダは、最初の構築を実行すると作成されます。index.htmlファイルの適切な場所を設定したら、IDEメニュー・バーの上中央にある緑の矢印をクリックするだけです。軽量のWebサーバーが起動して、ファイルがブラウザで開いて表示されます。

ブラウザでアプリケーション(index.htmlファイル)を実行して、NavDrawerスターター・テンプレートのデフォルトのルック・アンド・フィールを確認できます。
JavaScriptアプリケーションをファイル・システムから実行する場合、すべてのブラウザが同じように動作するわけではありません。Firefoxではindex.htmlファイルをファイル・システムから直接実行できますが、ChromeとSafariではエラーが発生します。ChromeまたはSafariで実行するには、ファイルを何らかのWebサーバーから実行する必要があります。HOLマシンで軽量のWebサーバーを起動して実行する手順については、前述の「セットアップ手順」を参照してください。


このハンズオン・ラボでは、スターター・テンプレートのDashboardコンテンツ・ページにコンテンツを追加します。必要に応じて、後で個別にテンプレートの他のページを使用できます。
Oracle JETには、CSS3 Flexboxと連携して機能するCSSヘルパー・クラスのコレクションが用意されています。これらのクラスを使用すると、表示されるデバイスのサイズに応答するように、ページをすばやくセットアップできます。ページの基本レイアウトをセットアップするには、次の手順を実行します。
<div class="oj-flex oj-flex-items-pad">
<div class="oj-flex-item">
</div>
<div class="oj-flex-item">
</div>
</div>
CSS3 Flexboxの操作の詳細については、CSS-Tricks.comがよい参考になります。
引き続きdashboard.htmlファイルを使用して、2つのData Visualizationコンポーネントのうち1つ目のコンポーネントを追加します。Oracle JETのCookbookページからHTMLコードをコピー します。

この時点で、dashboard.htmlファイルは次の図7のようになります。

図7:Cookbookから新しいコンテンツを貼り付けたdashboard.html


"observable"または"observableArray"は、Knockout.jsで使用される特別なタイプの双方向バインディング変数です。UIまたはJavaScript ViewModelで値が変更されると、observableへの他の参照も自動的に更新されます

図10:Bar Chart CookbookページのJS Editorセクション

上記の画像例10と11では、コード・セクション全体はコピーしていません。Cookbook では、1つのページ内の必要なライブラリを単にロードして使用するには、"require"コールを使用します。貼付け先のスターター・テンプレート・ページはAMDモジュールであるため、アプリケーションの他の部分でも使用できるモジュールを作成するには、"define"を使用します。
// Categories
var categories = ["Initial", "Qualification", "Meeting", "Proposal", "Close"];
/* chart data */
var barSeries = [{name: categories[0], items:[42, 34]},
{name: categories[1], items:[55, 30]},
{name: categories[2], items:[36, 50]},
{name: categories[3], items:[22, 46]},
{name: categories[4], items:[22, 46]}];
/* chart data */
var bubbleSeries = [{name: categories[0], items:[{x:15, y:25, z:5}, {x:25, y:30, z:12}, {x:25, y:45, z:12}]},
{name: categories[1], items:[{x:15, y:15, z:8}, {x:20, y:35, z:14}, {x:40, y:55, z:35}]},
{name: categories[2], items:[{x:10, y:10, z:8}, {x:18, y:55, z:10}, {x:40, y:50, z:18}]},
{name: categories[3], items:[{x:8, y:20, z:6}, {x:11, y:30, z:8}, {x:30, y:40, z:15}]},
{name: categories[4], items:[{x:4, y:17, z:2}, {x:35, y:10, z:15}, {x:22, y:22, z:13}]}];
self.highlightedCategoriesValue = ko.observableArray([]);
highlightedCategories: highlightedCategoriesValue
ojChartsのAssociated Views機能を使用すると、Knockoutの双方向バインディングを利用できます。両方のグラフのhighlightedCategories:オプションを同じknockout observableArrayにバインドすると、片方のグラフの強調表示に対する変更がもう片方のグラフに伝播されます。グラフ項目にカーソルを合わせると、そのグラフのhighlightedCategoriesオプションの値が更新されます。このオプションはKnockout observableArrayにバインドされているため、このobservableArrayにバインドされている他のDOM要素に値が変更されたことを通知するイベントが送信され、他のDOM要素でも一致するように値が更新されます。