Skip to content

Commit

Permalink
Huge changes in data model. Made model more generic.
Browse files Browse the repository at this point in the history
  • Loading branch information
PhilJay committed Sep 17, 2014
1 parent 6f5581b commit af20ca2
Show file tree
Hide file tree
Showing 18 changed files with 99 additions and 119 deletions.
43 changes: 16 additions & 27 deletions MPChartLib/src/com/github/mikephil/charting/charts/Chart.java
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,13 @@ public abstract class Chart extends View implements AnimatorUpdateListener {
* object that holds all data relevant for the chart (x-vals, y-vals, ...)
* that are currently displayed
*/
protected ChartData mCurrentData = null;
protected ChartData<? extends DataSet<? extends Entry>> mCurrentData = null;

/**
* object that holds all data that was originally set for the chart, before
* it was modified or any filtering algorithms had been applied
*/
protected ChartData mOriginalData = null;
protected ChartData<? extends DataSet<? extends Entry>> mOriginalData = null;

/** final bitmap that contains all information and is drawn to the screen */
protected Bitmap mDrawBitmap;
Expand Down Expand Up @@ -1289,15 +1289,15 @@ public void setPhaseX(float phase) {
// prepareMatrix();
// calculateOffsets();
// }

public void addDataSet(DataSet d) {
mOriginalData.addDataSet(d);

prepare();
calcMinMax(false);
prepareMatrix();
calculateOffsets();
}
//
// public void addDataSet(DataSet d) {
// mOriginalData.addDataSet(d);
//
// prepare();
// calcMinMax(false);
// prepareMatrix();
// calculateOffsets();
// }

/**
* ################ ################ ################ ################
Expand Down Expand Up @@ -1811,17 +1811,6 @@ public String getXValue(int index) {
return mCurrentData.getXVals().get(index);
}

/**
* Returns the y-value for the given index from the first DataSet. If
* multiple DataSets are used, please use getYValue(int index, int type);
*
* @param index
* @return
*/
public float getYValue(int index) {
return mCurrentData.getDataSetByIndex(0).getYVals().get(index).getVal();
}

/**
* returns the y-value for the given index from the DataSet with the given
* label
Expand All @@ -1831,7 +1820,7 @@ public float getYValue(int index) {
* @return
*/
public float getYValue(int index, String dataSetLabel) {
DataSet set = mCurrentData.getDataSetByLabel(dataSetLabel, true);
DataSet<? extends Entry> set = mCurrentData.getDataSetByLabel(dataSetLabel, true);
return set.getYVals().get(index).getVal();
}

Expand All @@ -1842,8 +1831,8 @@ public float getYValue(int index, String dataSetLabel) {
* @param dataSet
* @return
*/
public float getYValueByDataSetIndex(int xIndex, int dataSet) {
DataSet set = mCurrentData.getDataSetByIndex(dataSet);
public float getYValue(int xIndex, int dataSetIndex) {
DataSet<? extends Entry> set = mCurrentData.getDataSetByIndex(dataSetIndex);
return set.getYValForXIndex(xIndex);
}

Expand All @@ -1854,7 +1843,7 @@ public float getYValueByDataSetIndex(int xIndex, int dataSet) {
* @param index
* @return
*/
public DataSet getDataSetByIndex(int index) {
public DataSet<? extends Entry> getDataSetByIndex(int index) {
return mCurrentData.getDataSetByIndex(index);
}

Expand All @@ -1865,7 +1854,7 @@ public DataSet getDataSetByIndex(int index) {
* @param type
* @return
*/
public DataSet getDataSetByLabel(String dataSetLabel) {
public DataSet<? extends Entry> getDataSetByLabel(String dataSetLabel) {
return mCurrentData.getDataSetByLabel(dataSetLabel, true);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
*
* @author Philipp Jahoda
*/
public class BarData extends BarLineScatterCandleRadarData {
public class BarData extends BarLineScatterCandleRadarData<BarDataSet> {

/** the space that is left between groups of bars */
private float mGroupSpace = 0.8f;
Expand All @@ -28,6 +28,12 @@ public BarData(ArrayList<String> xVals, BarDataSet dataSet) {
public BarData(String[] xVals, BarDataSet dataSet) {
super(xVals, toArrayList(dataSet));
}

private static ArrayList<BarDataSet> toArrayList(BarDataSet dataSet) {
ArrayList<BarDataSet> sets = new ArrayList<BarDataSet>();
sets.add(dataSet);
return sets;
}

/**
* Returns the space that is left out between groups of bars. Always returns
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import java.util.ArrayList;

public class BarDataSet extends BarLineScatterCandleRadarDataSet {
public class BarDataSet extends BarLineScatterCandleRadarDataSet<BarEntry> {

/** space indicator between the bars 0.1f == 10 % */
private float mBarSpace = 0.15f;
Expand Down Expand Up @@ -206,11 +206,4 @@ public void setStackLabels(String[] labels) {
public String[] getStackLabels() {
return mStackLabels;
}

@Override
public void addEntry(Entry e) {
super.addEntry(e);

((ArrayList<BarEntry>) mYVals).add((BarEntry) e);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@
*
* @author Philipp Jahoda
*/
public abstract class BarLineScatterCandleRadarData extends ChartData {
public abstract class BarLineScatterCandleRadarData<T extends BarLineScatterCandleRadarDataSet<? extends Entry>> extends ChartData<T> {

/** array of limit-lines that are set for this data object */
private ArrayList<LimitLine> mLimitLines;

public BarLineScatterCandleRadarData(ArrayList<String> xVals, ArrayList<? extends DataSet> sets) {
public BarLineScatterCandleRadarData(ArrayList<String> xVals, ArrayList<T> sets) {
super(xVals, sets);
}

public BarLineScatterCandleRadarData(String[] xVals, ArrayList<? extends DataSet> sets) {
public BarLineScatterCandleRadarData(String[] xVals, ArrayList<T> sets) {
super(xVals, sets);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
*
* @author Philipp Jahoda
*/
public abstract class BarLineScatterCandleRadarDataSet extends DataSet {
public abstract class BarLineScatterCandleRadarDataSet<T extends Entry> extends DataSet<T> {

/** default highlight color */
protected int mHighLightColor = Color.rgb(255, 187, 115);

public BarLineScatterCandleRadarDataSet(ArrayList<? extends Entry> yVals, String label) {
public BarLineScatterCandleRadarDataSet(ArrayList<T> yVals, String label) {
super(yVals, label);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import java.util.ArrayList;

public class CandleData extends BarLineScatterCandleRadarData {
public class CandleData extends BarLineScatterCandleRadarData<CandleDataSet> {

public CandleData(ArrayList<String> xVals, ArrayList<CandleDataSet> dataSets) {
super(xVals, dataSets);
Expand All @@ -19,4 +19,10 @@ public CandleData(ArrayList<String> xVals, CandleDataSet dataSet) {
public CandleData(String[] xVals, CandleDataSet dataSet) {
super(xVals, toArrayList(dataSet));
}

private static ArrayList<CandleDataSet> toArrayList(CandleDataSet dataSet) {
ArrayList<CandleDataSet> sets = new ArrayList<CandleDataSet>();
sets.add(dataSet);
return sets;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
* @author Philipp Jahoda
*/
public class CandleDataSet extends BarLineScatterCandleRadarDataSet {
public class CandleDataSet extends BarLineScatterCandleRadarDataSet<CandleEntry> {

/** the width of the shadow of the candle */
private float mShadowWidth = 3f;
Expand Down Expand Up @@ -108,11 +108,4 @@ public void setShadowWidth(float width) {
public float getShadowWidth() {
return mShadowWidth;
}

@Override
public void addEntry(Entry e) {
super.addEntry(e);

((ArrayList<CandleEntry>) mYVals).add((CandleEntry) e);
}
}
46 changes: 20 additions & 26 deletions MPChartLib/src/com/github/mikephil/charting/data/ChartData.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
*
* @author Philipp Jahoda
*/
public abstract class ChartData {
public abstract class ChartData<T extends DataSet<? extends Entry>> {

/** maximum y-value in the y-value array */
protected float mYMax = 0.0f;
Expand All @@ -35,7 +35,7 @@ public abstract class ChartData {
protected ArrayList<String> mXVals;

/** array that holds all DataSets the ChartData object represents */
protected ArrayList<? extends DataSet> mDataSets;
protected ArrayList<T> mDataSets;

/**
* constructor for chart data
Expand All @@ -45,7 +45,7 @@ public abstract class ChartData {
* DataSets.
* @param sets the dataset array
*/
public ChartData(ArrayList<String> xVals, ArrayList<? extends DataSet> sets) {
public ChartData(ArrayList<String> xVals, ArrayList<T> sets) {
this.mXVals = xVals;
this.mDataSets = sets;

Expand All @@ -60,7 +60,7 @@ public ChartData(ArrayList<String> xVals, ArrayList<? extends DataSet> sets) {
* DataSets.
* @param sets the dataset array
*/
public ChartData(String[] xVals, ArrayList<? extends DataSet> sets) {
public ChartData(String[] xVals, ArrayList<T> sets) {
ArrayList<String> newXVals = new ArrayList<String>();
for (int i = 0; i < xVals.length; i++) {
newXVals.add(xVals[i]);
Expand Down Expand Up @@ -105,19 +105,13 @@ private void calcXValAverageLength() {
mXValAverageLength = sum / (float) mXVals.size();
}

protected static ArrayList<? extends DataSet> toArrayList(DataSet dataSet) {
ArrayList<DataSet> sets = new ArrayList<DataSet>();
sets.add(dataSet);
return sets;
}

/**
* Checks if the combination of x-values array and DataSet array is legal or
* not.
*
* @param dataSets
*/
private void isLegal(ArrayList<? extends DataSet> dataSets) {
private void isLegal(ArrayList<T> dataSets) {

for (int i = 0; i < dataSets.size(); i++) {
if (dataSets.get(i)
Expand All @@ -140,7 +134,7 @@ public void notifyDataChanged() {
/**
* calc minimum and maximum y value over all datasets
*/
protected void calcMinMax(ArrayList<? extends DataSet> dataSets) {
protected void calcMinMax(ArrayList<T> dataSets) {

mYMin = dataSets.get(0).getYMin();
mYMax = dataSets.get(0).getYMax();
Expand All @@ -157,7 +151,7 @@ protected void calcMinMax(ArrayList<? extends DataSet> dataSets) {
/**
* calculates the sum of all y-values in all datasets
*/
protected void calcYValueSum(ArrayList<? extends DataSet> dataSets) {
protected void calcYValueSum(ArrayList<T> dataSets) {

mYValueSum = 0;

Expand All @@ -172,7 +166,7 @@ protected void calcYValueSum(ArrayList<? extends DataSet> dataSets) {
*
* @return
*/
protected void calcYValueCount(ArrayList<? extends DataSet> dataSets) {
protected void calcYValueCount(ArrayList<T> dataSets) {
int count = 0;

for (int i = 0; i < dataSets.size(); i++) {
Expand Down Expand Up @@ -276,7 +270,7 @@ public ArrayList<String> getXVals() {
*
* @return
*/
public ArrayList<? extends DataSet> getDataSets() {
public ArrayList<T> getDataSets() {
return mDataSets;
}

Expand Down Expand Up @@ -364,7 +358,7 @@ public Entry getEntryForHighlight(Highlight highlight) {
* @param ignorecase
* @return
*/
public DataSet getDataSetByLabel(String label, boolean ignorecase) {
public T getDataSetByLabel(String label, boolean ignorecase) {

int index = getDataSetIndexByLabel(mDataSets, label, ignorecase);

Expand All @@ -380,7 +374,7 @@ public DataSet getDataSetByLabel(String label, boolean ignorecase) {
* @param index
* @return
*/
public DataSet getDataSetByIndex(int index) {
public T getDataSetByIndex(int index) {
return mDataSets.get(index);
}

Expand All @@ -389,10 +383,10 @@ public DataSet getDataSetByIndex(int index) {
*
* @param d
*/
public void addDataSet(DataSet d) {
public void addDataSet(T d) {
if (mDataSets == null)
mDataSets = new ArrayList<DataSet>();
((ArrayList<DataSet>) mDataSets).add(d);
mDataSets = new ArrayList<T>();
mDataSets.add(d);

mYValCount += d.getEntryCount();
mYValueSum += d.getYValueSum();
Expand All @@ -412,26 +406,26 @@ public void addDataSet(DataSet d) {
public void addEntry(Entry e, int dataSetIndex) {

float val = e.getVal();

mYValCount += 1;
mYValueSum += val;

if (mYMax < val)
mYMax = val;
if (mYMin > val)
mYMin = val;


// add the entry to the dataset
mDataSets.get(dataSetIndex).addEntry(e);
}

public void removeEntry(Entry e, int dataSetIndex) {

float val = e.getVal();

mYValCount -= 1;
mYValueSum -= val;


}

/**
Expand Down
Loading

0 comments on commit af20ca2

Please sign in to comment.