如何清理一个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);
}

任何想法?

谢谢!

您需要为您的新数据重新创建DataTable,而不需要这样做this.dataTable.removeRows(0, dataTable.getNumberOfRows());

我有这样的东西

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;
  }

相关内容

  • 没有找到相关文章