package com.PP.ChartBean;
import java.util.List;
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import android.app.Activity;
import android.graphics.Paint.Align;
import android.widget.LinearLayout;
import com.example.lunartabsandroid.R;
public class ChartBean {
//vars
protected String title;
protected String xAxisTitle;
protected String yAxisTitle;
protected String[] seriesTitles;
protected int[] seriesColors;
protected Activity activity;
//data
protected GraphicalView mChart;
protected XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset();
protected XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
protected XYSeries[] mCurrentSeries;
private XYSeriesRenderer[] mCurrentRenderers;
/**
* Constructor
* @param activity
* @param title
* @param xAxisTitle
* @param yAxisTitle
*/
public ChartBean(Activity activity, String title, String xAxisTitle, String yAxisTitle, String[] seriesTitles, int[] seriesColors) {
this.activity = activity;
this.title = title;
this.xAxisTitle = xAxisTitle;
this.yAxisTitle = yAxisTitle;
this.seriesTitles = seriesTitles;
this.seriesColors = seriesColors;
initChart();
}
protected void initChart() {
mCurrentSeries = new XYSeries[seriesTitles.length];
mCurrentRenderers = new XYSeriesRenderer[seriesTitles.length];
for(int x=0; x < seriesTitles.length;x++) {
mCurrentSeries[x] = new XYSeries(seriesTitles[x]);
mDataset.addSeries(mCurrentSeries[x]);
mCurrentRenderers[x] = new XYSeriesRenderer();
mCurrentRenderers[x].setColor(seriesColors[x]);
mRenderer.addSeriesRenderer(mCurrentRenderers[x]);
}
mRenderer.setZoomEnabled(false, false);
mRenderer.setPanEnabled(false,false);
mRenderer.setXTitle(xAxisTitle);
mRenderer.setYTitle(yAxisTitle);
mRenderer.setAxisTitleTextSize(40);
mRenderer.setChartTitleTextSize(20);
mRenderer.setLabelsTextSize(30);
mRenderer.setYLabelsPadding(30);
mRenderer.setXLabelsAlign(Align.CENTER);
mRenderer.setYLabelsAlign(Align.CENTER);
mRenderer.setChartTitle(title);
mRenderer.setChartTitleTextSize(40);
mRenderer.setFitLegend(true);
mRenderer.setLegendHeight(50);
mRenderer.setLegendTextSize(30);
mRenderer.setMargins(new int[] { 70, 90, 70, 40 });
}
public void addData(int seriesIndex, double x, double y, boolean repaint) {
mCurrentSeries[seriesIndex].add(x,y);
if(mChart!=null && repaint) {
mChart.repaint();
}
}
public void addData(int seriesIndex, List<Double> x, List<Double> y, boolean repaint) {
for(int z=0; z < x.size() && z < y.size(); z++) {
mCurrentSeries[seriesIndex].add(x.get(z),y.get(z));
}
if(mChart!=null && repaint) {
mChart.repaint();
}
}
public void onResume() {
if(activity!=null) {
LinearLayout layout = (LinearLayout) activity.findViewById(R.id.chart);
if (mChart == null) {
mChart = ChartFactory.getLineChartView(activity, mDataset, mRenderer);
layout.addView(mChart);
} else {
mChart.repaint();
}
}
}
/**
* @return the mRenderer
*/
public XYMultipleSeriesRenderer getMRenderer() {
return mRenderer;
}
/**
* @param mRenderer the mRenderer to set
*/
public void setMRenderer(XYMultipleSeriesRenderer mRenderer) {
this.mRenderer = mRenderer;
}
}