package org.ohmage.charts;
import org.achartengine.chart.TimeChart;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import org.ohmage.R;
import org.ohmage.Utilities;
import org.ohmage.loader.PromptFeedbackLoader.FeedbackItem;
import android.content.Context;
import java.util.List;
public class SparkLine extends TimeChart {
/**
* The maximum number of points shown in each {@link SparkLine}
*/
private static final int MAX_DATA_POINTS = 30;
public SparkLine(Context context, List<FeedbackItem> data, int color) {
this(context, data);
getRenderer().getSeriesRendererAt(0).setColor(Utilities.darkenColor(color));
((XYSeriesRenderer)getRenderer().getSeriesRendererAt(0)).setFillBelowLineColor(color);
}
public SparkLine(Context context, List<FeedbackItem> data) {
super(buildDataSet(data), new SparkLineRenderer(context));
}
private static XYMultipleSeriesDataset buildDataSet(List<FeedbackItem> data) {
XYMultipleSeriesDataset dataSet = new XYMultipleSeriesDataset();
XYSeries series = new XYSeries("");
FeedbackItem point;
for(int i=0; i< MAX_DATA_POINTS && i < data.size(); i++) {
point = data.get(i);
series.add(MAX_DATA_POINTS - i - 1, point.value);
}
dataSet.addSeries(series);
return dataSet;
}
public static class SparkLineRenderer extends XYMultipleSeriesRenderer {
public SparkLineRenderer(Context context) {
final XYSeriesRenderer renderer = new XYSeriesRenderer();
renderer.setColor(context.getResources().getColor(R.color.powderkegblue));
renderer.setFillBelowLine(true);
renderer.setFillBelowLineColor(context.getResources().getColor(R.color.highlight));
renderer.setLineWidth(2.0f);
addSeriesRenderer(renderer);
setShowAxes(false);
setShowLabels(false);
setShowLegend(false);
setShowGrid(false);
setShowLegend(false);
setMargins(new int[] {
0, 0, 0, 0
});
setPanEnabled(false, false);
setZoomEnabled(false, false);
setShowAverageLines(true);
}
}
}