Skip to content

Commit

Permalink
Merge pull request #16 from cnjon/patch-1
Browse files Browse the repository at this point in the history
update PieChart
  • Loading branch information
hongyin163 committed Apr 15, 2016
2 parents c3ad3b7 + 3b7bcfd commit 4aad108
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 27 deletions.
15 changes: 7 additions & 8 deletions PieChart.android.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,17 @@ PieChart.propTypes = {
backgroundColor:PropTypes.string,
drawGridBackground:PropTypes.bool,
gridBackgroundColor:PropTypes.string,
visibleXRange:PropTypes.array,
borderColor:PropTypes.string,
borderWidth:PropTypes.number,
xAxis:PropTypes.object,
yAxisLeft:PropTypes.object,
yAxisRight:PropTypes.object,
yAxis:PropTypes.object,
fitScreen:PropTypes.bool,
chartPadding:PropTypes.string,
legend:PropTypes.object
legend:PropTypes.object,
holeRadius: PropTypes.number,
drawSliceText: PropTypes.bool,
usePercentValues: PropTypes.bool,
centerText: PropTypes.string,
centerTextRadiusPercent: PropTypes.number
}

var MPPieChart = requireNativeComponent('MPPieChart', PieChart);

export default PieChart;
export default PieChart;
Original file line number Diff line number Diff line change
@@ -1,23 +1,106 @@
package cn.mandata.react_native_mpchart;

import android.graphics.Color;

import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.uimanager.ThemedReactContext;
import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.charts.PieRadarChartBase;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.DataSet;
import com.github.mikephil.charting.utils.ColorTemplate;

import java.util.ArrayList;
import java.util.Random;


/**
* Created by Administrator on 2015/12/24.
*/
public class MPPieChartManager extends MPPieRadarChartManager {
private String CLASS_NAME="MPPieChart";

@Override
public String getName() {
return this.CLASS_NAME;
}

@Override
protected PieChart createViewInstance(ThemedReactContext reactContext) {
PieChart chart= new PieChart(reactContext);
chart.setOnChartGestureListener(new MPChartEventListener());
return chart;
}

@ReactProp(name = "holeRadius", defaultFloat = 50f)
public void setHoleRadius(PieChart chart, float holeRadius){
chart.setHoleRadius(holeRadius);
chart.invalidate();
}

@ReactProp(name="drawSliceText", defaultBoolean = false)
public void setDrawSliceText(PieChart chart, boolean enabled){
chart.setDrawSliceText(enabled);
chart.invalidate();
}

@ReactProp(name="usePercentValues", defaultBoolean = false)
public void setUsePercentValues(PieChart chart, boolean enabled){
chart.setUsePercentValues(enabled);
chart.invalidate();
}

@ReactProp(name="centerText")
public void setCenterText(PieChart chart, String v){
chart.setCenterText(v);
chart.invalidate();
}

@ReactProp(name = "centerTextRadiusPercent", defaultFloat = 1.f)
public void setCenterTextRadiusPercent(PieChart chart, float percent){
chart.setCenterTextRadiusPercent(percent);
chart.invalidate();
}

@ReactProp(name="data")
public void setData(PieChart chart,ReadableMap rm){

ReadableArray xArray=rm.getArray("xValues");
ArrayList<String> xVals=new ArrayList<String>();
for(int m=0;m<xArray.size();m++){
xVals.add(xArray.getString(m));
}
ReadableArray ra=rm.getArray("yValues");
PieData pieData=new PieData(xVals);
for(int i=0;i<ra.size();i++){
ReadableMap map=ra.getMap(i);
ReadableArray data=map.getArray("data");
String label=map.getString("label");
float[] vals=new float[data.size()];
ArrayList<Entry> entries=new ArrayList<Entry>();
for (int j=0;j<data.size();j++){
vals[j]=(float)data.getDouble(j);
Entry be=new Entry((float)data.getDouble(j),j);
entries.add(be);
}
PieDataSet dataSet=new PieDataSet(entries,label);
ReadableMap config= map.getMap("config");
if(config.hasKey("colors")){
ReadableArray colorsArray = config.getArray("colors");
ArrayList<Integer> colors = new ArrayList<>();
for(int c = 0; c < colorsArray.size(); c++){
colors.add(Color.parseColor(colorsArray.getString(c)));
}
dataSet.setColors(colors);
}else
if(config.hasKey("color")) {
int[] colors=new int[]{Color.parseColor(config.getString("color"))};
dataSet.setColors(colors);
}
pieData.addDataSet(dataSet);

}
chart.setBackgroundColor(Color.WHITE);
chart.setData(pieData);
chart.invalidate();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,15 @@

import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.uimanager.ReactProp;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.charts.PieRadarChartBase;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.charts.PieRadarChartBase;
import com.github.mikephil.charting.components.AxisBase;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.LimitLine;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;

import java.util.ArrayList;
import java.util.Random;
Expand All @@ -38,10 +30,10 @@ public String getName() {

@Override
protected PieRadarChartBase createViewInstance(ThemedReactContext reactContext) {
return null;
PieChart chart = new PieChart(reactContext);
return chart;
}


@ReactProp(name="touchEnabled",defaultBoolean = true)
public void setTouchEnabled(PieRadarChartBase chart,boolean enable){
chart.setTouchEnabled(enable);
Expand Down

0 comments on commit 4aad108

Please sign in to comment.