はじめに
ニッチすぎる API 第 2 弾です。
Web サイトを構築する際、URL の引数で引き渡すパラメーターなどを切り替えながら画面の様子を確認するのは、時に面倒なこともあるかと思います。そんな時に役立つかもしれない JavaScript API が追加されました。
追加された API
yellowfin.integration 名前空間の下に、getApplicationEntry() と getIFrameEntry() メソッドが追加されました。
いずれも、各画面にアクセスするための URL を返します。
getApplicationEntry()
getApplicationEntry() は、entryPoint と queryParameters をパラメーターとして受け取ります。
entryPoint に指定できるのは、以下のいずれかです。
・ダッシュボード
・レポート
・タイムライン
・管理画面
・ストーリー
・シグナル
・シグナルリスト
queryParameters には、引き渡すパラメーターを指定します。
例えばレポートの場合、以下のような感じで、entryPoint に report を指定し、queryParameters に レポートの UUID を指定します。
getApplicationEntry('report', {"reportUUID": "e9bdc486-7334-43b4-99d1-98c64a6f38e1"})
getIFrameEntry()
getIFrameEntry() は、entryPoint、contentOnly、queryParameters をパラメーターとして受け取ります。
例えばダッシュボードの場合、以下のような感じで、entryPoint に dashboard、contentOnly に true / false、queryParameters に レポートの UUID をそれぞれ指定します。IFrame 画面向けにヘッダー情報を表示させないようにするのが、contentOnly パラメーターです。
getIFrameEntry('dashboard', true, {"dashUUID": "5398f86e-e7d8-4bec-8560-d309a72d766d"})
サンプルコード
参考までに、どんな感じで URL が生成されるかを見ていただく HTML / JavaScript ページを作成してみました。
<!DOCTYPE html>
<html lang="ja">
<meta charset="utf-8">
<h3>JSAPI Test</h3>
<script src="http://yellowfin-server:9140/JsAPI/v3"></script>
<div id="reportDiv"></div>
<script>
yellowfin.init().then(() => {
yellowfin.loadIntegrationAPI().then( () => {
var element = document.getElementById('reportDiv');
element.innerHTML += '<B>タイムライン</B>: ' + yellowfin.integration.getApplicationEntry('timeline') + '<BR>';
element.innerHTML += '<B>管理画面</B>: ' + yellowfin.integration.getApplicationEntry('admin',{"nonRequiredParameter": "someValue"}) + '<BR>';
element.innerHTML += '<B>レポート</B>: ' + yellowfin.integration.getApplicationEntry('report', {"reportUUID": "e9bdc486-7334-43b4-99d1-98c64a6f38e1"}) + '<BR>';
element.innerHTML += '<B>タイムライン iFrame</B>: ' + yellowfin.integration.getIFrameEntry('timeline', true, {} ) + '<BR>';
element.innerHTML += '<B>管理画面 iFrame</B>: ' + yellowfin.integration.getIFrameEntry('admin', true, {}) + '<BR>';
element.innerHTML += '<B>ダッシュボード iFrame</B>: ' + yellowfin.integration.getIFrameEntry('dashboard', true, {"dashUUID": "5398f86e-e7d8-4bec-8560-d309a72d766d"}) + '<BR>'; });
});
</script>
</meta>
</html>
動作確認
この html ファイルを (yellowfin)/appserver/webapps/ROOT
直下において動作を確認してみます。
既に Yellowfin にログイン済みのブラウザから、generateUrls.html にアクセスすると、下記画面のように、アクセスするためのトークン情報を伴った URL が生成されました。
ログインしていない場合、トークンの中身が null となるため、その場合は SSO トークンの生成などと組み合わせる必要があります。
getApplicationEntry() が生成したダッシュボードアクセス用の URL にアクセスすると、下記のような画面が見えてきました。
getIFrameEntry() が生成したダッシュボードアクセス用の URL にアクセスすると、下記のようにヘッダー情報が非表示の画面が見えてきました。
最後に
特に Yellowfin コンテンツを他のサイトに組み込んでいる時など、パラメーターを変えながら見え方を調整したい時などあるかと思います。
そんな時、都度 URL を手で書き換える代わりに、これら API を使ってみてはいかがでしょうか。
では皆様、良いデータ分析を!