From ad83a0844b1b3a2cc39f3ccb10501234b47d6602 Mon Sep 17 00:00:00 2001
From: Julia Friesel <julia.friesel@gmail.com>
Date: Thu, 16 Aug 2018 10:59:56 +0200
Subject: [PATCH] Flatten props and add keys to array elements

---
 components/chart/chart.js        |  2 +-
 components/chart/day-column.js   | 17 ++++++++++-------
 components/chart/dot-and-line.js |  6 ++++++
 3 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/components/chart/chart.js b/components/chart/chart.js
index 2bb8097b..f60b63cb 100644
--- a/components/chart/chart.js
+++ b/components/chart/chart.js
@@ -18,7 +18,7 @@ export default class CycleChart extends Component {
     this.renderColumn = ({item, index}) => {
       return (
         <DayColumn
-          item={item}
+          {...item}
           index={index}
           navigate={this.props.navigation.navigate}
           {...getInfoForNeighborColumns(index, this.state.columns)}
diff --git a/components/chart/day-column.js b/components/chart/day-column.js
index 8d70e66a..c9fb5fe0 100644
--- a/components/chart/day-column.js
+++ b/components/chart/day-column.js
@@ -15,10 +15,6 @@ const label = styles.column.label
 const getFhmAndLtlInfo = setUpFertilityStatusFunc()
 
 export default class DayColumn extends Component {
-  constructor(props) {
-    super(props)
-  }
-
   passDateToDayView(dateString) {
     const cycleDay = getOrCreateCycleDay(dateString)
     this.props.navigate('cycleDay', { cycleDay })
@@ -36,7 +32,7 @@ export default class DayColumn extends Component {
       temperatureExclude,
       bleeding,
       mucus
-    } = this.props.item
+    } = this.props
     const nfpLineInfo = getFhmAndLtlInfo(dateString, temperature)
 
     const columnElements = []
@@ -50,6 +46,7 @@ export default class DayColumn extends Component {
           size={30}
           color='#900'
           style={{ marginTop: 20 }}
+          key='bleeding'
         />
       )
     }
@@ -62,6 +59,7 @@ export default class DayColumn extends Component {
           left = {config.columnMiddle - styles.mucusIcon.width / 2}
           {...styles.mucusIcon}
           backgroundColor={styles.mucusIconShades[mucus]}
+          key='mucus'
         />
       )
       columnElements.push(mucusIcon)
@@ -74,6 +72,7 @@ export default class DayColumn extends Component {
         width={styles.nfpLine.strokeWidth}
         height={200}
         {...styles.nfpLine}
+        key='fhm'
       />)
       columnElements.push(fhmLine)
     }
@@ -84,6 +83,7 @@ export default class DayColumn extends Component {
         width={'100%'}
         top={nfpLineInfo.drawLtlAt}
         {...styles.nfpLine}
+        key='ltl'
       />)
       columnElements.push(ltlLine)
     }
@@ -93,8 +93,11 @@ export default class DayColumn extends Component {
         <DotAndLine
           y={y}
           exclude={temperatureExclude}
+          rightY={this.props.rightY}
+          rightTemperatureExclude={this.props.rightTemperatureExclude}
           leftY={this.props.leftY}
-          rightY={this.props.righty}
+          leftTemperatureExclude={this.props.leftTemperatureExclude}
+          key='dotandline'
         />
       )
     }
@@ -111,7 +114,7 @@ export default class DayColumn extends Component {
       </Text>
     )
     columnElements.push(
-      <View position='absolute' bottom={0}>
+      <View position='absolute' bottom={0} key='date'>
         {cycleDayLabel}
         {dateLabel}
       </View>
diff --git a/components/chart/dot-and-line.js b/components/chart/dot-and-line.js
index 92e5f63a..d626c948 100644
--- a/components/chart/dot-and-line.js
+++ b/components/chart/dot-and-line.js
@@ -4,6 +4,10 @@ import styles from './styles'
 import config from './config'
 
 export default class DotAndLine extends Component {
+  shouldComponentUpdate(newProps) {
+    return Object.keys(newProps).some(key => newProps[key] != this.props[key])
+  }
+
   render() {
     const y = this.props.y
     const exclude = this.props.exclude
@@ -28,6 +32,7 @@ export default class DotAndLine extends Component {
         top={y - (dotStyle.height / 2)}
         left={config.columnMiddle - (dotStyle.width / 2)}
         style={dotStyle}
+        key='dot'
       />
     )
     return [lineToLeft, lineToRight, dot]
@@ -61,5 +66,6 @@ function makeLine(leftY, rightY, direction, excludeLine) {
       ],
     }}
     {...lineStyle}
+    key ={direction}
   />)
 }
\ No newline at end of file
-- 
GitLab