diff --git a/.gitignore b/.gitignore
index 1025e17b..18171fc9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
node_modules/
.expo/
+.DS_Store
npm-debug.*
+package-lock.json
diff --git a/data.js b/data.js
index e23f93f2..52f92363 100644
--- a/data.js
+++ b/data.js
@@ -11,6 +11,24 @@ const data = {
71,
100
]
+ },{
+ data: [
+ 20,
+ 10,
+ 4,
+ 56,
+ 87,
+ 90
+ ]
+ },{
+ data: [
+ 30,
+ 90,
+ 67,
+ 54,
+ 10,
+ 2
+ ]
}]
}
diff --git a/src/line-chart.js b/src/line-chart.js
index b9263e26..675dec65 100644
--- a/src/line-chart.js
+++ b/src/line-chart.js
@@ -15,16 +15,24 @@ class LineChart extends AbstractChart {
renderDots = config => {
const { data, width, height, paddingTop, paddingRight } = config
- return data.map((x, i) => {
- return (
- )
+ let output = [];
+ data.map((dataset,index)=>{
+ dataset.data.map((x, i) => {
+ output.push (
+ )
+ })
})
+ return (
+ output
+ )
+
+
}
renderShadow = config => {
@@ -32,16 +40,25 @@ class LineChart extends AbstractChart {
return this.renderBezierShadow(config)
}
const { data, width, height, paddingRight, paddingTop } = config
+ let output = [];
+ config.data.map((dataset,index)=>{
+ output.push (
+
+ (paddingRight + (i * (width - paddingRight) / dataset.data.length)) +
+ ',' +
+ (((height / 4 * 3 * (1 - ((x - Math.min(...dataset.data)) / this.calcScaler(dataset.data)))) + paddingTop))
+ ).join(' ') + ` ${paddingRight + ((width - paddingRight) / dataset.data.length * (dataset.data.length - 1))},${(height / 4 * 3) + paddingTop} ${paddingRight},${(height / 4 * 3) + paddingTop}`}
+ fill="url(#fillShadowGradient)"
+ strokeWidth={0}
+ />)
+ })
return (
-
- (paddingRight + (i * (width - paddingRight) / data.length)) +
- ',' +
- (((height / 4 * 3 * (1 - ((x - Math.min(...data)) / this.calcScaler(data)))) + paddingTop))
- ).join(' ') + ` ${paddingRight + ((width - paddingRight) / data.length * (data.length - 1))},${(height / 4 * 3) + paddingTop} ${paddingRight},${(height / 4 * 3) + paddingTop}`}
- fill="url(#fillShadowGradient)"
- strokeWidth={0}
- />)
+ output
+ )
+
+
}
renderLine = config => {
@@ -49,29 +66,44 @@ class LineChart extends AbstractChart {
return this.renderBezierLine(config)
}
const { width, height, paddingRight, paddingTop, data } = config
- const points = data.map((x, i) =>
- (paddingRight + (i * (width - paddingRight) / data.length)) +
+ let output = [];
+ data.map((dataset,index) => {
+
+ const points = dataset.data.map((x, i) =>
+ (paddingRight + (i * (width - paddingRight) / dataset.data.length)) +
',' +
- (((height / 4 * 3 * (1 - ((x - Math.min(...data)) / this.calcScaler(data))))) + paddingTop))
+ (((height / 4 * 3 * (1 - ((x - Math.min(...dataset.data)) / this.calcScaler(dataset.data))))) + paddingTop))
+
+ output.push (
+
+ )
+
+ })
return (
-
+ output
)
+
+
}
- getBezierLinePoints = config => {
+ getBezierLinePoints = (dataset, config) => {
+
const { width, height, paddingRight, paddingTop, data } = config
- if (data.length === 0) {
+ let output = [];
+ if (dataset.data.length === 0) {
return 'M0,0'
}
- const x = i => Math.floor(paddingRight + i * (width - paddingRight) / data.length)
- const y = i => Math.floor(((height / 4 * 3 * (1 - ((data[i] - Math.min(...data)) / this.calcScaler(data)))) + paddingTop))
- return [`M${x(0)},${y(0)}`].concat(data.slice(0, -1).map((_, i) => {
+ const x = i => Math.floor(paddingRight + i * (width - paddingRight) / dataset.data.length)
+ const y = i => Math.floor(((height / 4 * 3 * (1 - ((dataset.data[i] - Math.min(...dataset.data)) / this.calcScaler(dataset.data)))) + paddingTop))
+
+ return [`M${x(0)},${y(0)}`].concat(dataset.data.slice(0, -1).map((_, i) => {
const x_mid = (x(i) + x(i + 1)) / 2
const y_mid = (y(i) + y(i + 1)) / 2
const cp_x1 = (x_mid + x(i)) / 2
@@ -79,28 +111,49 @@ class LineChart extends AbstractChart {
return `Q ${cp_x1}, ${y(i)}, ${x_mid}, ${y_mid}` +
` Q ${cp_x2}, ${y(i + 1)}, ${x(i + 1)}, ${y(i + 1)}`
})).join(' ')
+
+
}
renderBezierLine = config => {
+ let output = [];
+ config.data.map((dataset,index)=>{
+ let result = this.getBezierLinePoints(dataset,config);
+ output.push (
+
+ )
+ });
return (
-
+ output
)
+
+
}
renderBezierShadow = config => {
const { width, height, paddingRight, paddingTop, data } = config
+ let output = [];
+ data.map((dataset,index)=>{
+ let d = this.getBezierLinePoints(dataset,config) +
+ ` L${paddingRight + ((width - paddingRight) / dataset.data.length * (dataset.data.length - 1))},${(height / 4 * 3) + paddingTop} L${paddingRight},${(height / 4 * 3) + paddingTop} Z`
+ output.push (
+ )
+ })
return (
- )
+ output
+ )
+
}
render() {
@@ -159,17 +212,19 @@ class LineChart extends AbstractChart {
...config,
paddingRight,
paddingTop,
- data: data.datasets[0].data
+ // data: data.datasets[0].data
+ data: data.datasets
+
})}
{withShadow && this.renderShadow({
...config,
- data: data.datasets[0].data,
+ data: data.datasets,
paddingRight,
paddingTop
})}
{withDots && this.renderDots({
...config,
- data: data.datasets[0].data,
+ data: data.datasets,
paddingTop,
paddingRight
})}