package com.evancharlton.mileage.views;
import java.util.ArrayList;
import java.util.Calendar;
import android.os.Bundle;
import com.evancharlton.mileage.calculators.CalculationEngine;
import com.evancharlton.mileage.models.FillUp;
public class DistanceChart extends ChartDisplay {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("Distance Between Fill-Ups");
}
@Override
protected void buildChart() {
m_chart.freeze();
CalculationEngine calc = m_prefs.getCalculator();
m_chart.setYAxisLabel(calc.getDistanceUnits());
final int size = m_fillups.size() - 1;
ArrayList<Float> data = new ArrayList<Float>();
FillUp f;
float total = (float) (m_fillups.get(size).getOdometer() - m_fillups.get(0).getOdometer());
float distance;
float min = Float.MAX_VALUE;
float max = Float.MIN_VALUE;
String min_label = "";
String max_label = "";
for (int i = 1; i <= size; i++) {
f = m_fillups.get(i);
distance = (float) f.calcDistance();
if (distance == -1) {
continue;
}
data.add((float) i);
data.add(distance);
if (distance < min) {
min = distance;
Calendar d = f.getDate();
min_label = m_prefs.format(d.getTime());
}
if (distance > max) {
max = distance;
Calendar d = f.getDate();
max_label = m_prefs.format(d.getTime());
}
}
m_chart.setXAxisLabels(min_label, max_label);
m_chart.setYAxisLabels(m_format.format(min) + calc.getDistanceUnitsAbbr(), m_format.format(max) + calc.getDistanceUnitsAbbr());
float avg = (total / size);
m_chart.setAverageLabel(m_format.format(avg) + calc.getDistanceUnitsAbbr());
m_chart.setDataPoints(data.toArray(new Float[data.size()]));
m_chart.thaw();
}
}