Attached sample source code for reference.
On Thursday, August 2, 2012 4:52:58 PM UTC+5:30, Vikas Yadav wrote:
>
> Hi All,
> I'm using ATL chart to show live data. Chart window is fix i.e. it show
> maximum 10 minutes data, after 10 minutes we remove old data and add new
> data.
> When we run this chart for long duration (around 10 hours), due to memory
> leaks browser get crashed.
>
> I think removed data is not getting released. Can some help to resolve
> this issue?
>
> Thanks,
> Vikas
>
>
--
You received this message because you are subscribed to the Google Groups
"Google Visualization API" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-visualization-api/-/leJkA3bNBQMJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-visualization-api?hl=en.
package com.sample.tools.client;
import java.util.Date;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Random;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.visualization.client.AbstractDataTable;
import com.google.gwt.visualization.client.DataTable;
import com.google.gwt.visualization.client.VisualizationUtils;
import com.google.gwt.visualization.client.visualizations.AnnotatedTimeLine;
import com.google.gwt.visualization.client.visualizations.AnnotatedTimeLine.AnnotatedLegendPosition;
public class GxtSample implements EntryPoint {
private VerticalPanel chartPanel;
private Timer timer;
private DataTable chartData;
private AnnotatedTimeLine.Options options;
private AnnotatedTimeLine chart;
private int count = 0;
boolean toggle = true;
private Button button;
public void onModuleLoad() {
Runnable onLoadCallback = new Runnable() {
public void run() {
chartPanel = new VerticalPanel();
chartPanel.add(createChart());
button = new Button("Start", new ClickHandler() {
public void onClick(ClickEvent event) {
toggle = !toggle;
if (toggle) {
button.setText("Start");
timer.cancel();
return;
}
button.setText("Stop");
count = 0;
chartData.removeRows(0, chartData.getNumberOfRows());
timer = new Timer() {
@Override
public void run() {
updateChart();
}
};
timer.scheduleRepeating(1000);
}
});
VerticalPanel vPanel = new VerticalPanel();
vPanel.add(button);
vPanel.add(chartPanel);
RootPanel.get().add(vPanel);
}
};
VisualizationUtils.loadVisualizationApi(onLoadCallback,
AnnotatedTimeLine.PACKAGE);
}
private void updateChart() {
chartData.insertRows(count, 1);
chartData.setValue(count, 0, new Date());
chartData.setValue(count, 1, Random.nextInt(10000));
chartData.setValue(count, 2, 0);
chartData.setValue(count, 3, Random.nextInt(10000));
if (count < 30) {
count++;
} else {
chartData.removeRow(0);
}
chart.draw(chartData, options);
}
private AnnotatedTimeLine createChart() {
chartData = DataTable.create();
chartData.addColumn(AbstractDataTable.ColumnType.DATETIME, "Date");
chartData.addColumn(AbstractDataTable.ColumnType.NUMBER, "column1");
chartData.addColumn(AbstractDataTable.ColumnType.NUMBER, "column2");
chartData.addColumn(AbstractDataTable.ColumnType.NUMBER, "column3");
options = AnnotatedTimeLine.Options.create();
options.setDateFormat("MMM d, yyyy HH:mm:ss");
options.setLegendPosition(AnnotatedLegendPosition.NEW_ROW);
options.setDisplayAnnotations(false);
options.setDisplayZoomButtons(false);
options.setDisplayRangeSelector(false);
// options.setAllowRedraw(true);
options.setScaleType(AnnotatedTimeLine.ScaleType.MAXIMIZE);
chart = new AnnotatedTimeLine(chartData, options, "900px", "500px");
return chart;
}
}