From cc9495f7edd291135656796b66fbf24605dbee9f Mon Sep 17 00:00:00 2001 From: Peixin Liu Date: Tue, 28 Mar 2017 15:28:32 +0800 Subject: [PATCH 1/4] add option to show or hide pie label --- src/Pie.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/Pie.js b/src/Pie.js index a283b19..a221dab 100755 --- a/src/Pie.js +++ b/src/Pie.js @@ -41,7 +41,8 @@ export default class PieChart extends Component { fontFamily: 'Arial', fontSize: 14, bold: true, - color: '#ECF0F1' + color: '#ECF0F1', + show: true, } }, } @@ -105,14 +106,14 @@ export default class PieChart extends Component { - {item.name} + y={y - R + ((R-r)/2)}>{item.name} : null} ) } @@ -124,14 +125,14 @@ export default class PieChart extends Component { - { c.item.name } + y={c.sector.centroid[1]}>{ c.item.name } : null} ) From b603708af19c245a4c7978f59df3bd9c63c3cfe4 Mon Sep 17 00:00:00 2001 From: Peixin Liu Date: Tue, 28 Mar 2017 15:47:40 +0800 Subject: [PATCH 2/4] filter data, show no date message when data is boolean false, it makes more sense --- src/Pie.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Pie.js b/src/Pie.js index a221dab..c55e9ac 100755 --- a/src/Pie.js +++ b/src/Pie.js @@ -68,7 +68,11 @@ export default class PieChart extends Component { render() { const noDataMsg = this.props.noDataMessage || 'No data available' - if (this.props.data === undefined) return ({noDataMsg}) + let noDataView = ({noDataMsg}) + if(!Array.isArray(this.props.data)) return noDataView + let accessor = this.props.accessor || identity(this.props.accessorKey) + let data = this.props.data.filter((item) => accessor(item) > 0) + if(!data.length) return noDataView let options = new Options(this.props) @@ -89,16 +93,16 @@ export default class PieChart extends Component { center: this.props.center || (this.props.options && this.props.options.center) || [0,0] , r, R, - data: this.props.data, - accessor: this.props.accessor || identity(this.props.accessorKey) + data, + accessor }) let textStyle = fontAdapt(options.label) let slices - if (this.props.data.length === 1) { - let item = this.props.data[0] + if (data.length === 1) { + let item = data[0] let outerFill = (item.color && Colors.string(item.color)) || this.color(0) let innerFill = this.props.monoItemInnerFillColor || '#fff' let stroke = typeof fill === 'string' ? outerFill : Colors.darkenColor(outerFill) From 747bc79bc9c7c7755023f3684959e785f44314cd Mon Sep 17 00:00:00 2001 From: Peixin Liu Date: Tue, 28 Mar 2017 15:28:32 +0800 Subject: [PATCH 3/4] add option to show or hide pie label --- src/Pie.js | 69 +++++++++++++++++++++++++++++------------------------- 1 file changed, 37 insertions(+), 32 deletions(-) diff --git a/src/Pie.js b/src/Pie.js index 2b8df07..cd8e2d1 100755 --- a/src/Pie.js +++ b/src/Pie.js @@ -41,7 +41,8 @@ export default class PieChart extends Component { fontFamily: 'Arial', fontSize: 14, bold: true, - color: '#ECF0F1' + color: '#ECF0F1', + show: true, } }, } @@ -67,7 +68,11 @@ export default class PieChart extends Component { render() { const noDataMsg = this.props.noDataMessage || 'No data available' - if (this.props.data === undefined) return ({noDataMsg}) + let noDataView = ({noDataMsg}) + if(!Array.isArray(this.props.data)) return noDataView + let accessor = this.props.accessor || identity(this.props.accessorKey) + let data = this.props.data.filter((item) => accessor(item) > 0) + if(!data.length) return noDataView let options = new Options(this.props) @@ -90,8 +95,8 @@ export default class PieChart extends Component { let slices - if (this.props.data.length === 1) { - let item = this.props.data[0] + if (data.length === 1) { + let item = data[0] let outerFill = (item.color && Colors.string(item.color)) || this.color(0) let innerFill = this.props.monoItemInnerFillColor || '#fff' let stroke = typeof fill === 'string' ? outerFill : Colors.darkenColor(outerFill) @@ -99,14 +104,14 @@ export default class PieChart extends Component { - {item.name} + {textStyle.show ? {item.name} : null} ) } else { @@ -114,36 +119,36 @@ export default class PieChart extends Component { center: [centerX, centerY], r, R, - data: this.props.data, - accessor: this.props.accessor || identity(this.props.accessorKey) + data, + accessor, }) slices = chart.curves.map( (c, i) => { let fill = (c.item.color && Colors.string(c.item.color)) || this.color(i) let stroke = typeof fill === 'string' ? fill : Colors.darkenColor(fill) return ( - - - - { c.item.name } - - - ) + + + + {textStyle.show ? { c.item.name } : null} + + + ) }) } let returnValue = - - { slices } - - + + { slices } + + return returnValue } From 0a46cab5fa4e9ac2149381b4ce4d84ade7ee877f Mon Sep 17 00:00:00 2001 From: Peixin Liu Date: Mon, 21 Aug 2017 17:46:03 +0800 Subject: [PATCH 4/4] upgrade react-native-svg version to 5.4.1 to supprot RN 0.47 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bf8c37a..f283800 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "babel-polyfill": "^6.23.0", "lodash": "^4.12.0", "paths-js": "^0.4.5", - "react-native-svg": "~5.3.0" + "react-native-svg": "~5.4.1" }, "devDependencies": { "babel-jest": "*",