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

Reply via email to