手順に従ってカスタム表示形式の作成

    このセクションでは、カスタム表示形式機能を使用してデータの独自のビューを作成する方法を示します。

    以下のタスクを示します:

    • HTML ファイルを作成し、必要なスクリプト参照を追加します。

    • Analytics (ホスト アプリケーション) に送信された表示データを処理し、イベントを通知するために JavaScript コードを追加します。

    • 受信データを読み込み、そのカスタムな表示を作成します。

    HTML ファイルを作成する

    jQuery と Analyticsbridgeutils への参照を含む空の html ファイルを作成します。

    <html>
       <head>
          <script type="text/javascript" src="https://download.infragistics.com/slingshot/custom-visualization/reveal_bridge_utils.js">
          </script>
          <script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
       </head>
       <body>
       </body>
    </html>
    
    • 最初の参照 (rplus_bridge_utils.js) は、Analytics が DOM を操作するのに役立ちます。

    • jquery-1.11.0.min.js は、表示形式をホストに接続します。

    必要に応じて、reveal_bridge_utils.js ファイルをダウンロードしてローカルで参照することもできます。

    データを受信する準備ができていることをホストに通知する

    2 番目のステップとして、次の目的で必要な javascript コードを追加します。

    • ビューがデータを受け取る準備ができたことをホストに通知します。これを行うには、RPBridgeUtils.notifyExtensionIsReady を呼び出します。

    • dataReady イベント ハンドラーを登録します。これは、データを消費する準備ができた後にホストによって呼び出されます。

    このステップの後、コードは次のようになります:

    <html>
       <head>
          <script type="text/javascript" src="reveal_bridge_utils.js"></script>
          <script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
          <script type="text/javascript">
             window.RPBridgeListener = {
             dataReady: function (tabularData) {
          // Render the view
             }
             };
          $(function () {
             RPBridgeUtils.notifyExtensionIsReady();
          });
          </script>
       </head>
       <body>
       </body>
    </html>
    

    カスタム ビューを描画する HTML 要素を作成する

    最後に dataReady 関数に送信したデータを処理して、データを描画するために使用する html タグを動的に生成します。

    この場合、テーブル行を作成する tabularData.data 配列を反復し、HTML DOM の “myTable” div 内に追加します。

    dataReady: function (tabularData) {
       var tableView = $("<table></table>");
          var headerRow = $("<tr></tr>").appendTo(tableView);
          for (var c = 0; c < tabularData.metadata.columns.length; c++) {
             var column = tabularData.metadata.columns[c];
             var headerCell = $("<th></th>").append(column.name + ":" +
             getColumnTypeName(column.type));
          headerRow.append(headerCell);
       }
       for (var i = 0; i < tabularData.data.length; i++) {
          var rowData = tabularData.data[i];
          var rowView = $("<tr></tr>");
          for (var j = 0; j < rowData.length; j++) {
             var cellValue = rowData[j];
             var cellView = $("<td></td>").append(cellValue);
             rowView.append(cellView);
          }
          tableView.append(rowView);
       }
       $("#myTable").append(tableView); }
       };
    

    全サンプル コード

    <html>
       <head>
          <script type="text/javascript" src="reveal_bridge_utils.js"></script>
          <script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
          <script type="text/javascript">
             var helpLink = "https://help.revealbi.io/en/data-visualizations/visualization-types/diy-visualizations.html";
             function getColumnTypeName(type) {
             	switch (type) {
             	case 0:
             		return "String";
             	case 1:
             		return "Number";
             	case 2:
             		return "Date";
             	case 3:
             		return "DateTime";
             	case 4:
             		return "Time"
             	default:
             		return "Unknown";
             	}
             }
             function openHelpLink() {
             	RPBridgeUtils.openUrl(helpLink);
             }
             window.RPBridgeListener = {
             dataReady: function (tabularData) {
             	var tableView = $("<table></table>");
             	var headerRow = $("<tr></tr>").appendTo(tableView);
             	for (var c = 0; c < tabularData.metadata.columns.length; c++) {
             		var column = tabularData.metadata.columns[c];
             		var headerCell = $("<th></th>").append(column.name + ":" + getColumnTypeName(column.type));
             		headerRow.append(headerCell);
             	}
             	for (var i = 0; i < tabularData.data.length; i++) {
             		var rowData = tabularData.data[i];
             		var rowView = $("<tr></tr>");
             		for (var j = 0; j < rowData.length; j++) {
             			var cellValue = rowData[j];
             			var cellView = $("<td></td>").append(cellValue);
             			rowView.append(cellView);
             		}
             		tableView.append(rowView);
             	}
             	$("#myTable").append(tableView);
             }
             };
             $(function () {
             RPBridgeUtils.notifyExtensionIsReady();
             });
          </script>
       </head>
       <body>
          <div>Follow <a href="#" onclick="openHelpLink();">this link</a> for this visualization's implementation.
          </div>
          <br />
          <div id="myTable" style="height:100%"></div>
       </body>
    </html>