一.概要
FineReport11.0は全く新しいJavaScript API(以下はJSAPI)を提供しています。各APIに詳細な使用説明があります。フロントエンド開発技術を持つ開発者が説明を参照すると、カスタム機能を実現できます。FineReport10.0に比べると、FineReport11.0のJSAPIには次の利点があります。
インターフェースは統一されています。通常の機能の場合、特別な場合を除いて、ダッシュボートのJSAPIは一般帳票のJSAPIと同じです。同時に、モバイル端末のサポートについても説明しています。(モバイル端末のJSAPIはPC側のと異なっています。PC側のJSAPIの一部はモバイル端末で使用できません)
構造と範囲をより明確に最適化し、全体性を向上させました。各JSAPIには詳細な使用説明があり、開発者にとってフレンドリー且つ身に着けやすいです。
FineReport10.0ではよく使われているJavaScriptイベントをAPI化しました、例えば、走馬燈(自動的スクロール)、スクロールバー非表示自動的スクロール)、スクロールバーを非表示に設定するなど。複雑なJSコードのではなく、APIをそのまま使用して、同じ効果を実現できます。
二.互換性説明
FineReport11.0 の新しい API では、contentPane オブジェクト(contentWindowで最もよく使われている属性、cpt帳票内容を保存するコンテナである。例えば書き込みウィジェット等を獲得する時に使用する )を破棄し、contentPane オブジェクトのほとんどのメソッドを _g() に追加しました。詳細な変更内容はJavaScript API一覧で確認してください。
JavaScript API一覧内のAPIはFineReport11.0で使用できます。FineReport10.0の場合、一部のJSAPIはJavaScript API一覧にありません。使用できない可能性があります、ご注意ください。
破棄したcontentPaneオブジェクトは新しいJSAPIに代替されます。FineReport11.0では本来のcontentPaneオブジェクトは使用できますが、不具合が発生する可能性があります。FineReportシステムを11.0にアップグレートした後、contentPaneオブジェクトを使用したJavaScriptイベントを変更することが推奨されます。
jQuery、CSSを通してHTML、DOMといったエレメントを獲得するようなAPI(オフィシャルAPIではない)は実現したい効果、業務シーンや帳票のフロン級トエンドアーキテクチャに関係します。FineReportシステムを11.0にアップグレートした後、もしこの部分が使用できなくなる場合、コードを変更する必要があります。
特に注意すべき所が以下のようになります。
注意1:FineReport11.0のダッシュボードは新/旧バージョンに切り替えることが可能です。旧バージョンのダッシュボードはFineReport10.0のダッシュボードに相当します、ゆえに、旧バージョンのダッシュボードで従来のJSAPIを使用することは可能です。新バージョンのダッシュボードは新しいJSAPIを使用しています。
注意2:FineReport11.0の新計算エンジンを実装しています、新計算エンジンを使用する帳票はFineReport10.0のJASPIをサポートできません。新計算エンジンを使用した帳票はFineReport11.0のJASPIを使用してください。
注意3:前述のように、contentPaneオブジェクトは既に破棄し、_g()に代替されました。(例えばcontentPane.curLGPオブジェクト)_g()はcontentPaneの機能をほとんど含めています。
注意4:よく使用されている書き込みウィジェットを獲得するAPI、パラメータパネルAPIの変化が最も大きい、ドキュメントを確認してください。
三.機能紹介
FneReport11.0のJSAPIは二つの部分に分けられています。共有モジュールと特有モジュール。
共有モジュール:一般帳票、ダッシュボード両方ともに使用可能。作用するエレメントによって、グローバルAPI、パラメータAPI、ウィジェットAPI、データベースAPI、ツールバーAPI、帳票改ページAPI、帳票出力APIに分けられています。
特有モジュール:一般帳票、ダッシュボードのどちらかで使用可能。一般帳票専用APIは異なったプレビューモードで使用可能なAPIに分けられています。ダッシュボード専用APIは異なったコンポーネントで使用可能なAPIに分けられています。
全てのAPI説明はJavaScript API一覧で確認してください。
四.使用説明
APIを使用する時、一般ではグローバルAPIを通して帳票のあるオブジェクトAを獲得して、その他のメゾットを通して帳票にグローバル操作を行います。又は帳票内のその他のオブジェクトBを獲得して同じ方法をもう一度使用して帳票のオブジェクトCを獲得することが多いです。
ステップバイステップでオブジェクトを獲得するメゾットは階層のような性質を有しています、即ちJavaScriptのメゾットの継承性です。
ここで実例を通して説明します。パラメータパネルのプルダウンボックスcomboBox0を獲得し、それを非表示に設定する場合は以下のようなステップがあります。
①グローバルAPI_g() で帳票オブジェクトを獲得します。
②パラメータパネルのプルダウンボックスを獲得するには、まずパラメータパネルを獲得しておく必要があります。ここではgetParameterContainerを使用します。
_g().getParameterContainer
③パラメータパネルを獲得した後、パラメータパネルにあるプルダウンボックスcomboBox0を獲得します。ここではgetWidgetByNameを使用します。
_g().getParameterContainer().getWidgetByName("comboBox0")
④プルダウンボックスcomboBox0を獲得した後、それを非表示に設定します。ここではsetVisibleを使用します。
_g().getParameterContainer().getWidgetByName("comboBox0").setVisible(false);
1.テンプレート内での使用
テンプレート内でJavaScriptを使用するには、下図のようにイベンドを新規作成する必要があります。
2.Webページ内の使用
ユーザーはカスタムWebページでFineReportのJSAPIを使用することができます。
①帳票がWebページの iframe に埋め込んだ時、まずはdocument.getElementById('帳票を含むiframeのid')を通して、iframeオブジェクトを獲得し、それからcontentWindowを獲得して、最後は関係のJASPIを使用します。
document.getElementById('reportFrame').contentWindow._g().writeReport();
//iframeのIDがreportFrameであり帳票の書き込みAPIを呼び出す。
//document.getElementById('reportFrame')は帳票iframeオブジェクトを獲得、そして_g()で帳票オブジェクトを獲得、最後は書き込みAPIを呼び出す。
②FRオブジェクトのメゾットを使用したい場合、まずはFineReportのfineReport.jsファイルを導入する必要があります。例えばダイアログを表示させたい場合は以下のようになります。
<script type="text/javascript" src="/webroot/decision/view/report?op=emb&resource=finereport.js"></script>
<script>
function button_onclick(){
FR.showDialog("Test", 600, 400, "Hello World")
}
</script>