2011-08-11 17 views
0

私はannotatedtimelinesの問題を扱っています。 ユーザーがいるタブに応じてグラフを描画する必要があるため、タブが変更されたときに現在のグラフを消去して新しいデータを描画します。しかし、それを行う方法?AnnotatedTimeline gwt視覚化チャートのクリーニング方法

今のところ、すべての行を削除していますが、動作していません。 誰かが私を助けることができますか?ここ

はコードです:

... 

//Creating Columns 
dataTable.addColumn(ColumnType.DATETIME, "Time"); 
dataTable.addColumn(ColumnType.NUMBER, "Realtime Consumption"); 
dataTable.addColumn(ColumnType.NUMBER, "Historical Consumption"); 

//Create options 
options.setDisplayAnnotations(false); 
options.setDisplayZoomButtons(false); 
options.setScaleType(AnnotatedTimeLine.ScaleType.FIXED); 
options.setLegendPosition(AnnotatedTimeLine.AnnotatedLegendPosition.SAME_ROW); 
options.setAllowRedraw(true); 
options.setDisplayRangeSelector(false); 
options.setFill(30); 

//to parse the time 
DateTimeFormat dtf = DateTimeFormat.getFormat("hh:mm:ss"); 

//For each item of the list 
for(int i = 0; i < list.size(); i++){ 
    //get date 
    Date date = new Date(list.getTimeAt(i)); 

    //get hh:mm:ss 
    String time = date.getHours()+":"+date.getMinutes()+":"+date.getSeconds(); 

    //add row 
    dataTable.addRow(); 
    dataTable.setValue(dataTable.getNumberOfRows() - 1, 0, dtf.parse(time)); 
    dataTable.setValue(dataTable.getNumberOfRows() - 1, 2, list.getDataAt(i)); 
} 



/** 
* To clean the chart 
*/ 
public void cleanChart(){ 
    //Remove all rows 
    this.dataTable.removeRows(0, dataTable.getNumberOfRows()); 
    //Redraw the chart 
    this.draw(this.dataTable, this.options); 
} 

おかげで、 マウリシオ


それは非常に奇妙ですが、私はそれをやった(私は別のデータテーブルを作成したいので、それは、OKと思われます)、まだ動作していません。古いデータはそこに続いています。

私はAnnotatedTimeLineを拡張するクラスを持ち、かつクリーンな方法は以下のようになります。

/** 
* Method to clean the annotated time line 
*/ 
public void clean() { 
    //Create new table 
    this.dataTable = DataTable.create(); 

    //Create columns 
    this.dataTable.addColumn(ColumnType.DATETIME, "Time"); 
    this.dataTable.addColumn(ColumnType.NUMBER, "Data 1"); 
    this.dataTable.addColumn(ColumnType.NUMBER, "Data 2"); 

    //Redraw the chart with the same options 
    this.draw(this.dataTable, this.options); 
} 

任意のアイデア?

ありがとうございます!

答えて

0

はあなたの新しいデータのためのデータテーブル再作成する必要があると私はあなたが試すことができ、この

public void reloadChart(List<SharedBean> list, String titleX) { 
    viz.draw(getChartData(), getOptions(titleX)); 
} 

private DataTable getChartData() { 
    DataTable data = DataTable.create(); 


    data.addColumn(ColumnType.STRING, "column"); 
    data.addColumn(ColumnType.NUMBER, "value"); 

    data.addRows(list.size()); 

    int row = 0; 
    int i = 0; 
    for(SharedBean bean: list){ 
     ...... 
    } 

    return data; 
    } 
+0

のようなものを持っている this.dataTable.removeRows(0, dataTable.getNumberOfRows());

を行う必要はありません 'ます。public voidクリーン(){ //新しいテーブルを作成します。 DataTable dataTable = DataTable.create(); //列を作成 this.dataTable.addColumn(ColumnType.DATETIME、 "Time"); this.dataTable.addColumn(ColumnType.NUMBER、 "Data 1"); this.dataTable.addColumn(ColumnType.NUMBER、 "Data 2"); //同じオプションを使用してグラフを再描画します this.draw(dataTable、this.options); } ' – Munawar

+0

まだ動作しません。 'public void clean(){ DataTable data = DataTable.create(); data.addColumn(ColumnType.DATETIME、 "Time"); data.addColumn(ColumnType.NUMBER、 "リアルタイム消費"); data.addColumn(ColumnType.NUMBER、 "Historical Consumption"); this.draw(data、this.options); this.dataTable = data; } ' – banduk

+0

他にアイデアはありませんか? – banduk