2016-12-12 11 views
2

私はApexアプリケーションで100%カスタマイズ可能なグラフを作成したいと考えています。この目的のために、私はAny ScriptをJava Scriptで追加し、カスタムXMLを使いたいと思っています。Javaスクリプトを使用して任意のチャートをApex 5に追加

OracleAnyChart.swfファイルとPreloader.swfファイルを共有コンポーネント - >静的アプリケーション・ファイルに追加しました。

私は、需要のプロセスでマイ

AnyChart.renderingType = anychart.RenderingType.SVG_PREFERRED; 
var chart = new AnyChart('#APP_IMAGES#OracleAnyChart.swf','#APP_IMAGES#Preloader.swf', 'be_chart'); 
chart.width = 600; 
chart.height = 150; 
chart.messages = { 
loadingConfig: "Loading config...", 
waitingForData: "Waiting for data..."} 
console.log('ID = ' || chart.id); 

var jqxhr = apex.server.process('GET_BEXML', 
           { 
            pageItems: "#BE_DATA" 
           }, 
           { 
            dataType : 'text' 
           } 
           ); 
jqxhr.done(function(pData) { 
         console.log(chart.id); 
         chart.setData($v('BE_DATA')); 
         chart.write('container_be'); 
         //chart.refresh(); 
    }   
    ); 

「を実行し、ページロード」の下で、このコードを持っている「GET_BEXMLは、」正しいXMLでアイテムBE_DATAを設定しますが、グラフがレンダリングされません。

Chart not rendering properly

私はダイナミックアクションから

var chart = getChartById('be_chart'); 
chart.setData($v('BE_DATA')); 
chart.refresh(); 

を呼び出そうとしましたが、私がダイナミックアクション範囲内の任意のanychart関数を呼び出す傾けるように見える、それは 『その定義されていないがgetCharById』と言います。

何か不足していますか?

答えて

0

存在しないメソッドを呼び出しています。 あなたはこのようAnyChartオブジェクトを参照する(そして多分あなたは、あなたのオリジナルのチャートオブジェクトを上書きしないように、変数名を変更)する必要があります。

var mychart = AnyChart.getChartById('be_chart'); 

実は...
私はあなたのための理由に応えgetChartById呼び出しに失敗しました。
私はそれが実際の問題ではないことを認識しました。


データをdone()コールバック関数に直接渡してみましたか?
このメソッドは機能します。そしてそれについて本当に素晴らしいことは、あなたが返すことができるデータにNO 32K LIMITがあるかどうかです。


// "Execute when Page Loads" 
    var jqxhr = apex.server.process('GET_BEXML', {}, {dataType:'text'}); 
    jqxhr.done(function(pData) { 
     console.log(pData.substring(1,50)); 
     chart.setData(pData); 
     chart.write('container_be'); 
    }); 

-- Apex Application Process "GET_BEXML" 
declare 
    v_limit constant pls_integer := 32767; 
    v_buff varchar2(32767); 
    v_data clob; 
    v_os pls_integer := 1; 
    v_len pls_integer := 0; 
begin 
    v_data := get_anydata_xml_doc; -- a PL/SQL function returning your AnyData xml 
    v_len := dbms_lob.getlength(v_data); 
    while v_os < v_len 
    loop 
     dbms_lob.read(v_data, v_limit, v_os, v_buff); 
     htp.prn(v_buff); 
     v_os := v_os + v_limit; 
    end loop; 
end; 

はもちろん、あなたにもあなたのApex内でその場でのANYDATAのXML CLOBを作成することができます。

関連する問題