概要
Cognos AnalyticsでHTML Itemを用いて、他のレポートにドリルスルーの様にURLで遷移させるJavaScriptのサンプルです。
以前投稿した以下の記事の、Cognos Analytics版です。
CognosレポートでHTML Itemでレポート遷移動作を実装するJavaScriptコードのサンプル
https://qiita.com/shinyama/items/6c2b1d91ed0efb0a12b2
今回はターゲットレポート(Report01)をHTML形式で、同一ウィンドウ上に呼び出しています。
Report01がターゲットレポート、GETReportが呼び出し元レポートです。
GETReportを実行し、プロンプトを適当に選択後、ボタンをクリックすると、
Report01に遷移して、プロンプトで選択したアイテムでフィルターされています。
実装
GETReportのレポート画面
Cognos AnalyticsでHTML Itemを使用する場合は、画面の様にページアイコンから「レポート」を選択し、「プロパティーの表示」アイコンでプロパティを表示し、「完全な双方向性で実行」を「いいえ」にしておきます。
製品のプロンプトを表示する、値のプロンプトは、プロパティで名前を「ProdList」にしています。
ボタンの実体はブロックで、クラスに「ボタン」と「ハイパーリンク」を指定し、名前に「Button1」と命名しています。
左側のHTMLアイテムの内容です
<script type="text/javascript">
var outputCSV1 ={}
, oCR = cognos.Report.getReport("_THIS_");
outputCSV1.executeReport1 = function(){
// ******************************************************************************
// * 前処理
// ******************************************************************************
// パラメータ取得用配列
var param_list = new Array();
// URL用パラメータ文字列
var param_string = "";
// パラメータ値前文字列
var param_pre_text = "&p_";
// パラメータ値後文字列
var param_tail_text = "=";
// ゲートウェイURI
var target_gateway = "../../../bi";
// レポート出力形式
var target_format = "HTML";
// 実行対象レポート検索パス
var target_report_path = ".public_folders%2FQiita%2FURLDrill%2FReport01";
// ドリルスルー先レポート実行用URL
var target_URL = target_gateway + "?pathRef=" + target_report_path + "&format=" + target_format;
// ******************************************************************************
// * ドリルスルー先のパラメータ名とドリルスルー元で設定されているプロンプト値を配列化
// ******************************************************************************
// レポートページ - 値のプロンプト(オプション・複数選択)
param_list[0] = ["pProd",oCR.prompt.getControlByName("ProdList").getValues()]; // 製品
// ******************************************************************************
// * ドリルスルー先にパラメータ値を引き渡すための文字列を作成してURLを構成
// ******************************************************************************
// 配列化したパラメータ情報に基づいてURL追記用文字列を作成
for (var i = 0; i < param_list.length; i++) {
// プロンプトに値がセットされているかチェック
if(param_list[i][1] != ""){
// 値がセットされている場合はセットされている数の分だけ文字列を生成
for (var j = 0; j < param_list[i][1].length; j++) {
param_string = param_string + param_pre_text + param_list[i][0] + param_tail_text + param_list[i][1][j].use;
}
} else {
// 値がセットされていない場合は空の値で文字列を生成
param_string = param_string + param_pre_text + param_list[i][0] + param_tail_text;
}
}
// ******************************************************************************
// * ドリルスルー先レポートを起動
// ******************************************************************************
// ドリルスルー先レポートのURLにパラメータ追記用文字列を追加して同じウィンドウで表示
top.location.href=target_URL + encodeURI(param_string);
};
</script>
右側のHTMLアイテムの内容です
<button form="button1" onclick="outputCSV1.executeReport1()" style="WIDTH: 130px; HEIGHT: 0px vertical-align:top;text-align:center;border-style: none;background-color:#fff">