2012-05-08 5 views
2

すぐに2.0 SDK用に本当に素晴らしいチャート作成ツールを作ってくれると知っていますが、それまではGoogle Chartsを使いたいと思います。APP SDK 2.0:短期間でチャート?

1.x APIでは、idでhtmlオブジェクトを定義した後、getElementById()を使用してそのアイテムへの参照を取得できます。だから、例えば:

var chart = new google.visualization.BarChart(document.getElementById('chart_div')); 

しかし、新しいSDKで、あなたは次のことを行うだろうかwith--動作するHTMLブロックを持っていないのですか?この質問は、あなたのhtml内の場所にオブジェクトを固定する必要のあるアイテムに関係します。

答えて

1

新しいAPIでは、app base classは、単にExt.container.Containerの拡張であり、それ自体はAbstractComponentの拡張であり、したがってgetEl()メソッドがあります。 (DOMノードに直接コンテンツを追加すると、Extコンテナが提供する自動レイアウト機能が失われることに注意してください)。

は、ここでは、このかかわらずのような何かを説明するために簡単な例です:

Ext.define('My.App', { 
    extend: 'Rally.app.App', 
    items: [ 
     { 
      xtype: 'container', 
      itemId: 'chartContainer' 
     } 
    ], 
    launch: function() { 
     var chartContainer = this.down('#chartContainer').getEl().dom; 
     var chart = new google.visualization.BarChart(chartContainer); 
    } 
}); 
+0

非常にクールです - これに関する一般的なドキュメントはどこにありますか?私はEXTJSものだと推測しますか? – kimon

+0

google.load()を呼び出してから、google.setOnLoadCallback(this._drawChart)を呼び出してから、両方とも "launch"関数で新しい棒グラフを作成する必要があります。しかし_drawChartを呼び出す前にあいまいな例外がスローされます。私はここで何が欠けていますか? – kimon

+0

はい、これはExtです。 Extソースドキュメントはすべて、SDKのドキュメントの横にあります。https://rally1.rallydev.com/apps/2.0p/doc/#!/api ソースコードを提供すると、誰かがあなたのデバッグを手助けできるかもしれません... –

0

はここのコードです。 "Uncaught TypeError:" Ext.define.Rally.loadScripts "から開始された" Ext.define.initComponent "の内部でnullの" parentNode 'プロパティを読み取れません。 )(_drawChartになることはありません:

私はまた、GoogleのAPIを参照するようにすくいスクリプトに次の行を追加しました:で

Ext.define('CustomApp', { 
    extend: 'Rally.app.App', 
    componentCls: 'app', 

    launch: function() { 
     //Write app code here 
     google.load("visualization", "1.0", {packages:["corechart"]}); 
     google.setOnLoadCallback(this._drawChart); 
    }, 

    _drawChart: function() { 
     var chartContainer = this.down('#chartContainer').getEl().dom; 
     var chart = new google.visualization.BarChart(chartContainer); 

     var graphArray = [['Module', 'Payload Code', 'Test Code']]; 

     chartData = google.visualization.arrayToDataTable(graphArray); 

     chart.draw(chartData, {width: 700, height: 500}); 
    } 
}); 
+0

マットは彼の答えでこれを対処したようです。 –

1

<script type="text/javascript" src="https://www.google.com/jsapi"></script> 

そして、ここではApp.jsです最後のアンサー(あなたのコードスニペット)は、チャートをレンダリングするchartContainer要素を作成する、アプリケーションのアイテムの子要素が欠落していただけです。このコードはあなたのためにはうまくいくはずです:

Ext.define('CustomApp', { 
    extend: 'Rally.app.App', 
    componentCls: 'app', 
    items: [ 
     { 
      xtype: 'container', 
      itemId: 'chartContainer' 
     } 
    ], 

    launch: function() { 
     //Write app code here 
     google.load("visualization", "1.0", {packages:["corechart"]}); 
     google.setOnLoadCallback(this._drawChart); 
    }, 

    _drawChart: function() { 
     var chartContainer = this.down('#chartContainer').getEl().dom; 
     var chart = new google.visualization.BarChart(chartContainer); 

     var graphArray = [['Module', 'Payload Code', 'Test Code']]; 

     chartData = google.visualization.arrayToDataTable(graphArray); 

     chart.draw(chartData, {width: 700, height: 500}); 
    } 
}); 
+0

残念ながら、これは同じエラーで失敗します – kimon

0

SDK 2.0チャーティングコンポーネントの最初の草案が現在公開されています。

詳細はhereです。