Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何清理带注释的TimeLine gwt可视化图表_Gwt_Annotatedtimeline - Fatal编程技术网

如何清理带注释的TimeLine gwt可视化图表

如何清理带注释的TimeLine gwt可视化图表,gwt,annotatedtimeline,Gwt,Annotatedtimeline,我正在处理带注释的时间线的问题。 我必须根据用户所属的选项卡绘制一些图表,因此当更改选项卡时,我会清理当前图表并绘制新数据。但如何做到这一点呢 目前,我正在删除所有行,但它不起作用。 有人能帮我吗 代码如下: ... //Creating Columns dataTable.addColumn(ColumnType.DATETIME, "Time"); dataTable.addColumn(ColumnType.NUMBER, "Realtime Consumption"); dataTab

我正在处理带注释的时间线的问题。 我必须根据用户所属的选项卡绘制一些图表,因此当更改选项卡时,我会清理当前图表并绘制新数据。但如何做到这一点呢

目前,我正在删除所有行,但它不起作用。 有人能帮我吗

代码如下:

...

//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);
}
有什么想法吗


谢谢

您需要为新数据重新创建DataTable,而不需要这样做
this.dataTable.removows(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;
  }
public void reloadChart(列表,字符串标题){
即draw(getChartData(),getOptions(titleX));
}
私有数据表getChartData(){
DataTable data=DataTable.create();
data.addColumn(ColumnType.STRING,“column”);
data.addColumn(ColumnType.NUMBER,“值”);
data.addRows(list.size());
int行=0;
int i=0;
for(SharedBean:list){
......
}
返回数据;
}

您可以尝试
public void clean(){//Create new table 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)相同的选项重新绘制图表;}
它还不起作用..”public void clean(){DataTable data=DataTable.create();data.addColumn(ColumnType.DATETIME,“Time”);data.addColumn(ColumnType.NUMBER,“Realtime Consumption”);data.addColumn(ColumnType.NUMBER,“historic Consumption”);this.draw(data,this.options);this.DataTable=data;}'
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;
  }