概要
コンテンツのロードを詳細にコントロールしたり、レポートまたはダッシュボードを適宜呼び出したり、(ユーザー入力に基づいて)表示オプションをダイナミックに設定したりする場合は、独自のスクリプトでAPIを直接呼び出すことができます。
API呼び出しを実行する前に、Javascript APIを含める必要があります:
<script src="http://localhost/JsAPI" type="text/javascript"></script>
version
パラメーターを使用して、特定バージョンのAPIをリクエストすることができます:
<script src="http://localhost/JsAPI?version=2.1" type="text/javascript"></script>
ブラウザーがAPIをロードできない場合、レポートまたはダッシュボードをロードするすべての呼び出しが失敗します。APIが正常にロードされたかどうかを検出するには、変数window.yellowfin
が使用可能かどうかを確認します:
<script src="http://localhost/JsAPI" type="text/javascript"></script> <script type="text/javascript"> if (!window.yellowfin) { alert('Error loading API'); } </script>
サーバー情報
APIをロードすると、一部のサーバー情報を使用できるようになります:
例
<script src="http://localhost/JsAPI" type="text/javascript"></script> <script type="text/javascript"> if (window.yellowfin) { alert('Yellowfin API loaded. Version: ' + yellowfin.apiVersion); } </script>
レポートのロード
レポートは、yellowfin.loadReport
関数を呼び出してロードします:
yellowfin.loadReport(options);
オプションは、Javascriptオブジェクトとして関数に渡されます。ロードしているレポートのレポート識別子、レポートをロードするHTML要素のelementId(またはelementそのもの)、およびレポートの表示方法を変更するその他のオプションなどがあります。使用可能なオプションは以下のとおりです:
例
ユニバーサルIDで指定された要素にレポートをロードし、初期の表示オプションをいくつか設定する例を示します:
var options = {}; options.reportUUID = 'e5e5aaf3-c3b8-4f9b-8280-e21e4d848e63'; options.elementId = 'myReport'; options.showFilters = 'false'; options.showSeries = 'false'; options.display = 'chart'; options.fitTableWidth = 'false'; yellowfin.loadReport(options);
匿名オプションオブジェクトを使用して同様の処理を行う例を示します:
yellowfin.loadReport({ reportUUID: 'e5e5aaf3-c3b8-4f9b-8280-e21e4d848e63', elementId: 'myReport', showFilters: 'false', showSeries: 'false', display: 'chart', fitTableWidth: 'false' });
IDではなく要素を直接渡す例を示します:
yellowfin.loadReport({ reportUUID: 'e5e5aaf3-c3b8-4f9b-8280-e21e4d848e63', element: document.getElementById('myReport') });
レポートフィルターのロード
レポートで使用されるフィルターは、yellowfin.reports.loadReportFilters
関数を使用してロードすることができます。この関数を使用するには、メインAPIと共にレポートサブAPIをページにロードします:
<script src="http://localhost/JsAPI" type="text/javascript"></script> <script src="http://localhost/JsAPI?api=reports" type="text/javascript"></script>
その後loadReportFilters
関数を呼び出します:
yellowfin.reports.loadReportFilters(reportId, callback, arg);
1番目の引数はレポートの固有識別子で、reportUUID
とreportId
のいずれかです。可能な限りreportUUID
を使用することをお勧めします。2番目の引数はコールバック関数で、レポートのフィルターがロードされたときにAPIによって呼び出されます。コールバック関数の1番目の引数は、レポートのフィルターリストです。呼び出す関数の2番目の引数はloadReportFilters
関数に渡される3番目の引数になります(指定した場合)。
呼び出す関数の1番目の引数として返されるフィルターオブジェクトは、レポートで使用されるあらゆるフィルターが格納された配列です。配列の各要素は、そのフィルターに関する情報が格納されたオブジェクトです。これらのフィルターオブジェクトには以下のプロパティがあります:
例
レポートフィルターをロードしてユーザーに表示する例を示します:
function filterCallback(filters) { for (var i = 0; i < filters.length; i++) { alert('Filter ' + filters[i].description + ' (' + filters[i].filterUUID + '), display style: ' + filters[i].display); } } yellowfin.reports.loadReportFilters( 'e5e5aaf3-c3b8-4f9b-8280-e21e4d848e63', filterCallback);
この関数は、使用可能なフィルターをロードしてloadReport
関数に戻し、レポートがページにロードされるときのレポートのフィルター初期値を設定するために使用できます。例:
function filterCallback(filters) { var filterValues = {}; for (var i = 0; i < filters.length; i++) { if (filters[i].description == 'Country') { filterValues[filters[i].filterUUID] = 'Australia'; } else if (filters[i].description == 'Start Date') { filterValues[filters[i].filterUUID] = '2011-01-01'; } else if (filters[i].description == 'Invoiced Amount') { filterValues[filters[i].filterUUID] = 6400; } } // set up other options to load the report var options = {}; options.reportUUID = 'e5e5aaf3-c3b8-4f9b-8280-e21e4d848e63'; options.elementId = 'myReport'; // add the filter values options.filters = filterValues; // load the report yellowfin.loadReport(options); } yellowfin.reports.loadReportFilters( 'e5e5aaf3-c3b8-4f9b-8280-e21e4d848e63', filterCallback);
loadReport
関数に渡されるフィルター値は、上記のようにシンプルな値として指定する必要があります。フィルターがリストスタイルの場合は、配列を使用して複数の値を設定できます:
filterValues[filterUUID] = ['Australia', 'China', 'Italy'];
フィルターが範囲スタイルの場合は、配列を使用して開始値および終了値を設定する必要があります:
filterValues[filterUUID] = [500, 600];
loadReport
関数に渡されるoptions.filters
要素は、filterUUID
またはfilterId
でキー設定された値を含む必要があります。可能な限りfilterUUID
を使用することをお勧めします。
ダッシュボードのロード
ダッシュボードは、yellowfin.loadDash
関数を呼び出してロードします:
yellowfin.loadDash(options);
オプションは、Javascriptオブジェクトとして関数に渡されます。ロードしているダッシュボードの識別子、ダッシュボードをロードするHTML要素のelementId(またはelementそのもの)、およびダッシュボードの表示方法を変更するその他のオプションなどがあります。使用可能なオプションは以下のとおりです:
例
IDで指定された要素にダッシュボードをロードし、初期の表示オプションをいくつか設定する例を示します。
var options = {}; options.dashUUID = '3b0b6c9a-9dfb-41f0-b85a-eb17bb8aeeb9'; options.elementId = 'myDash'; options.showFilters = 'false'; options.showExport = 'false'; yellowfin.loadDash(options);
匿名オプションオブジェクトを使用して同様の処理を行う例を示します:
yellowfin.loadDash({ dashUUID: '3b0b6c9a-9dfb-41f0-b85a-eb17bb8aeeb9', elementId: 'myDash', showFilters: 'false', showExport: 'false' });
IDではなく要素を直接渡す例を示します:
yellowfin.loadDash({ dashUUID: '3b0b6c9a-9dfb-41f0-b85a-eb17bb8aeeb9', element: document.getElementById('myDash') });
ダッシュボードフィルターのロード
ダッシュボードで使用されるフィルターは、yellowfin.dash.loadDashFilters
関数を使用してロードすることができます。この関数を使用するには、メインAPIと共にダッシュボードサブAPIをページにロードします:
<script src="http://localhost/JsAPI" type="text/javascript"></script> <script src="http://localhost/JsAPI?api=dash" type="text/javascript"></script>
その後loadDashFilters
関数を呼び出します:
yellowfin.dash.loadDashFilters(dashUUID, callback, arg);
1番目の引数は、ダッシュボードの固有識別子です。2番目はコールバック関数で、ダッシュボードのフィルターがロードされたときにAPIによって呼び出されます。コールバック関数の1番目の引数は、ダッシュボードのフィルターリストです。呼び出す関数の2番目の引数はloadReportFilters
関数に渡される3番目の引数になります(指定した場合)。
コールバック関数の1番目の引数として返されるフィルターオブジェクトは、ダッシュボードで使用されるあらゆる分析フィルターと、フィルターグループ区切り文字が格納された配列です。配列の各要素は、そのフィルターまたはフィルターグループに関する情報が格納されたオブジェクトです。これらのオブジェクトには以下のプロパティがあります:
例
ダッシュボードフィルターをロードしてユーザーに表示する例を示します:
function filterCallback(filters) { for (var i = 0; i < filters.length; i++) { alert('Filter ' + filters[i].description + ' (' + filters[i].key + '), display style: ' + filters[i].display); } } yellowfin.reports.loadReportFilters(1234, filterCallback);
この関数は、使用可能なフィルターをロードしてloadDash
関数に戻し、ダッシュボードがページにロードされるときのダッシュボードのフィルター初期値を設定するために使用できます:
function filterCallback(filters) { var filterValues = {}; for (var i = 0; i < filters.length; i++) { if (filters[i].description == 'Country') { filterValues[filters[i].key] = 'Australia'; } else if (filters[i].description == 'Start Date') { filterValues[filters[i].key] = '2011-01-01'; } else if (filters[i].description == 'Invoiced Amount') { filterValues[filters[i].key] = 6400; } } // set up other options to load the dashboard var options = {}; options.dashUUID = '3b0b6c9a-9dfb-41f0-b85a-eb17bb8aeeb9'; options.elementId = 'myDash'; // add the filter values options.filters = filterValues; // load the dashboard yellowfin.loadDash(options); } yellowfin.dash.loadDashFilters('3b0b6c9a-9dfb-41f0-b85a-eb17bb8aeeb9', filterCallback);
loadDash
関数に渡されるフィルター値は、上記のようにシンプルな値として指定する必要があります。フィルターがリストスタイルの場合は、配列を使用して複数の値を設定できます:
filterValues[key] = ['Australia', 'China', 'Italy'];
フィルターが範囲スタイルの場合は、配列を使用して開始値および終了値を設定する必要があります:
filterValues[key] = [500, 600];
loadDash
関数に渡されるoptions.filters
要素は、loadDashFilters
関数から返されるkeys
でキー設定された値を含む必要があります。