2011-08-11 4 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); 
} 

감사합니다,하지만 난 (내가 다른 데이터 테이블을 만들 것 때문이 좋아 보인다)을했다 : 여기

코드입니다 여전히 작동하지 않습니다. 이전 데이터는 계속됩니다.

나는 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

당신은 당신의 새로운 데이터를 DataTable을 다시 만들어야 나는 당신이 시도 할 수이

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());

을 수행 할 필요가 없습니다 '공공 무효 깨끗한() { // 새 테이블 만들기 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, "Realtime Consumption"); data.addColumn (ColumnType.NUMBER, "Historical Consumption"); this.draw (data, this.options); this.dataTable = data; } ' – banduk

+0

아무도 아이디어가 없습니다 ??? – banduk

관련 문제