Introduces ChartLine component

This commit is contained in:
mashazyu
2019-11-18 13:36:59 +01:00
parent 03a235d8cb
commit 71e4c6d11e
2 changed files with 40 additions and 24 deletions
+28
View File
@@ -0,0 +1,28 @@
import React from 'react'
import PropTypes from 'prop-types'
import { Shape } from 'react-native/Libraries/ART/ReactNativeART'
import styles from './styles'
const ChartLine = ({ path, isNfpLine = false }) => {
const strokeStyle =
isNfpLine ? styles.nfpLine.stroke : styles.column.stroke.color
const strokeWidth =
isNfpLine ? styles.nfpLine.strokeWidth : styles.column.stroke.width
return (
<Shape
stroke={strokeStyle}
strokeWidth={strokeWidth}
d={path}
/>
)
}
ChartLine.propTypes = {
path: PropTypes.object,
isNfpLine: PropTypes.bool,
}
export default ChartLine
+12 -24
View File
@@ -4,9 +4,7 @@ import {
} from 'react-native' } from 'react-native'
import { import {
Surface, Surface,
Group as G, Path
Path,
Shape
} from 'react-native/Libraries/ART/ReactNativeART' } from 'react-native/Libraries/ART/ReactNativeART'
import { connect } from 'react-redux' import { connect } from 'react-redux'
@@ -21,6 +19,7 @@ import { getCycleDay } from '../../db'
import DotAndLine from './dot-and-line' import DotAndLine from './dot-and-line'
import SymptomCell from './symptom-cell' import SymptomCell from './symptom-cell'
import ChartLine from './chart-line'
import { normalizeToScale } from '../helpers/chart' import { normalizeToScale } from '../helpers/chart'
@@ -151,13 +150,12 @@ class DayColumn extends Component {
xAxisHeight } = this.props xAxisHeight } = this.props
if(this.fhmAndLtl.drawLtlAt) { if(this.fhmAndLtl.drawLtlAt) {
const ltlLine = (<Shape const ltlLine = (<ChartLine
stroke={styles.nfpLine.stroke} path={new Path()
strokeWidth={styles.nfpLine.strokeWidth}
d={new Path()
.moveTo(0, this.fhmAndLtl.drawLtlAt) .moveTo(0, this.fhmAndLtl.drawLtlAt)
.lineTo(config.columnWidth, this.fhmAndLtl.drawLtlAt) .lineTo(config.columnWidth, this.fhmAndLtl.drawLtlAt)
} }
isNfpLine={true}
key='ltl' key='ltl'
/>) />)
columnElements.push(ltlLine) columnElements.push(ltlLine)
@@ -165,11 +163,9 @@ class DayColumn extends Component {
if (this.fhmAndLtl.drawFhmLine) { if (this.fhmAndLtl.drawFhmLine) {
const x = styles.nfpLine.strokeWidth / 2 const x = styles.nfpLine.strokeWidth / 2
const fhmLine = (<Shape const fhmLine = (<ChartLine
fill="red" path={new Path().moveTo(x, x).lineTo(x, columnHeight)}
stroke={styles.nfpLine.stroke} isNfpLine={true}
strokeWidth={styles.nfpLine.strokeWidth}
d={new Path().moveTo(x, x).lineTo(x, columnHeight)}
key='fhm' key='fhm'
/>) />)
columnElements.push(fhmLine) columnElements.push(fhmLine)
@@ -215,17 +211,6 @@ class DayColumn extends Component {
</Text> </Text>
) )
const column = (
<G>
<Shape
stroke={styles.column.stroke.color}
strokeWidth={styles.column.stroke.width}
d={new Path().lineTo(0, chartHeight)}
/>
{ columnElements }
</G>
)
return ( return (
<TouchableOpacity <TouchableOpacity
onPress={() => this.onDaySelect(dateString)} onPress={() => this.onDaySelect(dateString)}
@@ -248,7 +233,10 @@ class DayColumn extends Component {
)} )}
<Surface width={config.columnWidth} height={columnHeight}> <Surface width={config.columnWidth} height={columnHeight}>
{column} <ChartLine
path={new Path().lineTo(0, chartHeight)}
/>
{ columnElements }
</Surface> </Surface>
<View style={{height: xAxisHeight}}> <View style={{height: xAxisHeight}}>