Yellowfin URL の生成 開発者向けのニッチな機能

## はじめに
ニッチすぎる API 第 ２ 弾です。
Web サイトを構築する際、URL の引数で引き渡すパラメーターなどを切り替えながら画面の様子を確認するのは、時に面倒なこともあるかと思います。そんな時に役立つかもしれない JavaScript API が追加されました。

## 追加された API
yellowfin.integration 名前空間の下に、getApplicationEntry() と getIFrameEntry() メソッドが追加されました。
いずれも、各画面にアクセスするための URL を返します。

##### getApplicationEntry()
getApplicationEntry() は、entryPoint と queryParameters をパラメーターとして受け取ります。

entryPoint に指定できるのは、以下のいずれかです。
&nbsp;&nbsp;・ダッシュボード
&nbsp;&nbsp;・レポート
&nbsp;&nbsp;・タイムライン
&nbsp;&nbsp;・管理画面
&nbsp;&nbsp;・ストーリー
&nbsp;&nbsp;・シグナル
&nbsp;&nbsp;・シグナルリスト

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 ページを作成してみました。

```html:generateUrls.html
<!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 が生成されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/e8a1fb25-5b4f-5177-cc0e-53759baf9889.png)

ログインしていない場合、トークンの中身が null となるため、その場合は [SSO トークンの生成](https://qiita.com/ExtremeCarvFJ/items/989a3c2bfa34ccdd177f)などと組み合わせる必要があります。

getApplicationEntry() が生成したダッシュボードアクセス用の URL にアクセスすると、下記のような画面が見えてきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/a3120bc2-e296-33a9-bde5-f2c56b455db0.png)

getIFrameEntry() が生成したダッシュボードアクセス用の URL にアクセスすると、下記のようにヘッダー情報が非表示の画面が見えてきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/2aa5644d-b4eb-2742-6825-51f93b46eccb.png)

## 最後に
特に Yellowfin コンテンツを他のサイトに組み込んでいる時など、パラメーターを変えながら見え方を調整したい時などあるかと思います。
そんな時、都度 URL を手で書き換える代わりに、これら API を使ってみてはいかがでしょうか。

では皆様、良いデータ分析を！