Cognos Analytics 12.0.3 レポート JavaScript APIの更新

# 概要
Cognos Analytics 12.0.3でレポートに組み込み可能なJavaScript APIの更新内容です。
JavaScriptで開発した機能をCognosに取り込み、レポートの機能でツールボックスから使用可能など、複数の更新があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/956a563c-c231-5a00-5af5-9fb7506618d8.png)

# 参考情報
**新機能 12.0.3 - レポート**
https://www.ibm.com/docs/ja/cognos-analytics/12.0.0?topic=2024-reports

# 詳細説明
レポートの新機能をマニュアルで確認すると、以下のページが主要な内容なのですが、「スクリプト可能レポート」と「ネイティブ・カスタム・コントロール」って何のことだろうというのが読み込まないとわからなかったので、かみ砕いて紹介しようと思います。

**JavaScript API の新規および更新された資料**
https://www.ibm.com/docs/ja/cognos-analytics/12.0.0?topic=reports-new-updated-javascript-api-documentation

**1).スクリプト可能レポート**
https://public.dhe.ibm.com/software/data/sw-library/cognos/mobile/scriptable/index.html

スクリプト可能レポートは上記のページで簡易的なマニュアルが提供されており、これが何のことかというと、カスタム・コントロールでJavaScript APIを扱うマニュアルです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/07789456-0431-84ef-fad9-f0444f5d36c3.png)

カスタムコントロールで利用できるJavaScriptはRequireJSで、業界標準の技術を取り入れています。
D3のライブラリを取り込む等も容易で、Cognosをバージョンアップしても変わらず使用可能です。
https://public.dhe.ibm.com/software/data/sw-library/cognos/mobile/scriptable/tutorial-02-WhyBetter.html

プロンプトの拡張だけでなく、ブロックや画像、テキスト、視覚化など、幅広いオブジェクトに対して使用可能となりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/ed93b513-18ac-658d-8cf3-c417a464beca.png)
https://public.dhe.ibm.com/software/data/sw-library/cognos/mobile/scriptable/tutorial-03-SupportedControls.html

これまでJavsScriptファイルはReport Serverノードに配置して、カスタム・コントロールのモジュール・パスで指定して呼び出していましたが、JavaScriptファイル自体をカスタマイズの拡張でzipファイルとして取り込み、図のような指定でzipファイル内のファイルを呼び出し可能となりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/9a963e9e-db43-8b25-b0c4-47635922cdf2.png)
https://public.dhe.ibm.com/software/data/sw-library/cognos/mobile/scriptable/tutorial-06-HowToUseAnExtensionToHostJavaScript.html

カスタム・コントロールから呼び出されるJavaScriptは、保存済みレポートで実行された時にエラーとなってしまう事が多く報告されていました。
そのため、isSavedOutput()というレポートが保存済みかどうかを判定する関数が追加されました。
これにより、レポートが保存済みの場合は、カスタム・コントロールのJavaScriptを実行しないというコーディングが可能となりました。
https://www.ibm.com/docs/ja/cognos-analytics/12.0.0?topic=reports-custom-control-api-detect-saved-report-output

Cognos Analytics 12.0.3でサンプルを導入し、チーム・コンテンツ > サンプル > 機能別 > カスタム・コントロール に多数のサンプルがあるので参考に開発してみてください。

また、管理→カスタマイズ→拡張で、デフォルトで取り込まれている拡張zipファイルがダウンロード可能なので、ダウンロードして中身を確認すると参考になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/330e4f39-0943-1bd9-c6a9-f27aca87e0f0.png)

**2).ネイティブ・カスタム・コントロール**
https://public.dhe.ibm.com/software/data/sw-library/cognos/mobile/native-custom-controls/index.html

こちらは概要で紹介した、JavaScriptをカスタム・コントロールから呼び出すのではなく、ツールボックスに一つのオブジェクトとして登録する新機能のマニュアルです。
カスタマイズ>拡張でzipファイルをアップロードする事で、登録を行います。

zipファイルの作成方法がこちらに記載されています。
アイコン表示のためのSVG symbolの指定など、記載内容に特徴があります。
https://public.dhe.ibm.com/software/data/sw-library/cognos/mobile/native-custom-controls/tutorial-01-Extension.html

作成したzipを拡張にアップロードすると、1つのオブジェクトとして誰もが使用可能となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/881e0637-b766-a194-1307-301d4bf974cb.png)

サンプルとして、チーム・コンテンツ > サンプル > 機能別 > カスタム・コントロール > ネイティブ・カスタム・コントロールのポップアップ が提供されているので参考にしてください。
「Product Line」という文字をクリックすると、プロンプトがポップアップ表示されるサンプルです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/d8d268a3-2882-4cf1-5736-5fe6dd78985e.png)

登録されたPopupオブジェクトのプロパティは、通常のカスタム・コントロールとは異なります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/f450610f-81e5-d4eb-0815-ae958e4ded10.png)
https://public.dhe.ibm.com/software/data/sw-library/cognos/mobile/native-custom-controls/tutorial-04-TopLevelProperties.html

ツールボックスのアイコン表示の管理は、\<CognosInstall>/webcontent/bi/pat/res/Toolbox.xml で行われます。
https://public.dhe.ibm.com/software/data/sw-library/cognos/mobile/native-custom-controls/tutorial-02-Toolbox.html
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/5b63361b-a706-2339-130d-6373e29ba466.png)

拡張zipファイルは、「Native_Custom_Control_Popup」からダウンロード可能なので、開発の参考にして下さい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/14d7ec89-b106-cf9c-be53-0f3fc55ba247.png)

zipの中身は以下のようなものが含まれていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/79943db3-c3f4-bfa8-59ac-3377cb33adc9.png)